SadTalker 音频驱动说话人脸动画实战指南:4 个关卡让一张照片开口说话
【免费下载链接】SadTalker[CVPR 2023] SadTalker:Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation项目地址: https://gitcode.com/GitHub_Trending/sa/SadTalker
跑完本文,你会得到一支由「一张图 + 一段音频」驱动的说话人脸视频:SadTalker 是发表于 CVPR 2023 的开源工具,输入一张人像图片和任意一段音频,它会生成 3D 面部运动系数并渲染出口型、表情都贴合语音的视频。整个流程拆成 4 个关卡,跟着做即可,每步都是可直接复制的命令,不需要读代码。
🎬 开场:先看看你将得到什么
先不急着讲原理,看输入输出:
- 输入一:一张人像图片(照片、数字绘画、半身或全身都可以)
- 输入二:一段音频(wav 或 mp3)
- 输出:一个人物"对着音频说话"的 mp4 视频
上图是项目自带的一张素材图,后面我们会用一段中文新闻音频让它"开口说话"。
🛠️ 关卡一:7 条命令搭好 SadTalker Python 环境
所有命令都在项目目录下执行。先把代码克隆下来:
git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker创建隔离环境(项目基于 Python 3.8,避免和其他项目的依赖打架):
conda create -n sadtalker python=3.8 conda activate sadtalker安装 PyTorch(有 NVIDIA 显卡建议装对应 CUDA 版本)、ffmpeg 视频编码器,以及其余全部依赖:
pip install torch torchvision torchaudio conda install ffmpeg pip install -r requirements.txt到这里环境就绪:Python、GPU 框架、视频编码器三件套齐了。
📦 关卡二:一键下载全部预训练模型
SadTalker 的"大脑"是几组权重:音频转表情模型、音频转姿态模型、256/512 两种分辨率的人脸渲染网络,外加 GFPGAN 人脸增强权重。项目自带下载脚本,一次拉齐:
bash scripts/download_models.shWindows 用户:先在项目目录里打开 Git Bash,再执行这条命令。
下载完后用一条命令核对,checkpoints/与gfpgan/weights/里文件齐全即可过关:
ls checkpoints gfpgan/weights看到SadTalker_V0.0.2_256.safetensors、SadTalker_V0.0.2_512.safetensors和两个mapping_*.pth.tar,gfpgan 目录里有几个.pth文件,就算合格。
🎬 关卡三:跑出第一段音频驱动的人脸动画
核心命令来了。inference.py只需要两个必填参数:--driven_audio是驱动音频,--source_image是要动画化的人像:
python inference.py \ --driven_audio examples/driven_audio/chinese_news.wav \ --source_image examples/source_image/full_body_1.png \ --result_dir results终端打印出The generated video is named: ...时即代表成功,成品 mp4 在results/目录下(以时间戳命名文件夹)。首次运行要加载多个模型,会稍慢;视频时长与音频一致,直接播放就能"看到"成果。
想只要"大头"效果,也可以换成上面这种头像类输入:默认的 crop 模式会自动定位人脸,只动画化面部区域,口型更准。
🩹 关卡四:最容易卡住的三个点及解法
前三个关卡都是顺利路径,新手最先被绊住的地方集中在这三处:
1. 报ffmpeg is not recognized...
ffmpeg 不在 PATH 里。Linux 用conda install ffmpeg补装,Mac 用brew install ffmpeg,装完重开一个终端再试。
2. 报CUDA out of memory
两个办法:加--size 256换用低分辨率模型;或运行前设置显存分配策略(Linux/Mac):
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128Windows 则改为set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128。
3. 报ModuleNotFoundError或指向某个模型文件的FileNotFoundError
几乎都是模型没下全。重新执行bash scripts/download_models.sh即可——脚本用wget -nc断点续传,已下载的文件会自动跳过,放心重复运行。
还有一个隐蔽点:驱动音频只支持 wav 和 mp3。手头的 m4a、flac 等格式先用 ffmpeg 转一下再喂进去,否则会在解码阶段报格式错误。
🎛️ 扩展区:让效果更好的 4 个开关
第一条视频跑通后,给同一条inference.py命令追加参数,就能解锁下面四种玩法:
| 参数 | 作用 |
|---|---|
--still --preprocess full | 保持原始头姿,全身图动画后贴回原画面 |
--enhancer gfpgan | GFPGAN 人脸增强,细节更清晰 |
--ref_pose <视频.mp4> | 借用参考视频的头部运动,姿态更自然 |
--expression_scale 1.2 | 表情强度系数,>1.0 更生动,更小则更收敛 |
全身图推荐"静止 + 完整 + 增强"组合拳,既保留全身构图又提升画质:
python inference.py \ --driven_audio examples/driven_audio/imagine.wav \ --source_image examples/source_image/full_body_1.png \ --still --preprocess full \ --enhancer gfpgan \ --result_dir results_enhanced如果手头有"数字绘画 + 音频"的组合想实验,下面这张方图也是质量不错的输入:
每个参数的完整说明在 docs/best_practice.md,其余疑问可先翻 docs/FAQ.md。
🚀 跑完之后:下一步往哪走
命令行这条链路你已经打通了。下一步建议体验官方 Gradio WebUI:直接运行python app_sadtalker.py(Windows 双击webui.bat即可,依赖会自动装好),在浏览器里上传图片、音频就能生成。再往后可以研究--input_yaw自由视角模式——让一张照片转头看不同方向。
关卡都通了,素材就在 examples 目录里躺着。去挑一张你喜欢的图和一段音频,生成第一支"开口说话"的肖像吧。
【免费下载链接】SadTalker[CVPR 2023] SadTalker:Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation项目地址: https://gitcode.com/GitHub_Trending/sa/SadTalker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考