SadTalker 音频驱动说话人:按硬件分流的安装部署手册,30秒跑通出片
【免费下载链接】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 运动系数驱动的视频。你手里有张 N 卡,想在本地部署一套音频驱动的面部动画管线,就看这篇。这里把安装、配置、跑通的全链路直接捋一遍:按硬件选哪条安装路线、模型文件往哪放、报错怎么快速定位。
先确认你的显卡档位
开始敲命令之前,先花 30 秒定路线,免得装错框架最后炸。你只需要跑一次nvidia-smi,看有没有 N 卡、显存多大:
- 显存 8GB 以上 → 走路线 A
- 显存 4-6GB → 走路线 B
- 没有 N 卡 → 走路线 C
- 本机跑不动 → 路线 D(云端 GPU)
| 路线 | 硬件 | PyTorch 装法 | 模型分辨率 | 速度预期 |
|---|---|---|---|---|
| A 高端 GPU | N 卡 8GB+ 显存(RTX 3060 以上) | 1.12.1+cu113 | 512 | 全流程 10-30 秒(短音频) |
| B 入门 GPU | N 卡 4-6GB 显存 | 1.12.1+cu113 | 256 + batch_size 1 | 几十秒到 1 分钟 |
| C 纯 CPU | 任意 x86/ARM CPU | 1.12.1+cpu | 256 | 3-8 分钟,分钟级 |
| D 云端 GPU | 租 8GB+ 显存 | 同 A | 512 | 同 A |
注意:路线 A/B 要求 CUDA 11.3(最低 10.2+)。系统内存 16GB(CPU 路线建议 32GB),磁盘预留 10GB 以上,其中模型文件约占 5GB。Windows 10 / Ubuntu 18.04+ / macOS 10.15+ 都能装,Windows 上 FFmpeg 必须进 PATH。
分路线装环境
四条路线挑一条,从建环境到验证一气呵成,中间不要换路线。
路线 A:高端 GPU,CUDA 11.3 这条走
# 1. 克隆仓库 git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker # 2. Python 必须锁 3.8 conda create -n sadtalker python=3.8 conda activate sadtalker # 3. 装 CUDA 11.3 版 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 # 4. FFmpeg + 其余依赖 conda install ffmpeg pip install -r requirements.txt⚠️ Python 必须锁 3.8,上 3.9 会炸。为什么:requirements.txt 里的版本(numpy==1.23.4、face_alignment==1.3.5、scipy==1.10.1、basicsr==1.4.2、kornia==0.6.8 等)都是在 3.8 环境验证过的,Python 一高,face_alignment、librosa 这类包要么装不上,要么 import 就报错。
验证,三条全过才算装完:
python --version # 应输出 Python 3.8.x python -c "import torch; print(f'PyTorch版本: {torch.__version__}')" python -c "import torch; print(f'CUDA可用: {torch.cuda.is_available()}')" # 期望 True python -c "import numpy, librosa, face_alignment; print('核心依赖加载成功')" ffmpeg -version路线 B:入门 GPU(4-6GB 显存)
环境和 PyTorch 与路线 A 完全相同(第 1-4 步命令照抄),要提前定死的是降档参数:
⚠️ 别碰--size 512,--batch_size保持 1。为什么:facerender 的显存占用随分辨率和 batch 一起涨,6G 的卡上 512 + batch 4 会直接 OOM。
# 推理前先设这个环境变量压一下显存分配(Windows 用 set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128) export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128验证命令同路线 A;之后每条推理命令都带上--size 256 --batch_size 1。
路线 C:纯 CPU
conda create -n sadtalker python=3.8 conda activate sadtalker pip install torch==1.12.1+cpu torchvision==0.13.1+cpu torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cpu conda install ffmpeg pip install -r requirements.txtmacOS 用户补一句pip install dlib(人脸检测靠它)。用python -c "import torch; print(torch.cuda.is_available())"验证,期望 False。之后每次运行记得带--cpu,并准备好分钟级的耐心。
路线 D:云端 GPU
租一台 8GB+ 显存的云机器,照着路线 A 从头走到尾即可,本地什么都不用配。
模型资产就位
这里回答两个问题:每类模型在推理管线里干什么活、文件该放哪。读完对着目录树核对一遍。
管线分四个阶段,每组模型各管一段:
主渲染模型:负责逐帧生成说话面部
checkpoints/SadTalker_V0.0.2_256.safetensors(~1.2GB)—— 256 分辨率checkpoints/SadTalker_V0.0.2_512.safetensors(~1.2GB)—— 512 分辨率
代码按--size自动挑对应文件,src/utils/init_path.py的逻辑就一句话:
# 伪代码:checkpoints 目录里有 .safetensors 时 checkpoint = 'SadTalker_V0.0.2_' + str(size) + '.safetensors'所以两个分辨率可以都提前放好,加载哪个由参数决定。
音频驱动映射:把音频变成姿态/表情系数
checkpoints/mapping_00229-model.pth.tar(~200MB)—— 标准 crop 模式用checkpoints/mapping_00109-model.pth.tar(~200MB)—— 仅--preprocess为 full(全身)时用
# 伪代码:preprocess 决定加载哪个 mapping mappingnet = 'mapping_00109' if 'full' in preprocess else 'mapping_00229'画质增强:只有传 --enhancer gfpgan 才加载
四个文件都放gfpgan/weights/下,单个 50-300MB 不等:
alignment_WFLW_4HG.pth—— 人脸对齐detection_Resnet50_Final.pth—— 人脸检测GFPGANv1.4.pth—— 人脸修复主体(GFPGANv1.4)parsing_parsenet.pth—— 人脸解析
文件放哪、怎么拉
# 一键拉取,自动建目录、已存在的文件跳过 bash scripts/download_models.sh # 脚本不工作时手动来 mkdir -p ./checkpoints ./gfpgan/weights # 从项目 Releases 页把上面 8 个文件下到对应目录,断线用 wget -c 续传下完对着目录树核对:
checkpoints/ ├── SadTalker_V0.0.2_256.safetensors ├── SadTalker_V0.0.2_512.safetensors ├── mapping_00109-model.pth.tar └── mapping_00229-model.pth.tar gfpgan/ └── weights/ ├── alignment_WFLW_4HG.pth ├── detection_Resnet50_Final.pth ├── GFPGANv1.4.pth └── parsing_parsenet.pth30秒跑通最小验证
这条命令出视频,就说明全链路通了。音频和图都用仓库自带的示例素材,不用你准备任何东西。
python inference.py \ --driven_audio ./examples/driven_audio/deyu.wav \ --source_image ./examples/source_image/full_body_1.png \ --size 256 --batch_size 1预期:终端打印The generated video is named: results/xxx.mp4,该文件能正常播放。高端 GPU 上几十秒到 1 分钟;CPU 上 3-8 分钟,这就是 CPU 模式的代价。
上面这种单张人像就是官方示例输入的水平,换成你自己的照片同样能跑。
按场景调参数
参数不用记全,记住这三组组合,其余保持默认即可。
| 场景 | 命令(python inference.py 之后) | 适用情况 |
|---|---|---|
| 快速预览 | --driven_audio audio.wav --source_image image.png --size 256 --batch_size 1 | 验证管线、试参数,最快 |
| 标准质量 | --size 512 --batch_size 4 | 8GB+ 显存的默认选择 |
| 最高质量 | --size 512 --batch_size 4 --enhancer gfpgan | 成品输出,人脸细节过一遍 GFPGAN 修复 |
纯 CPU 就按快速预览跑,加上--cpu --batch_size 1 --size 256 --enhancer none,gfpgan 别碰。
示例输入里既有真人照片,也有这种风格化插画,最高质量场景可以拿这类图试试效果。
报错速查:你看到了什么 → 原因 → 修复
出问题时别慌,拿终端里打印的原文来查这张表,直接照着修。
| 你看到了什么 | 原因 | 修复动作 |
|---|---|---|
ffmpeg is not recognized/FileNotFoundError: ... 'ffmpeg' | FFmpeg 没装或不在 PATH | conda install ffmpeg(Linux 可sudo apt install ffmpeg,macOSbrew install ffmpeg),再跑ffmpeg -version验证 |
ModuleNotFoundError: No module named 'xxx' | 缺依赖包 | 重新pip install -r requirements.txt |
RuntimeError: CUDA out of memory | 显存不足 | --batch_size 1、降到--size 256、export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128 |
FileNotFoundError: ... 'checkpoints/BFM_Fitting/similarity_Lm3D_all.mat' | 模型没下全 | 重跑bash scripts/download_models.sh,再对上文目录树核对 |
RuntimeError: unexpected EOF ... The file might be corrupted | 下载中断,文件损坏 | 重新下载该文件,wget -c续传 |
Can't get the coeffs of the input | 3DMM 拟合失败,图里没识别到人脸 | 换一张正脸、面部清晰且占比大的图 |
macOS M1/M2:Illegal Hardware Instruction/No module named 'ai' | dlib 架构不匹配 | pip uninstall dlib && pip install dlib |
| WSL 里找不到 ffmpeg | 环境变量缺失 | export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH |
| numpy 版本错乱、包之间互相打架 | 环境污染 | conda env remove -n sadtalker删掉重建干净环境,按 requirements.txt 重装 |
跑通之后去哪
出片只是起点:下一步用--ref_eyeblink和--ref_pose挂一段参考视频,给说话人加眨眼和姿态;或者跑app_sadtalker.py、webui.sh起 Web 界面玩。再往深里的问题,去仓库 issues 页翻,踩过的坑基本都有人留了脚印。
【免费下载链接】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),仅供参考