SadTalker从零到一:语音驱动会说话的人脸视频完整指南
2026/9/15 14:38:09 网站建设 项目流程

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/cu113

PyTorch 版本要和你的 CUDA 版本对应,上面这条对应 CUDA 11.3,换 CUDA 版本就去官方索引页选对应包。

conda install ffmpeg pip install -r requirements.txt

ffmpeg 负责解码音频和编码输出视频;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人脸增强,清晰度明显提升,代价是耗时变长
--preprocesscrop大头特写用crop,全身照用full输出是裁好的头部视频,还是贴回原图尺寸的视频
--still全身照必开锁定头部姿态不晃,适合full模式
--size256显存小用256,显存 ≥8GB 试512渲染分辨率,直接影响显存占用
--expression_scale1.00.7~1.2表情幅度,嫌夸张就调低
--batch_size2显存不足时改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 等分支
  • 本地 WebUIpython 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 人脸"看它

你的下一步:把两张素材换成自己的 ⌨️

把命令里的示例音频和示例图片换成你自己的素材,回车,等它出片。第一个视频大概率不完美,这是正常的——先调--stillexpression_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询