项目简介
实时语音交互数字人,支持端到端语音方案(GLM-4-Voice - THG)和级联方案(ASR-LLM-TTS-THG)。可自定义形象与音色,支持音色克隆,首包延迟低至3s。
技术选型
-
ASR (Automatic Speech Recognition): FunASR
-
LLM (Large Language Model): Qwen
-
End-to-end MLLM (Multimodal Large Language Model): GLM-4-Voice
-
TTS (Text to speech): GPT-SoVITS, CosyVoice, edge-tts
-
THG (Talking Head Generation): MuseTalk
本地部署
0. 显存需求
对于不需要使用端到端 MLLM 的开发者,可以选择仅包含级联方案的
cascade_only
分支。
$ git checkout cascade_only
1. 环境配置
-
ubuntu 22.04
-
python 3.10
-
CUDA 12.2
-
torch 2.3.0
$ git lfs install
$ git clone https://www.modelscope.cn/studios/AI-ModelScope/video_chat.git
$ conda create -n metahuman python=3.10
$ conda activate metahuman
$ cd video_chat
$ pip install -r requirement.txt
2. 权重下载
2.1 创空间下载(推荐)
创空间仓库已设置
git lfs
追踪权重文件,如果是通过
git clone https://www.modelscope.cn/studios/AI-ModelScope/video_chat.git
克隆,则无需额外配置
2.2 手动下载
2.2.1 MuseTalk
参考这个链接
目录如下:
./weights/
├── dwpose
│ └── dw-ll_ucoco_384.pth
├── face-parse-bisent
│ ├── 79999_iter.pth
│ └── resnet18-5c106cde.pth
├── musetalk
│ ├── musetalk.json
│ └── pytorch_model.bin
├── sd-vae-ft-mse
│ ├── config.json
│ └── diffusion_pytorch_model.bin
└── whisper
└── tiny.pt
2.2.2 GPT-SoVITS
参考这个链接
2.2.3 GLM-4-Voice
在
app.py
中添加如下代码即可完成下载。
from modelscope import snapshot_download
snapshot_download('ZhipuAI/glm-4-voice-tokenizer',cache_dir='./weights')
snapshot_download('ZhipuAI/glm-4-voice-decoder',cache_dir='./weights')
snapshot_download('ZhipuAI/glm-4-voice-9b',cache_dir='./weights')
3. 其他配置
LLM模块和TTS模块提供了多种方式,可自行选择推理方式
3.1 使用API-KEY(默认)
对于LLM模块和TTS模块,如果本地机器性能有限,可使用阿里云大模型服务平台百炼提供的Qwen API和CosyVoice API,请在app.py(line 14)中配置API-KEY。
参考这个链接完成API-KEY的获取与配置。
os.environ["DASHSCOPE_API_KEY"] = "INPUT YOUR API-KEY HERE"
3.2 不使用API-KEY
如果不使用API-KEY,请参考以下说明修改相关代码。
3.2.1 LLM模块
src/llm.py
中提供了
Qwen
和
Qwen_API
两个类分别处理本地推理和调用API。若不使用API-KEY,有以下两种方式进行本地推理:
-
使用
Qwen
完成本地推理。
-
Qwen_API
默认调用API完成推理,若不使用API-KEY,还可以使用
vLLM
加速LLM推理。可参考如下方式安装
vLLM
:
$ git clone https://github.com/vllm-project/vllm.git
$ cd vllm
$ python use_existing_torch.py
$ pip install -r requirements-build.txt
$ pip install -e . --no-build-isolation
-
安装完成后,参考这个链接进行部署,使用
Qwen_API(api_key="EMPTY",base_url="http://localhost:8000/v1")
初始化实例调用本地推理服务。
3.2.2 TTS模块
src/tts.py
中提供了
GPT_SoVits_TTS
和
CosyVoice_API
分别处理本地推理和调用API。若不使用API-KEY,可直接删除
CosyVoice_API
相关的内容,使用
Edge_TTS
调用Edge浏览器的免费TTS服务进行推理。
4. 启动服务
5. 使用自定义数字人(可选)
5.1 自定义数字人形象
-
在
/data/video/
中添加录制好的数字人形象视频
-
修改
/src/thg.py
中
Muse_Talk
类的
avatar_list
,加入
(形象名, bbox_shfit)
,关于bbox_shift的说明参考这个链接
-
在
/app.py
中Gradio的
avatar_name
中加入数字人形象名后重新启动服务,等待完成初始化即可。