如何用 SadTalker 10 分钟让照片"开口说话":从下载到会说话的完整新手指南
【免费下载链接】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 的开源项目解决的正是"语音驱动说话头动画"这件事——过去只在影视制作里才能做,现在一条命令就行。
这篇文章不按安装流程平铺,而是围绕新手最容易卡住的 3 个地方来写。你只要记住整体路径:备好环境 → 拿齐模型权重 → 跑一条推理命令。卡得越明白,跑得越快。
开始前:2 分钟过一遍环境清单
先确认硬件:有 NVIDIA 显卡体验最好;显存偏小的话后面会教你怎么调,没有独显也能用 CPU 跑,只是慢。
先在终端把项目代码拉到本地。这条命令执行完,当前目录下会多出SadTalker文件夹,进去能看到 README 和examples/目录——里面自带了一组可直接用的音频和样图,后面演示就用它们:
git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker然后建一个独立的 Python 3.8 环境,装 PyTorch 和项目依赖。依赖安装是全程最耗时的一步,做完的反馈是终端不再刷新的报错,结尾正常返回命令提示符:
conda create -n sadtalker python=3.8 conda activate sadtalker pip install torch torchvision torchaudio pip install -r requirements.txt还有一个最容易被忽略的:SadTalker 靠 ffmpeg 把帧拼成视频。顺手装一个(conda install ffmpeg),再用ffmpeg -version验证——能打印出版本信息就对了;如果提示"不是内部或外部命令",说明还没装好,此时再往下跑一定会报解码错误。
卡点一:模型文件没就位,一启动就报错
就算环境齐了,大多数人第一次运行仍会失败,报错几乎都指向同一个地方:checkpoints/。预训练权重不随代码一起提供,这一步漏了,后面全是"文件不存在"。
在项目根目录执行下面这条命令,它会把表情模型、姿态模型、渲染生成器和面部增强权重一次性下全。跑完后checkpoints/里应该有若干.safetensors和.pth.tar大文件,gfpgan/weights/里有 4 个增强用权重文件。以后再遇到ModuleNotFoundError或No such file or directory: checkpoints/...,回来重跑一遍这个脚本,缺什么会补什么:
bash scripts/download_models.sh权重就位之后,顺手记住两个小坑,能省你很多排查时间:
- 音频只支持 wav 或 mp3,其他格式喂进去会报解码错,先转码;
- 如果看到 CUDA out of memory,先设置内存分配策略再跑,Linux/macOS 执行
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128,Windows 用set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128。
卡点二:脸生成得不对劲:先选对素材,再选对模式
跑通之后,更常见的烦恼是"视频出来了,但脸糊、背景撕裂或身体变形"。这通常不是模型不行,是输入没选对。
先看素材。模型对写实人像最稳,脸要清晰、尽量正面。examples/source_image/里就备着不同类型的例子,比如这张写实头肩照,是最不容易翻车的输入:
而下面这种全身照,背景占比大,直接跑默认模式就容易出"撕裂感",需要换模式:
项目用--preprocess提供三种预处理模式,直接决定输出形态:
crop(默认):只动画脸部区域,输出头部特写,表情和头部动作最真实;resize:整图缩放到固定分辨率,适合"证件照"式、脸占满画面的素材,全身照不要用;full:脸部动画完再贴回原图,适合全身照,建议配--still保持原有头部姿态。
来跑一条验证命令:用仓库示例音频驱动上面那张全身图,结果会存进results/目录。跑完打开它,里面有一个按时间戳命名的子目录,最终的 mp4 就在里面:
python inference.py --driven_audio examples/driven_audio/chinese_news.wav --source_image examples/source_image/full_body_1.png --result_dir results --still --preprocess full想换头部特写,把--preprocess改回crop、素材换成那张头肩照即可。三种模式的效果差异和更多参数说明,见 最佳实践文档。
卡点三:头太呆板:让头部"活起来"的三个开关
前两步过了,视频里的人一定会动,但常显得"呆":头部几乎不摆、表情平淡、口型发虚。这里是参数能产生最大差异的环节。
第一,加面部增强。在命令后追加--enhancer gfpgan,让修复模型在生成后把面部细节修一遍,口型区域会明显变清晰。
第二,调表情强度。--expression_scale 1.5让表情更夸张,0.8则更沉稳。活泼的素材可以调高一点,严肃的新闻播报类素材调低。
第三,借参考视频的头部运动。用--ref_pose指定一段真人视频,模型会"借"它的头部姿态;--ref_eyeblink还能借眨眼动作,顺带解决"死鱼眼"。仓库的examples/ref_video/里就有现成的两段;参考视频比音频短时会自动循环。
艺术风格的素材同样能跑,但脸尽量大、细节尽量清楚。下面这类绘画风头像,就属于比较稳的输入:
不想敲命令:打开 WebUI 试试
如果命令行操作让你觉得繁琐,项目自带了一个 Gradio 的本地网页界面,所有参数都变成了按钮和下拉框。Linux/macOS 执行bash webui.sh,Windows 直接双击webui.bat,脚本会自动补齐它需要的依赖;浏览器打开本地页面后,上传图片、音频,选模式,点生成即可。如果你更习惯把它作为 Stable Diffusion WebUI 的插件使用,可以看 WebUI 扩展文档。
接下来可以试什么:一份按顺序的变体清单
跑通之后,建议按下面的顺序逐个加变量玩,一次只改一个,才能看清变化来自哪里:
- 同一张图配两段不同音频——听感上的情绪差异会直接映射到脸上;
- 同一素材跑
crop和full --still——感受两种输出形态的边界; - 加一段参考视频与不加对比——你会立刻明白头部运动是怎么"借"来的;
- 更进一步,试试 4D 自由视角:用
--input_yaw等参数让单张照片生成转头方向的视频,效果如下(结果图、自由视角、新视角的对比):
想看到 3D 渲染的脸和 3D 关键点,可以加--face3dvis,配置方法在 face3d 文档。中途遇到问题,先查 FAQ,它覆盖了大部分常见报错;macOS 和 Windows 原生环境的细节则在 安装文档 里。
【免费下载链接】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),仅供参考