ONNX 模型库
返回模型

说明文档

MuseTalk

MuseTalk:基于潜在空间修复的实时高质量唇形同步 </br> Yue Zhang <sup>*</sup>, Minhao Liu<sup>*</sup>, Zhaokang Chen, Bin Wu<sup>†</sup>, Yingjie He, Chao Zhan, Wenjiang Zhou (<sup>*</sup>同等贡献,<sup>†</sup>通讯作者,benbinwu@tencent.com)

github huggingface 项目页面(即将推出) 技术报告(即将推出)

我们推出 MuseTalk,一个实时高质量的唇形同步模型(在 NVIDIA Tesla V100 上可达 30fps+)。MuseTalk 可以与输入视频配合使用,例如由 MuseV 生成的视频,作为完整的虚拟人解决方案。

概述

MuseTalk 是一个在 ft-mse-vae 潜在空间中训练的实时高质量音频驱动唇形同步模型,它:

  1. 根据输入音频修改未见过的面部,面部区域大小为 256 x 256。
  2. 支持多种语言的音频,如中文、英语和日语。
  3. 支持在 NVIDIA Tesla V100 上以 30fps+ 进行实时推理。
  4. 支持修改面部区域中心点,这显著影响生成结果。
  5. 提供在 HDTF 数据集上训练的检查点。
  6. 训练代码(即将推出)。

新闻

  • [2024年4月2日] 发布 MuseTalk 项目和预训练模型。

模型

模型结构 MuseTalk 在潜在空间中进行训练,图像由冻结的 VAE 编码。音频由冻结的 whisper-tiny 模型编码。生成网络的架构借鉴自 stable-diffusion-v1-4 的 UNet,其中音频嵌入通过交叉注意力机制与图像嵌入融合。

案例

MuseV + MuseTalk 让照片活起来!

<table class="center"> <tr style="font-weight: bolder;text-align:center;"> <td width="33%">图片</td> <td width="33%">MuseV</td> <td width="33%">+MuseTalk</td> </tr> <tr> <td> <img src=assets/demo/musk/musk.png width="95%"> </td> <td > <video src=assets/demo/yongen/yongen_musev.mp4 controls preload></video> </td> <td > <video src=assets/demo/yongen/yongen_musetalk.mp4 controls preload></video> </td> </tr> <tr> <td> <img src=assets/demo/yongen/yongen.jpeg width="95%"> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/57ef9dee-a9fd-4dc8-839b-3fbbbf0ff3f4 controls preload></video> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/94d8dcba-1bcd-4b54-9d1d-8b6fc53228f0 controls preload></video> </td> </tr> <tr> <td> <img src=assets/demo/monalisa/monalisa.png width="95%"> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/1568f604-a34f-4526-a13a-7d282aa2e773 controls preload></video> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/a40784fc-a885-4c1f-9b7e-8f87b7caf4e0 controls preload></video> </td> </tr> <tr> <td> <img src=assets/demo/sun1/sun.png width="95%"> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/37a3a666-7b90-4244-8d3a-058cb0e44107 controls preload></video> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/172f4ff1-d432-45bd-a5a7-a07dec33a26b controls preload></video> </td> </tr> <tr> <td> <img src=assets/demo/sun2/sun.png width="95%"> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/37a3a666-7b90-4244-8d3a-058cb0e44107 controls preload></video> </td> <td > <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/85a6873d-a028-4cce-af2b-6c59a1f2971d controls preload></video> </td> </tr> </table >

  • 最后两行的人物 Xinying Sun 是一位超模 KOL。你可以在抖音上关注她。

视频配音

<table class="center"> <tr style="font-weight: bolder;text-align:center;"> <td width="70%">MuseTalk</td> <td width="30%">原始视频</td> </tr> <tr> <td> <video src=https://github.com/TMElyralab/MuseTalk/assets/163980830/4d7c5fa1-3550-4d52-8ed2-52f158150f24 controls preload></video> </td> <td> <a href="//www.bilibili.com/video/BV1wT411b7HU">链接</a> <href src=""></href> </td> </tr> </table>

  • 对于视频配音,我们使用了一个自研工具,可以检测正在说话的人物。

待办事项:

  • [x] 训练模型和推理代码。
  • [ ] 技术报告。
  • [ ] 训练代码。
  • [ ] 在线界面。
  • [ ] 更好的模型(可能需要更长时间)。

快速开始

我们为新用户提供了关于 MuseTalk 安装和基本用法的详细教程:

安装

要准备 Python 环境并安装 opencv、diffusers、mmcv 等额外包,请按照以下步骤操作:

构建环境

我们推荐使用 Python 版本 >=3.10 和 CUDA 版本 =11.7。然后按以下方式构建环境:

pip install -r requirements.txt

whisper

安装 whisper 以提取音频特征(仅编码器)

pip install --editable ./musetalk/whisper

mmlab 包

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\" 

下载 ffmpeg-static

下载 ffmpeg-static 并

export FFMPEG_PATH=/path/to/ffmpeg

例如:

export FFMPEG_PATH=/musetalk/ffmpeg-4.4-amd64-static

下载权重

