SadTalker从零到一:语音驱动会说话的人脸视频完整指南
【免费下载链接】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
照着做完这一篇,你就能用一张静态人像照片加一段音频,生成一段口型、表情、头部动作都由语音驱动的说话头视频。全程不需要改任何一行代码:建好环境、下好模型文件、敲一条命令,就能看到成片 mp4。
它凭什么值得你花时间 🧠
SadTalker 是 CVPR 2023 的工作,核心公式很简单:一张肖像图 + 一段音频 = 说话头视频。它内部用音频转表情模型算出每一帧该用什么表情,用音频转姿态模型算出头部该怎么动,再靠 3D 人脸模型逐帧渲染出来,所以产出的是完整的"人在说话",而不只是嘴巴在动。
和其他路线比一下,你就知道它的位置:
| 对比项 | SadTalker | 口型修正类方案(如 Wav2Lip) | 云端 AI 视频服务 |
|---|---|---|---|
| 输入要求 | 单张人像 + 音频 | 必须有一段原始视频 | 图片/文本 + 音频 |
| 生成范围 | 表情 + 头部姿态整体动画 | 只修嘴部区域 | 说话头视频 |
| 运行位置 | 完全本地离线 | 本地 | 线上 API,数据要上传 |
| 适合谁 | 想要可控、可复现、不联网出片的场景 | 手里已有原视频 | 不想折腾环境 |
你手里只有一张图、又不想把素材传到别人的服务器上,SadTalker 就是最顺手的选择。
开始之前:先自查四件事 ✅
动手前花一分钟对照下面的清单,能省掉后面大部分折腾:
- 系统:Linux 体验最顺;Windows 建议走 WSL 或装好 ffmpeg 的原生环境;macOS 能跑,但没有 GPU 加速,主要当调试用
- 显卡:NVIDIA 显卡,256 分辨率模型 4GB 显存起步,8GB 以上跑 512 分辨率才从容;没有独显可以加
--cpu硬跑,但会很慢 - Python:官方流程基于 3.8,直接用 conda 建同名版本的环境最稳
- 磁盘:代码 + Python 依赖 + 模型文件,预留 10GB 以上
- ffmpeg:音视频编解码工具,系统里必须有(下面的环境步骤会顺手装好)
一条主线走通:环境、依赖、模型文件 🔧
拉代码,建一个隔离的 Python 环境
git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker conda create -n sadtalker python=3.8 -y conda activate sadtalker为什么要隔离环境:face_alignment、kornia 这类依赖的版本要求比较死,和项目里其他 Python 包混装极易互相踩坏。
装 PyTorch 和全部依赖
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113PyTorch 版本要和你的 CUDA 版本对应,上面这条对应 CUDA 11.3,换 CUDA 版本就去官方索引页选对应包。
conda install ffmpeg pip install -r requirements.txtffmpeg 负责解码音频和编码输出视频;requirements.txt里已经锁好了 audio 处理、人脸对齐、GFPGAN 增强等全部依赖,不要手动增删,版本冲突大多来自这里。
下载模型文件
bash scripts/download_models.sh这条脚本会把推理要用的渲染模型、映射网络,以及 gfpgan 人脸增强权重一次性拉齐。它是断点友好的:已经下完的文件会自动跳过,网断了重跑一遍即可。具体包含哪些文件、每个文件干嘛,看 scripts/download_models.sh 里的注释,离线机器可以按那份清单从别处拷贝。
如果不想折腾:用 Docker 一步到位
不想配环境的话,社区镜像里依赖和模型都是现成的(完整说明在 docs/install.md):
docker run --gpus "all" --rm -v $(pwd):/host_dir wawa9000/sadtalker \ --driven_audio /host_dir/audio.wav \ --source_image /host_dir/image.jpg \ --still \ --result_dir /host_dir把音频和图片放进当前目录、改一下文件名就能出片。代价是容器里的模型版本和参数你动不了,适合快速验证,不适合改模型。
看到效果:最少参数的第一条出片命令 🎬
依赖和模型都就位后,敲这条参数最少的命令:
python inference.py --driven_audio examples/driven_audio/chinese_news.wav --source_image examples/source_image/happy.png只需要音频和人像两个输入,其余参数全部走默认值。跑起来你会看到控制台依次打印3DMM Extraction for source image(从图片提取 3D 人脸参数)、音频转系数、渲染三阶段的进度,最后一行告诉你The generated video is named: results/xxxx.mp4。打开它:画面里的人嘴型跟着中文新闻走,头部有轻微自然的摆动,这就是最基础的出片效果。下面这张就是项目自带的示例人像,可以直接拿去当--source_image试:
常用参数速查 ⚙️
真正决定出片质量的就是下面几个,先记住推荐值,其他以后慢慢玩:
| 参数 | 默认值 | 推荐值 | 影响什么 |
|---|---|---|---|
--enhancer gfpgan | 不启用 | gfpgan | 人脸增强,清晰度明显提升,代价是耗时变长 |
--preprocess | crop | 大头特写用crop,全身照用full | 输出是裁好的头部视频,还是贴回原图尺寸的视频 |
--still | 关 | 全身照必开 | 锁定头部姿态不晃,适合full模式 |
--size | 256 | 显存小用256,显存 ≥8GB 试512 | 渲染分辨率,直接影响显存占用 |
--expression_scale | 1.0 | 0.7~1.2 | 表情幅度,嫌夸张就调低 |
--batch_size | 2 | 显存不足时改1 | 出片速度 vs 显存的第一调节阀 |
--ref_eyeblink | 无 | 给一段真人短视频 | 借用参考视频的眨眼,眼神更自然 |
各模式的对比效果图和更多取值说明,都整理在 docs/best_practice.md。
卡住了怎么办 🚑
ffmpeg is not recognized
- 现象:启动即报 ffmpeg 未识别
- 原因:ffmpeg 没装,或者装了但不在 PATH 里
- 处理:Linux/macOS 跑
conda install ffmpeg(macOS 也可以brew install ffmpeg);Windows 确认 ffmpeg 可执行文件目录已加入 PATH,然后重跑
CUDA out of memory
- 现象:渲染阶段报
RuntimeError: CUDA out of memory - 原因:显存不够,用 512 模型或高 batch 时尤其常见
- 处理:加
--batch_size 1、把--size降回256;还不行就在运行前设置export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128再启动
报 No module named 'xxx' 或文件损坏
- 现象:加载阶段抛 ModuleNotFoundError,或提示
unexpected EOF、文件损坏 - 原因:模型文件没下全或下载中断导致损坏
- 处理:对照 scripts/download_models.sh 检查
checkpoints/下文件大小是否异常,删掉坏文件后重跑下载脚本,它会补齐缺失部分
音频解码报错(Invalid data found when processing input)
- 现象:读音频时报 stream 解码错误
- 原因:音频格式不支持
- 处理:目前只吃 wav 和 mp3,把其他格式先转成 wav 再传入
口型和语音对不上
- 现象:播放视频时嘴比声音慢半拍或乱动
- 原因:头部晃动幅度过大造成观感错位,或表情幅度没调好
- 处理:加
--still压住头部动作,再把--expression_scale调到0.8左右,多数情况能对齐
Can't get the coeffs of the input
- 现象:跑完直接打印这句并退出,没有视频产出
- 原因:图片里的人脸没检测出来——图太小、角度太偏,或是卡通/插画脸
- 处理:该模型目前只支持真实人物或接近真人的人像,换一张正脸、脸部占比大的照片再试
更多高频问题在 docs/FAQ.md 里,排错前值得先翻一遍。
接下来去哪 📚
- 源码结构:src/audio2exp_models/ 是音频转表情模块,src/audio2pose_models/ 是音频转头部姿态模块,src/facerender/ 是 3D 人脸渲染核心,src/utils/ 放通用工具,想改算法从这三处入手
- 用法与进阶模式:docs/best_practice.md,含 reference 视频、自由视角等玩法
- 安装疑难:docs/install.md,覆盖 macOS、WSL、Docker 等分支
- 本地 WebUI:
python app_sadtalker.py直接起网页版;Stable Diffusion WebUI 插件的说明在 docs/webui_extension.md - 试玩素材:examples/source_image/ 里几十张人像、examples/driven_audio/ 里中、日等多语言音频,随便挑配对
- 论文:CVPR 2023 收录的《SadTalker: Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation》,理解"音频系数怎么驱动 3D 人脸"看它
你的下一步:把两张素材换成自己的 ⌨️
把命令里的示例音频和示例图片换成你自己的素材,回车,等它出片。第一个视频大概率不完美,这是正常的——先调--still和expression_scale,九成问题都在这两个参数里。
【免费下载链接】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),仅供参考