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 是一个用一张静态人像加一段音频生成说话人头视频(talking head)的开源工具。如果你想在自己电脑上跑通它,跟着本文一步步做:装好环境、下完模型、启动界面,生成第一个说话视频。
⚙️ 它是怎么工作的
原理一句话:模型先从静态图里提取一组 3D 人脸参数(描述脸型与头姿的数值),再用音频驱动网络把音频逐帧转成表情与姿态系数,最后由渲染器把这些系数"回放"到原图上,输出视频。你全程只需准备两样输入:一张真人正脸照(暂不支持动漫图)和一段wav 或 mp3音频。头部运动、口型、眨眼全部由模型生成,喂一段参考视频还能让动作更自然。下图就是同一张图经 SadTalker 在不同角度下生成的说话效果。
原理清楚了,先看最快看到结果的路。
🚀 最短路径跑通:一键脚本启动 WebUI
最省事的路是项目自带的一键脚本webui.bat(Windows)或webui.sh(macOS、Linux):它会自动建 Python 虚拟环境、装全部依赖,然后拉起 Gradio(一个网页界面库)页面,你不用手动敲安装命令。
git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker- Windows:双击webui.bat
- macOS / Linux:终端执行
bash webui.sh
首次启动完成后,浏览器打开http://127.0.0.1:7860,上传一张人像和一段音频,点 Generate 即可。注意模型文件不随脚本下载:Linux/macOS 再执行bash scripts/download_models.sh,Windows 用户按 README 中 "2. Download Models" 一节手动补齐到checkpoints/与gfpgan/weights/目录。若你完全不想装环境,README 的 Quick Start 一节还列了社区 Docker 镜像和在线演示,各一句话就能指过去。想逐步控制每个环节,往下看完整搭建。
🏗️ 本地完整搭建:四步从零到出片
1. 环境确认。需要Python 3.8(官方推荐版本)、git和ffmpeg(读写音视频文件的工具)。分别执行python -V、git --version、ffmpeg -version,三条都能输出版本号才继续。
Windows 差异:装 Python 时务必勾选 "Add Python to PATH";ffmpeg 和 git 用
scoop install ffmpeg、scoop install git各一条命令装好。macOS / Linux 差异:建议用 conda 建环境,ffmpeg 用conda install ffmpeg安装。
2. 安装代码与依赖。仓库已在上节克隆,接着建独立环境:
conda create -n sadtalker python=3.8 conda activate sadtalker conda install ffmpeg pip install -r requirements.txtWindows 差异:已跑过 webui.bat 的话,venv 和依赖都已就绪,这步可跳过;注意 Windows 一键脚本会校验 Python 版本,推荐装 3.10。macOS 差异:额外执行
pip install dlib(人脸关键点库),M1 芯片不单独装会报 Illegal Hardware Error。Linux 带 N 卡:先装 cu113 版 torch(命令在 README 的 Installation 一节);纯 CPU 机器可跳过。
3. 下载模型文件。全部权重一条脚本搞定:
bash scripts/download_models.sh脚本会拉取主渲染模型(如SadTalker_V0.0.2_256.safetensors)和人脸增强权重。网络受限时,按 README "2. Download Models" 一节手动下载,放到checkpoints/和gfpgan/weights/两个目录。验证时可以直接用仓库自带的示例输入:
4. 启动验证。命令行直接生成第一个视频:
python inference.py --driven_audio examples/driven_audio/bus_chinese.wav \ --source_image examples/source_image/full_body_1.png \ --still --preprocess full跑完会在results/下生成一个带时间戳的 mp4,就是全身说话视频。想用图形界面就bash webui.sh,浏览器访问http://127.0.0.1:7860。
第一条视频出来了,接下来调参数,把效果调到你想要的程度。
🎛️ 关键参数与效果对比
以下参数都是inference.py的命令行参数,完整参数表见 docs/best_practice.md,最常调的 5 个:
| 参数 | 作用 | 推荐值 |
|---|---|---|
--expression_scale | 表情强度,越大动作越夸张 | 0.5–1.5,默认 1.0 |
--still+--preprocess full | 保持原图头姿,做全身动画 | 全身图推荐组合 |
--enhancer | 人脸修复网络,救回模糊脸 | gfpgan |
--ref_eyeblink/--ref_pose | 从参考视频借眨眼或头部姿态,更自然 | 任意短视频,比音频短会自动循环 |
--size | 人脸渲染分辨率 | 256更快;512 更细腻但更吃 VRAM(即显卡显存) |
下图是参考视频模式的三段对照:左边输入图、中间生成结果、右边提供姿态与眨眼的参考视频,一眼能看出--ref_pose的效果来源。
🛠️ 高频问题速查
细节都在 docs/FAQ.md,这里收 6 条最高频的:
| 现象 | 原因 | 解决办法 |
|---|---|---|
ffmpeg不是内部或外部命令 | ffmpeg 没装或不在 PATH | conda install ffmpeg;macOS 用brew install ffmpeg;Windows 用scoop install ffmpeg |
No module named 'ai'类报错 | epoch_20.pth下载不完整 | 重新下载并核对模型文件大小 |
Illegal Hardware Error(M1 Mac) | dlib 编译不兼容 | 单独执行pip install dlib |
FileNotFoundError: checkpoints\BFM_Fitting\... | 模型文件位置不对 | 按 README 补齐checkpoints/目录结构 |
CUDA out of memory | 显存不足 | 设PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128,并调低--size、关增强 |
| 音频解码报错(mp3float) | 音频格式不支持 | 只支持wav和mp3两种格式 |
遇到报错先别硬重试,对照上表定位,九成问题是环境或模型文件没下齐。
📍 下一步
跑通之后,遇到的 bug 和新功能需求都可以提交到仓库的issue入口(克隆后的项目页面可找到入口),维护者响应较快。进阶方向看 docs/webui_extension.md:把 SadTalker 装进 Stable Diffusion WebUI 当扩展用,出片流程会融入你现有的工作流。
【免费下载链接】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),仅供参考