如何做出 SadTalker 音频驱动说话视频:从克隆仓库到 8 分钟出第一张成片
【免费下载链接】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
跑完之后,results目录里会多出 1 个 mp4:图中的人跟着音频开口、转头,眨眼节奏也对得上。这篇文章以音频驱动说话人脸项目 SadTalker 为例,走通从git clone到第一次成功出视频的全过程,前置条件只有终端操作能力和一小时时间。
先看成品长什么样
输入就是一张普通全身图加一段 wav 音频,输出是上面的动态视频:人脸区域随音频张嘴说话,身体和背景保持原样。下面这张就是这类输入图的样式。
动手前记住一点:模型只认真实人脸或高度接近真人的照片,正面、脸部清晰的效果最好;过度美颜或纯插画输入,人脸检测大概率失败。
动手前花 30 秒确认的事
| 项目 | 最低 | 推荐 | 不够怎么办 |
|---|---|---|---|
| 显存 | 6GB | 8GB+ | 加--size 256 --batch_size 1;4G 显存再 exportPYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128 |
| 内存 | 8GB | 16GB+ | --batch_size保持 1,关掉其他大程序 |
| 磁盘 | 10GB | 20GB | 用--result_dir把输出指到别的盘 |
| CPU | 4 核 i5 | i7/i9 | 纯 CPU 环境加--cpu,--size降到 256 |
配置没到推荐线也能跑,只是慢一些,后面每一步都会标注对应的降级参数。
从 clone 到第一次生成
Step 1:克隆仓库,建独立环境
白话:先把代码拉下来,再用 conda 隔出一个 Python 3.8 环境,避免污染系统。
git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker conda create -n sadtalker python=3.8 -y conda activate sadtalker成功标志:终端提示符前出现(sadtalker)。
⚠️ Python 版本锁死 3.8:dlib、face_alignment 这些依赖只有该版本有现成预编译包,升到 3.10 基本要重新编译。
Step 2:装依赖
白话:先装 PyTorch,再装 ffmpeg,最后装项目依赖清单,顺序别乱。
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 conda install ffmpeg -y pip install -r requirements.txtGPU 用户第一行照抄即可(cu113 对应 CUDA 11.3,驱动更新就换匹配版本);纯 CPU 把--extra-index-url改成https://download.pytorch.org/whl/cpu,版本号去掉+cu113后缀。Windows 用户第二条换成scoop install ffmpeg。
成功标志:三条命令都以Successfully installed或 conda 的done收尾,没有成片的ERROR。
Step 3:离线模型下载
白话:这一步是 SadTalker 离线模型下载,一条脚本把 4 个核心模型和人脸修复权重全拿齐。
bash scripts/download_models.sh成功标志:ls checkpoints能看到SadTalker_V0.0.2_256.safetensors、SadTalker_V0.0.2_512.safetensors和两个mapping_*.pth.tar,gfpgan/weights里有 4 个 pth 文件。
⚠️ 模型下载脚本 从 GitHub Releases 拉文件,网络必须能访问 GitHub;中断了直接再跑一次,wget -nc支持断点续传,不会重头下。
Step 4:第一次生成
白话:用仓库自带的示例音频和示例图,把默认参数跑一遍。
python inference.py --driven_audio examples/driven_audio/bus_chinese.wav \ --source_image examples/source_image/full_body_1.png \ --preprocess full --still --size 256 --batch_size 2首跑用 256 就够;显存 8G 以上再上--size 512 --batch_size 4,纯 CPU 加--cpu并把--batch_size降到 1。
成功标志:终端打印The generated video is named: ./results/...mp4,results 目录下同名文件打开就是说话的视频。
⚠️ 音频只支持 wav 和 mp3,喂 m4a 或 mp4 会让 ffmpeg 直接报Invalid data found。
效果不满意时调这几个旋钮
默认值够用,想更清晰就动--size,其余按需求微调:
--size:人脸渲染分辨率 → 256 快、512 明显更锐 → 8G 以上显存给 512,4~6G 给 256--batch_size:并行渲染帧数,直接决定显存占用 → 8G+ 给 4,4G 给 1--expression_scale:表情幅度倍率,默认 1.0 → 表情偏平给 1.2~1.5
完整参数含义见 docs/best_practice.md。
大概率会踩的坑
- 现象:
ffmpeg is not recognized as an internal or external command。因:ffmpeg 没装或者不在 PATH 里。解:conda install ffmpeg -y,macOS 用brew install ffmpeg。 - 现象:
RuntimeError: CUDA out of memory。因:显存不够或内存碎片化严重。解:Linux 先export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128(Windows 用set),再把--batch_size降到 1。 - 现象:
RuntimeError: unexpected EOF ... The file might be corrupted.因:模型文件下载中断,体积不完整。解:重跑bash scripts/download_models.sh,会自动断点续传,更多报错对照 docs/FAQ.md。
跑通之后可以接着玩
换自己的肖像图试试:用一张正面清晰的人像(下面这种风格都行),首帧效果可以直接和开头的全身样片对比。
从另一段视频借眨眼和姿态:加
--ref_eyeblink或--ref_pose指定一段真人视频,生成的人脸会借用它的眨眼与头部运动节奏,比默认姿态更自然。
【免费下载链接】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),仅供参考