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
SadTalker 是 CVPR 2023 开源的音频驱动数字人生成工具。输入一张人像图片和一段音频,它输出一条头部会动的说话视频。本文分 4 步完成安装并产出第一条视频。Linux 环境下不含模型下载约 10 分钟,无 GPU 也能跑,只是更慢。
效果链路:从图片到视频
先弄清 SadTalker 干了什么。整个流程分三段。
- 输入:一张人物图片(png/jpeg)加一段音频(wav/mp3)。
- 处理:先从图片提取 3D 人脸系数,再用音频逐帧推算对应的表情和姿态系数。
- 输出:把系数逐帧渲染成视频,存到 results 目录。
这是仓库自带的示例输入图。观察人脸占画面的比例。SadTalker 只支持真人或接近真人的肖像,纯动漫风格效果不保证。
功能一览
| 功能 | 解决的问题 | 典型用法 |
|---|---|---|
| 音频驱动说话 | 静态照片没有口型 | --driven_audio传入音频 |
| 预处理模式 | 不同构图图片效果不同 | --preprocess crop/resize/full |
| 面部增强 | 生成人脸偏糊 | --enhancer gfpgan |
| 静止姿态 | 头部晃动过多 | 加--still |
| 参考视频 | 缺眨眼和头部动作 | --ref_eyeblink、--ref_pose |
| WebUI 界面 | 不想敲命令 | python app_sadtalker.py |
跑通的最短路径
1. 准备环境并安装依赖
先装好 Python 3.8 和 git,然后执行:
git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker conda create -n sadtalker python=3.8 && conda activate sadtalker pip install torch torchvision torchaudio && conda install ffmpeg pip install -r requirements.txttorch 的版本取决于你的 CUDA 环境,具体版本号见仓库 README。Windows 用户不用逐步装环境,直接双击webui.bat会自动创建环境。
确认成功的标准:python -c "import torch"打印出版本号不报错,且ffmpeg -version有输出。
2. 下载模型并校验目录
bash scripts/download_models.sh脚本会把 4 个核心模型下到checkpoints/,4 个增强模型下到gfpgan/weights/。
确认成功的标准:ls checkpoints能看到两个.safetensors和两个mapping开头的.pth.tar,文件不为 0 字节。
3. 启动 WebUI 界面
python app_sadtalker.py终端会打印一个本地地址,通常是http://127.0.0.1:7860,用浏览器打开。
确认成功的标准:页面分左右两栏。左栏是图片和音频上传区,右栏是参数和结果区。macOS 上也可以直接bash webui.sh完成建环境加启动。
第一次实际产出:生成第一条视频
准备输入文件
需要两个文件。
- 源图片:png 或 jpeg,真人或写实风人像,人脸在画面里别太小。可以直接用
examples/source_image/art_0.png。 - 驱动音频:只支持 wav 或 mp3。
examples/driven_audio/里有中英文日语音频可直接用。
按场景选参数
| 场景 | 推荐参数 |
|---|---|
| 头像特写,默认最稳 | 不加参数(crop 模式) |
| 证件照,只动嘴 | --preprocess resize |
| 半身或全身照 | --preprocess full --still |
| 面部偏糊 | 追加--enhancer gfpgan |
| 想要自然眨眼 | --ref_eyeblink examples/ref_video/WDA_KatieHill_000.mp4 |
默认就是 crop 模式,它按人脸关键点裁剪后只生成面部动画。全身图建议 full 模式配--still,否则头部姿态会漂移。
这是仓库自带的全身示例输入。观察人物与背景的比例。这类图适合 full 模式,resize 模式处理它会效果很差。
运行完整命令
python inference.py --source_image examples/source_image/art_0.png \ --driven_audio examples/driven_audio/chinese_news.wav \ --preprocess crop --enhancer gfpgan首次运行要加载全部模型,终端会依次经过 3DMM 提取、系数生成、逐帧渲染三个阶段。
确认成功的标准:结尾打印The generated video is named:并给出类似results/2026_09_11_06.44.51.mp4的路径。打开这个文件,时长应与音频一致,嘴部开合跟发音对得上。
效果调优
调表情幅度
何时用:表情太僵硬,或太夸张失真。 怎么调:加--expression_scale。默认 1.0,调大更夸张,调小更收敛。 如何观察:同一段音频跑两次对比,1.5 时嘴型和眉毛动作明显更大幅度。
固定头部姿态
何时用:头部晃动过多,尤其是全身图。 怎么调:加--still。 如何观察:视频中头部角度基本不动,只有嘴和眉眼区域在动。
提高渲染分辨率
何时用:默认 256 下人脸细节发虚。 怎么调:--size 512,生成速度相应变慢。 如何观察:同一放大倍数下,512 输出的皮肤和发丝纹理更清楚。
借用参考视频动作
何时用:生成的人不眨眼,看起来机械。 怎么调:--ref_eyeblink指定带眨眼的视频,--ref_pose借用头部动作。参考视频比音频短时会循环播放。 如何观察:对比两次输出的眨眼频率,加了参考后眨眼节奏接近参考视频。
这是仓库自带的写实风格示例图。观察皮肤质感和服饰细节。输出视频会尽量保留这种原始风格。
排障
ffmpeg 命令不被识别
现象:ffmpeg is not recognized as an internal or external command。 原因:ffmpeg 未安装或不在系统路径中。 解决:Linux 用conda install ffmpeg,macOS 用brew install ffmpeg,Windows 把 ffmpeg 目录加进 PATH。
报 No module named 'ai'
现象:启动时ModuleNotFoundError: No module named 'ai'。 原因:checkpoints下模型文件不完整或已损坏。 解决:重新执行模型下载脚本,确认文件下载完整后再运行。
找不到 checkpoints 下的文件
现象:FileNotFoundError: checkpoints\BFM_Fitting\....mat。 原因:模型没下载,或目录放错位置。 解决:确认checkpoints/和gfpgan/weights/两个相对目录位于项目根目录下。
显存不足
现象:CUDA out of memory。 原因:显存不够,256 已是默认最低渲染规格。 解决:设置环境变量PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128后重跑,或关闭其他占显存的程序。
音频解码报错
现象:Invalid data found when processing input。 原因:音频格式不支持,只接受 wav 和 mp3。 解决:先用 ffmpeg 把音频转成 wav 或 mp3,再传给--driven_audio。
Mac M1 报 Illegal Hardware Error
现象:启动即报Illegal Hardware Error。 原因:dlib 的预编译包与 Apple Silicon 不兼容。 解决:单独执行pip install dlib重新安装。
进阶入口
- 批量处理:
src/generate_batch.py支持成批读取图片和音频,可用--batch_size调并发生成。 - 自由视角 4D:用
--input_yaw、--input_pitch、--input_roll改变输出头部朝向,参数写法见docs/best_practice.md。 - 3D 人脸模式:加
--face3dvis输出 3D 渲染脸,依赖安装见requirements3d.txt和docs/face3d.md。 - SD WebUI 扩展:已有 Stable Diffusion 环境的话,按
docs/webui_extension.md集成。 - 自定义训练:数据和训练入口在
src/face3d/,流程说明见docs/face3d.md。
参考索引
- 文档:
docs/install.md(各系统安装)、docs/best_practice.md(参数详解)、docs/FAQ.md(常见问题)、docs/face3d.md(3D 模式) - 源码模块:
src/audio2exp_models/(音频到表情系数)、src/audio2pose_models/(音频到姿态)、src/facerender/(人脸渲染)、src/utils/(预处理与工具) - 示例目录:
examples/source_image/(人像示例图)、examples/driven_audio/(驱动音频)、examples/ref_video/(参考视频) - 配置文件:
src/config/(三个模型的 yaml 配置)
【免费下载链接】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),仅供参考