MMAudio 在给定视频和/或文本输入的情况下生成同步音频。我们的关键创新是多模式联合训练,它允许对广泛的视听和音频文本数据集进行训练。此外,同步模块将生成的音频与视频帧对齐。
项目地址:https://hkchengrex.com/MMAudio/
Github:https://github.com/hkchengrex/MMAudio
在线体验:https://huggingface.co/spaces/hkchengrex/MMAudio
ComfyUI节点:https://github.com/kijai/ComfyUI-MMAudio
https://x.com/Gorden_Sun/status/1866696704487313450/video/1


安装

我们仅在 Ubuntu 上对此进行了测试。

先决条件

我们建议使用 miniforge 环境。

  • Python 3.9+

  • PyTorch 2.5.1+ 和相应的 torchvision/torchaudio (选择您的 CUDA 版本 https://pytorch.org/,建议使用 pip 安装)

1. 如果尚未满足,请安装先决条件:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 --upgrade
(或者您的 GPU/驱动程序支持的任何其他 CUDA 版本)

2. 克隆我们的存储库:

git clone https://github.com/hkchengrex/MMAudio.git

3. 使用 pip 安装(在尝试此操作之前先安装 pytorch!):

cd MMAudio
pip install -e .

(如果遇到文件“setup.py”未找到错误,请使用 pip install --upgrade pip 升级您的 pip)


预训练模型:

当您运行演示脚本时,模型将自动下载。MD5 校验和在 mmaudio/utils/download_utils.py 中提供。这些模型也可以在 https://huggingface.co/hk Chengrex/MMAudio/tree/main 上找到

要运行该模型,您需要四个组件:流量预测网络、视觉特征提取器(Synchformer 和 CLIP,CLIP 将自动下载)、VAE 和声码器。VAE 和声码器特定于采样率(16kHz 或 44.1kHz),而不是模型大小。44.1kHz 声码器将自动下载。

预期的目录结构(完整):

MMAudio
├── ext_weights
│   ├── best_netG.pt
│   ├── synchformer_state_dict.pth
│   ├── v1-16.pth
│   └── v1-44.pth
├── weights
│   ├── mmaudio_small_16k.pth
│   ├── mmaudio_small_44k.pth
│   ├── mmaudio_medium_44k.pth
│   ├── mmaudio_large_44k.pth
│   └── mmaudio_large_44k_v2.pth
└── ...

预期的目录结构(最小,仅适用于推荐模型):

MMAudio
├── ext_weights
│   ├── synchformer_state_dict.pth
│   └── v1-44.pth
├── weights
│   └── mmaudio_large_44k_v2.pth
└── ...

演示

默认情况下,这些脚本使用 large_44k_v2 模型。在我们的实验中,推理仅需要大约 6GB 的 GPU 内存(16 位模式),这应该适合大多数现代 GPU。

命令行界面

与 demo.py

python demo.py --duration=8 --video=<path to video> --prompt 'your prompt'

1

输出( .flac 格式的音频和 .mp4 格式的视频)将保存在 ./output 中。请参阅该文件以获取更多选项。只需省略文本到音频合成的 --video 选项即可。默认输出(和训练)持续时间为 8 秒。更长/更短的持续时间也可以,但与训练持续时间的较大偏差可能会导致质量下降。

音频接口

支持视频转音频和文本转音频合成。如有必要,请使用端口转发。我们的默认端口是7860您可以在gradio_demo.py中更改。
python gradio_demo.py

已知的限制

  1. 该模型有时会生成不需要的、难以理解的类似人类语音的声音
  2. 该模型有时会生成不需要的背景音乐
  3. 该模型与不熟悉的概念作斗争,例如,它可以生成“枪声”,但不能生成“RPG 射击”。

我们相信所有这三个限制都可以通过更多高质量的训练数据来解决。