MuseTalk 是由腾讯音乐娱乐的 Lyra 实验室开发的一款强大的开源项目,旨在为虚拟人物提供逼真的口型动画。
该项目不仅支持中文、英文和日文等多语言输入,还适用于多种应用场景,无论是短视频制作、长剧集还是教育与培训材料,都能确保高质量的唇形同步效果。
MuseTalk 的核心是其创新性的 latent space inpainting 方法,它基于 ft-mse-vae 空间进行训练。
该项目利用冻结的 VAE 对图像进行编码,同时使用冻结的 whisper-tiny 模型对音频进行编码,然后通过 UNet 架构中的 cross-attention 机制将音频嵌入与图像嵌入相融合。
与 Stable Diffusion 类似但又不同,MuseTalk 通过单步 latent space inpainting 实现快速且精确的唇部动作调整。
这一技术特别适用于创造自然且逼真的数字人表现,使得数字角色的唇形能够精准地与音频内容匹配,从而大幅提升观众的视听体验。
其中github项目地址:https://github.com/THU-MIG/yolov10
一、环境安装
1、python环境:
为了兼容库安装,建议安装python版本在3.10以上。
2、pip包安装:
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install --no-cache-dir -U openmim
mim install mmengine
mim install "mmcv>=2.0.1"
mim install "mmdet>=3.1.0"
mim install "mmpose>=1.1.0"
3、ffmpeg安装配置
Ubuntu系统的安装命令:
apt install ffmpeg
如果下载ffmpeg源码编译安装,需要配置ffmpeg路径,比如:
export FFMPEG_PATH=/path/to/ffmpeg
这里的/path/to/ffmpeg需要替换为你系统中ffmpeg的实际安装路径。
4、模型权重下载
(a)通过https://huggingface.co/TMElyralab/MuseTalk下载musetalk的模型权重。
(b)通过https://huggingface.co/stabilityai/sd-vae-ft-mse下载sd-vae-ft-mse模型权重。
(c)通过https://openaipublic.azureedge.net/main/whisper/models/65147644a518d12f04e32d6f3b26facc3f8dd46e5390956a9424a650c0ce22b9/tiny.pt下载whisper模型权重。
(d)通过https://huggingface.co/yzd-v/DWPose/tree/main下载dwpose模型权重。
(e)通过https://github.com/zllrunning/face-parsing.PyTorch下载face=parse-bisent模型的权重。
二、功能测试
1、普通推理测试:
我们可以通过下面的命令行方式进行测试:
python -m scripts.inference --inference_config configs/inference/test.yaml
上面的test.yaml的配置如下:
task_0:
video_path: "data/video/sun.mp4"
audio_path: "data/audio/sun.wav"
bbox_shift: -7
其中,task_0表示任务0,还可以自己添加多个任务,video_path表示输入视频路径,audio_path表示输入音频路径。
bbox_shift 是一个重要的参数,用于调整面部区域的中心点,特别是用于控制生成视频中嘴巴的开合程度。
正的bbox_shift会使嘴巴向下半部分移动,这会增加嘴巴的张开度,使得生成的视频中角色看起来像是在更清晰地发音。
负的bbox_shift会使嘴巴向上半部分移动,这会减少嘴巴的张开度,使得角色看起来像是在轻微地发音或者闭嘴。
例如,在运行在处理一个测试案例时,运行默认配置后发现可调整的值范围是是 [-9, 9]。
如果需要减少嘴巴的开合程度,可以将bbox_shift设置为-7,作为参数传进去,然后运行以下命令:
python -m scripts.inference --inference_config configs/inference/test.yaml --bbox_shift -7
2、实时推理测试:
为了提高模型的推理速度,满足实时性的要求,官方还推出了实时推理的方式。
实时推理命令如下:
python -m scripts.realtime_inference --inference_config configs/inference/realtime.yaml --batch_size 4
上面的test.yaml的配置如下:
avator_1:
preparation: True
bbox_shift: -7
video_path: "data/video/sun.mp4"
audio_clips:
audio_0: "data/audio/sun.wav"
其中,avator_1表示角色1,可以自己添加多个角色,preparation设置为True表示准备新的角色,bbox_shift用于调整面部区域的中心点,video_path表示输入视频路径,audio_0表示第一个输入的音频路径,还可以自己添加多个音频路径。
3、测试结果
通过微调MuseTalk模型后,模型的测试结果如下:
musetalk模型测试结果1
musetalk模型测试结果2
musetalk模型测试结果3
喜欢就点赞转发,后期我还会持续在这里分享最新研发技术动向。
另外,想看更多的MuseTalk相关技术经验,欢迎后台留言讨论。