基于Snoic的音频对口型数字人
Sonic 是一个基于深度学习的语音驱动数字人生成项目,支持将静态人像图与语音合成为口型同步的视频内容。项目整合了多个知名开源模型,包括 Whisper、SVD 和自定义的口型生成网络,具备出色的视觉效果与语音对齐能力。
本文梳理了 Sonic 项目的本地运行准备过程与模型部署流程,并覆盖了 Conda 环境创建、模型下载配置及推理命令说明,后续还扩展至与 ComfyUI 的整合实践,展示了如何将其应用于实际工作流中。
文章目录
- 项目准备
- 项目应用
- 项目拓展
- 总结
项目准备
使用 Anaconda 可以快速创建和管理 Python 环境,尤其适合初学者。配合 GPU 版本的 PyTorch,可充分利用显卡加速,显著提升深度学习任务的执行效率。
在使用 Snoic
项目时,确保完成环境配置、下载源码和预训练模型,是项目顺利运行的关键。
需求 | 说明 |
---|---|
配置要求 | 显存8G以上,显卡起步1650(N卡) |
环境安装 | Python初学者在不同系统上安装Python的保姆级指引 |
Win10+Python3.9+GPU版Pytorch环境搭建最简流程 | |
项目源码 | Snoic |
整合包使用 | AIGC工具平台-Snoic数字人对口型 |
模型下载地址
从 Hugging Face Hub 下载多个模型文件并存放在本地特定路径中,方便离线使用。huggingface_hub[cli]
安装了命令行工具,huggingface-cli download
可以无需登录直接将模型缓存至指定文件夹。这些模型一般用于语音识别、图像驱动生成视频、或者语音合成,属于项目中关键的推理组件。
python -m pip install "huggingface_hub[cli]"huggingface-cli download LeonJoe13/Sonic --local-dir checkpointshuggingface-cli download stabilityai/stable-video-diffusion-img2vid-xt --local-dir checkpoints/stable-video-diffusion-img2vid-xthuggingface-cli download openai/whisper-tiny --local-dir checkpoints/whisper-tiny
模型名称 | 来源仓库 | 本地保存路径 | 用途说明 |
---|---|---|---|
Sonic | LeonJoe13/Sonic | checkpoints/ | 可能为动画风格或角色语音驱动模型(推测) |
Stable Video Diffusion (img2vid-xt) | stabilityai/stable-video-diffusion-img2vid-xt | checkpoints/stable-video-diffusion-img2vid-xt | 图像转视频模型,用于视频生成 |
Whisper Tiny | openai/whisper-tiny | checkpoints/whisper-tiny | OpenAI 的语音转文本模型,支持多语言识别 |
如果下载缓慢可以更换国内镜像。
使用 export HF_ENDPOINT=https://hf-mirror.com
命令切换即可。
虚拟环境
在本项目中可以使用 Conda 来创建和管理虚拟环境。在项目的根目录中,通过 Conda 创建一个新的虚拟环境,假设环境名称为 venv
,并使用 Python 3.6 版本。
conda create --name venv python=3.10
创建好环境后,通过以下命令激活虚拟环境。命令行前会显示虚拟环境名称 venv
,表示当前环境已激活。
conda activate venv
在激活的虚拟环境中,按照项目提供的 requirements.txt
文件安装所需的 Python 包。
pip install -r requirements.txt
项目应用
使用预训练模型使用,下面是执行项目的标准结构命令。
python demo.py '/path/to/input_image' '/path/to/input_audio' '/path/to/output_video'
基于 Sonic 模型的推理入口,支持将静态图像与语音音频合成为带有口型的视频。用户通过命令行传入图像路径、音频路径和输出路径,同时可选启用人脸裁剪、设置动态缩放比例或固定随机种子以提升复现性。参数设计简洁,适合快速测试与批量生成。
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
image_path | str | 必填 | 输入图像路径,作为口型生成的驱动人脸图像 |
audio_path | str | 必填 | 输入音频路径,作为驱动内容的语音素材 |
output_path | str | 必填 | 生成视频的保存路径 |
--dynamic_scale | float | 1.0 | 图像动态缩放比例,适配分辨率时使用 |
--crop | flag | False | 是否启用自动人脸裁剪(基于检测框),启用后将生成 .crop.png 文件 |
--seed | int | None | 随机种子,用于结果可复现控制 |
项目拓展
将 Sonic 推理流程集成进了 ComfyUI 工作流系统,实现了可视化、模块化的语音驱动头像动画生成。它通过音频驱动静态图像生成自然唇动动画,搭配扩散模型和语音感知网络,在保留语义一致性的同时生成同步口型、流畅过渡的人脸视频。
此项目特别适合视频播报、虚拟角色、数字人等 AIGC 场景,并提供了完整的 ComfyUI 工作流示例和模型支持。
进入 ComfyUI 的 custom_nodes
目录,克隆本模块并安装模块所需的依赖项。
cd ./ComfyUI/custom_nodes
git clone https://github.com/smthemex/ComfyUI_Sonic.git
pip install -r requirements.txt
Sonic 核心模型权重
下载地址:Google Drive 模型文件夹
ComfyUI/models/sonic/
├── audio2bucket.pth
├── audio2token.pth
├── unet.pth
├── yoloface_v5m.pt
├── whisper-tiny/
│ ├── config.json
│ ├── model.safetensors
│ └── preprocessor_config.json
├── RIFE/
│ └── flownet.pkl
Whisper 语音模型
获取:openai/whisper-tiny(Hugging Face)将下载后的文件放置于 sonic/whisper-tiny/
文件夹中。
SVD 扩散模型
Sonic 使用 SVD 模型进行高质量帧生成。 svd_xt.safetensors, svd_xt_1_1.safetensors任选一个放置至如下路径:
ComfyUI/models/checkpoints/
├── svd_xt.safetensors 或 svd_xt_1_1.safetensors
-
最新版示例(2024.05.16)
总结
Sonic 项目的设计围绕端到端的语音驱动视频生成流程展开,最大特点在于模型结构与功能模块解耦清晰。音频识别、图像驱动、视频合成各环节使用了独立模型,相互配合完成高质量输出。同时命令行接口简洁,降低使用门槛,适配性良好。核心模型引入 Whisper 语音识别与 SVD 扩散算法,有效保障语义同步和帧间流畅性,支撑其数字人生成的稳定效果。
该模块也存在一些可优化点。模型下载依赖命令行且路径需手动管理,缺乏一体化的脚本封装或 GUI 界面,使用过程易受环境因素干扰。虚拟环境依赖较多,版本兼容性敏感。ComfyUI 集成部分虽然提升易用性,但节点功能粒度略粗,灵活性受限,调试空间不足。