你可以按以下方式手动下载权重:

  1. 下载我们训练的权重。

  2. 下载其他组件的权重:

最后,这些权重应该按以下方式组织在 models 目录中:

./models/
├── musetalk
│   └── musetalk.json
│   └── pytorch_model.bin
├── dwpose
│   └── dw-ll_ucoco_384.pth
├── face-parse-bisent
│   ├── 79999_iter.pth
│   └── resnet18-5c106cde.pth
├── sd-vae-ft-mse
│   ├── config.json
│   └── diffusion_pytorch_model.bin
└── whisper
    └── tiny.pt

快速入门

推理

这里我们提供推理脚本。

python -m scripts.inference --inference_config configs/inference/test.yaml 

configs/inference/test.yaml 是推理配置文件的路径,包含 video_path 和 audio_path。 video_path 应该是视频文件或图片目录。

使用 bbox_shift 获得可调节的结果

:mag_right: 我们发现掩码的上边界对嘴部张开程度有重要影响。因此,为了控制掩码区域,我们建议使用 bbox_shift 参数。正值(向下半部分移动)增加嘴部张开程度,负值(向上半部分移动)减少嘴部张开程度。

你可以先使用默认配置运行以获得可调节的值范围,然后在此范围内重新运行脚本。

例如,在 Xinying Sun 的案例中,运行默认配置后,显示可调节的值范围是 [-9, 9]。然后,为了减少嘴部张开程度,我们将值设置为 -7。

python -m scripts.inference --inference_config configs/inference/test.yaml --bbox_shift -7 

:pushpin: 更多技术细节可在 bbox_shift 中找到。

结合 MuseV 和 MuseTalk

作为虚拟人生成的完整解决方案,建议你首先使用 MuseV 生成视频(文本转视频、图像转视频或姿态转视频),参考这里。然后,你可以使用 MuseTalk 生成唇形同步视频,参考这里。

注意

如果你想启动在线视频聊天,建议你提前使用 MuseV 生成视频并进行必要的预处理(如人脸检测)。在在线聊天过程中,只有 UNet 和 VAE 解码器参与,这使得 MuseTalk 能够实时运行。

致谢

  1. 感谢 whisper、dwpose、face-alignment、face-parsing、S3FD 等开源组件。
  2. MuseTalk 大量参考了 diffusers。
  3. MuseTalk 基于 HDTF 数据集构建。

感谢开源!

局限性

  • 分辨率:虽然 MuseTalk 使用 256 x 256 的面部区域大小,使其优于其他开源方法,但尚未达到理论分辨率上限。我们将继续解决这个问题。 如果需要更高分辨率,可以将超分辨率模型(如 GFPGAN)与 MuseTalk 结合使用。

  • 身份保持:原始面部的一些细节没有得到很好的保留,例如胡须、嘴唇形状和颜色。

  • 抖动:由于当前管道采用单帧生成,存在一些抖动。

引用

@article{musetalk,
  title={MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting},
  author={Zhang, Yue and Liu, Minhao and Chen, Zhaokang and Wu, Bin and He, Yingjie and Zhan, Chao and Zhou, Wenjiang},
  journal={arxiv},
  year={2024}
}

免责声明/许可

  1. 代码:MuseTalk 的代码以 MIT 许可证发布。学术和商业用途均无限制。
  2. 模型:训练好的模型可用于任何目的,包括商业用途。
  3. 其他开源模型:使用的其他开源模型必须遵守其许可证,如 whisper、ft-mse-vae、dwpose、S3FD 等。
  4. 测试数据收集自互联网,仅可用于非商业研究目的。
  5. AIGC:本项目致力于对 AI 驱动的视频生成领域产生积极影响。用户被授予使用此工具创建视频的自由,但期望他们遵守当地法律并负责任地使用。开发者不对用户的潜在滥用承担任何责任。

camenduru/MuseTalk

作者 camenduru

diffusers
↓ 0 ♥ 3

创建时间: 2024-06-10 17:21:02+00:00

更新时间: 2024-06-10 19:46:01+00:00

在 Hugging Face 上查看

文件 (26)

.gitattributes
README.md
ash.wav
dwpose/README.md
dwpose/dw-ll_ucoco.pth
dwpose/dw-ll_ucoco_384.onnx ONNX
dwpose/dw-ll_ucoco_384.pth
dwpose/dw-mm_ucoco.pth
dwpose/dw-ss_ucoco.pth
dwpose/dw-tt_ucoco.pth
dwpose/rtm-l_ucoco_256-95bb32f5_20230822.pth
dwpose/rtm-x_ucoco_256-05f5bcb7_20230822.pth
dwpose/rtm-x_ucoco_384-f5b50679_20230822.pth
dwpose/yolox_l.onnx ONNX
elon.mp3
face-parse-bisent/79999_iter.pth
face-parse-bisent/resnet18-5c106cde.pth
musetalk/musetalk.json
musetalk/pytorch_model.bin
sd-vae-ft-mse/README.md
sd-vae-ft-mse/config.json
sd-vae-ft-mse/diffusion_pytorch_model.bin
sd-vae-ft-mse/diffusion_pytorch_model.safetensors
video.mp4
video2.mp4
whisper/tiny.pt