Write the Code. Change the World.

分类目录
4月 30

官方地址:https://github.com/TMElyralab/MuseV

在这里,可以看到生成的样例。这里总结下部署和安装,几乎和官网一样。

环境准备

开始

  1. 先创建一个项目目录, museVtask。将 github 代码拉下来。
    git clone --recursive https://github.com/TMElyralab/MuseV.git 这里一定要加上recursive参数,这样会将 diffusers 等子模块一起下载下来。

  2. 下载模型文件。这里不使用 git 下载,毕竟模型文件 32.3 G。使用 huggingface cli,还得要梯子。huggingface-cli download --resume-download TMElyralab/MuseV --local-dir ./MuseV/checkpoints

  3. 在下载的同时,可以将 docker-compose 配置文件搞起来。先创建 Dockerfile 文件,代码如下:

FROM anchorxia/musev:latest  

# 设置工作目录  
WORKDIR /workspace/MuseV  

# 将宿主机的 MuseV 目录复制到容器的对应目录  
COPY ./MuseV /workspace/MuseV  

# 设置 PYTHONPATH 环境变量  
ENV PYTHONPATH=/workspace/MuseV:${PYTHONPATH}  
ENV PYTHONPATH=/workspace/MuseV/MMCM:${PYTHONPATH}  
ENV PYTHONPATH=/workspace/MuseV/diffusers/src:${PYTHONPATH}  
ENV PYTHONPATH=/workspace/MuseV/controlnet_aux/src:${PYTHONPATH}  

# 这里可以设置默认的命令,但如果你想要 bash 交互式 shell,则不需要  
# CMD ["python", "your_script.py"]  

再创建 docker-compose.yaml 文件,代码如下:

services:
  musev:
    build:
      context: .
      dockerfile: Dockerfile
    image: musev
    container_name: musev-latest
    runtime: nvidia
    restart: always
    volumes:
      - ./MuseV:/workspace/MuseV
    stdin_open: true
    tty: true

如果报错 docker: Error response from daemon: unknown or invalid runtime name: nvidia,请参考 https://blog.vini123.com/1206

继续阅读

4月 26

随着 AI 聊天的兴起,流式展现数据的需求变得更常见。前端 EventSource 的使用频率也会更高。接openai,文心一言,通义千问这些接口,并以流式的方式在页面展现出来。就得自己的接口服务端也以流式的方式返回给自己的前端,自己的服务器端接它们,让它们也要以流的方式返回。这个时候服务端不仅要做接口的对接和数据的转发,还得做数据的解析和存储。

这里前端以 vue3,后端使用 laravel 的方式,来简单介绍下怎么搞。

前端 API 选择

https://developer.mozilla.org/zh-CN/docs/Web/API/EventSource

前端选择 fetch,并没有选择 EventSource。

因为 fetch 本身就可以支持 EventSource 的方式接受数据,使用方式也会像使用 axios 类似。而单纯 EventSource 的使用会收到请求方式,不能自定义Header头,连接数目等方式的限制。fetch 就像在调用接口,EventSource 就像是 websocket。

EventSource 示例:

const sse = new EventSource("/api/v1/sse");

sse.addEventListener("notice", (e) => {
  console.log(e.data);
});

sse.addEventListener("update", (e) => {
  console.log(e.data);
});

sse.addEventListener("message", (e) => {
  console.log(e.data);
});

继续阅读

4月 07

文本生视频

https://www.bilibili.com/video/BV1xt421V7Ed/?spm_id_from=333.788&vd_source=6293029151b66bb79adfdb8c02e18f4d

https://github.com/harry0703/MoneyPrinterTurbo

部署比较简单,操作使用也很简单(网页操作)。 需要申请 pexels api keys通义千问 api keys,当然也可以使用 openai 等。

效果不是很好,就是将 pexels 上的视频组合成一个视频。

训练一分钟内的的语音成为目标语言,文字转语音

https://www.bilibili.com/video/BV12g4y1m7Uw/?vd_source=6993ce0cd88c9947ac7681b6864a99d0
https://github.com/RVC-Boss/GPT-SoVITS?tab=readme-ov-file

这个还不错,更有用(达成目标)。

12月 14

在自己的服务器环境使用语音转视频,需要配置 ice server。而这个玩意先得创建通信资源。创建通信资源,在后台就可以实现。ice server 可以使用编程语言去获取。

相关文档

https://learn.microsoft.com/en-us/azure/ai-services/speech-service/text-to-speech-avatar/what-is-text-to-speech-avatar

https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/js/browser/avatar/README.md

https://learn.microsoft.com/zh-cn/azure/communication-services/quickstarts/relay-token?pivots=programming-language-python#getting-the-relay-configuration

代码

这里以 python 来获取。只需要准备好连接字符串(endpoint)就好,这个就是需要去后台创建通信资源。

# issue-relay-tokens.py
from azure.communication.networktraversal import CommunicationRelayClient
from azure.identity import DefaultAzureCredential
from azure.communication.identity import CommunicationIdentityClient

# You can find your endpoint and access token from your resource in the Azure Portal
connection_str = "endpoint=https://xxxx.communication.azure.com/;accesskey=xxxx"
endpoint = "https://xxxx.communication.azure.com/"

# To use Azure Active Directory Authentication (DefaultAzureCredential) make sure to have
# AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET as env variables.
# We also need Identity client to get a User Identifier
# identity_client = CommunicationIdentityClient(endpoint, DefaultAzureCredential())
# relay_client = CommunicationRelayClient(endpoint, DefaultAzureCredential())

#You can also authenticate using your connection string
identity_client = CommunicationIdentityClient.from_connection_string(connection_str)
relay_client = CommunicationRelayClient.from_connection_string(connection_str)

identity_client.create_user()

relay_configuration = relay_client.get_relay_configuration()

for iceServer in relay_configuration.ice_servers:
    assert iceServer.username is not None
    print('Username: ' + iceServer.username)

    assert iceServer.credential is not None
    print('Credential: ' + iceServer.credential)

    assert iceServer.urls is not None
    for url in iceServer.urls:
        print('Url:' + url)

执行 python .\issue-relay-tokens.py,如果配置都正确,就会得到 ice 相关信息。

Username: xxx1
Credential: cre1
Url:stun:relay.communication.microsoft.com:3478
Url:turn:relay.communication.microsoft.com:3478
Username: xxx2
Credential: cre2
Url:stun:20.202.255.225:3478
Url:turn:20.202.255.225:3478

转换截图

12月 13

通过文字输入,输出视频+语音虚拟形象输出。可以尝试尝试。

使用微软 Speech Studio

样例
https://speech.microsoft.com/portal/talkingavatar

训练声音
https://speech.microsoft.com/portal/customvoice/overview

精简版训练
https://learn.microsoft.com/zh-cn/azure/ai-services/speech-service/custom-neural-voice-lite

申请授权
https://speech.microsoft.com/portal/customvoice/accessrequirement