一、项目介绍
V-Express 是腾讯 AI Lab(tencent-ailab)开源的人像视频生成方法,论文标题为「V-Express: Conditional Dropout for Progressive Training of Portrait Video Generation」(arXiv:2406.02511)。官方 README 对其核心思想的描述是:在人像视频生成中,控制信号有强弱之分(文本、音频、图像参考、姿态、深度图等),较弱的音频信号常常被更强的姿态与原图信号淹没,难以生效;直接用弱信号训练又难以收敛。V-Express 通过一系列"渐进式 drop(条件 dropout)"操作平衡不同控制信号,让弱条件也能被逐步激活,从而同时兼顾姿态、参考图与音频三种控制信号生成说话人像视频。
项目由腾讯 AI Lab 发布,权重在 Hugging Face(tk93/V-Express)上公开。官方 README 给出了三种典型推理场景:A 图 + A 说话视频(最佳实践)、A 图 + 任意音频(固定人脸)、A 图 + B 说话视频(人脸重定向)。同时官方已发布训练代码(2024/10/11),并提供 ComfyUI 集成版本(ComfyUI-V-Express)。项目在 GitHub 持续活跃维护(核验日期 2026-11-01)。
二、功能拆解
按官方 README,V-Express 核心能力如下:
| 功能 | 说明 |
|---|---|
| 音频驱动说话人像 | 输入参考人像图 + 音频,生成口型同步的说话视频 |
| 姿态跟随(no_retarget) | 参考图与目标视频为同一人时,直接跟随目标视频姿态(最佳实践) |
| 固定人脸(fix_face) | 只有图和音频时,固定人脸轮廓、仅生成嘴部运动 |
| 人脸重定向(offset_retarget / naive_retarget) | 把 B 的说话视频姿态迁移到 A 的参考图上 |
| 长视频支持 | 2024/06/15 优化显存,官方测试 31 秒音频在 V100 上峰值显存 7956MiB |
| 视频后处理 | 2024/05/29 加入视频后处理,缓解闪烁问题 |
| 三阶段训练 | stage_1 / stage_2 / stage_3,对应 training_configs/stage_*.yaml |
| ComfyUI 集成 | 社区维护的 ComfyUI-V-Express 节点 |
三、官方/GitHub 链接
- GitHub 仓库:https://github.com/tencent-ailab/V-Express
- 项目主页:https://tenvence.github.io/p/v-express/
- 论文(arXiv):https://arxiv.org/abs/2406.02511
- Hugging Face 模型:https://huggingface.co/tk93/V-Express
- ComfyUI 版本:https://github.com/tiankuan93/ComfyUI-V-Express
- 依赖模型:
- sd-vae-ft-mse:https://huggingface.co/stabilityai/sd-vae-ft-mse
- stable-diffusion-v1-5(仅 unet 配置):https://huggingface.co/runwayml/stable-diffusion-v1-5
- wav2vec2-base-960h:https://huggingface.co/facebook/wav2vec2-base-960h
- insightface buffalo_l:https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip
四、环境要求
按官方 README「Installation」一节:
- Python 环境:官方未在 README 中给出 Python 版本约束,但通过
pip install -r requirements.txt安装依赖,建议使用 Python 3.10+ 与 CUDA 11.x/12.x 组合。 - GPU:官方在长视频测试中使用 V100;31 秒音频峰值显存 7956MiB,因此单卡建议 16GB 显存以上。
- 操作系统:官方未明确限制;推理基于 Python 与 Linux 生态。
- 软件依赖:git-lfs(用于从 Hugging Face 克隆权重)、ffmpeg(音频/视频处理)。
- 磁盘:权重约 10GB 量级(含 SD1.5、wav2vec2、buffalo_l、V-Express 自有权重)。
五、部署步骤
步骤 1:克隆代码仓库
官方原文命令:
git clone https://github.com/tencent-ailab/V-Express
cd V-Express
逐段解释:
git clone拉取官方代码;cd V-Express进入项目根目录。
预期输出参考: Cloning into 'V-Express'...,接收对象计数进度。
步骤 2:安装 Python 依赖
官方原文命令:
pip install -r requirements.txt
逐段解释:按 requirements.txt 安装 diffusers、transformers、torch、insightface 等依赖。
预期输出参考: Successfully installed ... 列表。
步骤 3:下载模型权重
官方原文命令:
# download the models
git lfs install
git clone https://huggingface.co/tk93/V-Express
mv V-Express/model_ckpts model_ckpts
mv V-Express/*.bin model_ckpts/v-express
逐段解释:
-git lfs install启用 Git LFS(大文件存储);
-git clone https://huggingface.co/tk93/V-Express把 Hugging Face 上的模型仓库拉到本地;
-mv V-Express/model_ckpts model_ckpts把模型目录移到项目根目录下的model_ckpts/;
-mv V-Express/*.bin model_ckpts/v-express把根目录下的.bin权重文件移到model_ckpts/v-express/子目录。
官方 README 同时说明:也可分别从原始仓库下载 sd-vae-ft-mse、stable-diffusion-v1-5(仅需 unet 配置文件)、wav2vec2-base-960h、buffalo_l 等基础模型,按目录组织到 model_ckpts/ 下。
预期输出参考: git-lfs 拉取大文件进度条;mv 命令无输出。
步骤 4(可选):从目标视频中提取音频与关键点
如果已有一段说话视频(用于 no_retarget 或 retarget 场景),官方原文命令:
python scripts/extract_kps_sequence_and_audio.py \
--video_path "./test_samples/short_case/AOC/gt.mp4" \
--kps_sequence_save_path "./test_samples/short_case/AOC/kps.pth" \
--audio_save_path "./test_samples/short_case/AOC/aud.mp3"
逐段解释:
---video_path输入源说话视频;
---kps_sequence_save_path输出面部关键点序列(.pth);
---audio_save_path输出提取出的音频(.mp3)。
官方同时建议:参考图应裁剪为清晰的方形人脸,分辨率不低于 512×512。
六、配置参数详解
V-Express 推理通过 inference.py 的命令行参数控制,无独立配置文件。
| 参数 | 说明 |
|---|---|
--reference_image_path |
参考人像图路径 |
--audio_path |
输入音频路径(mp3/wav) |
--kps_path |
目标视频的关键点序列(.pth),fix_face 场景不需要 |
--output_path |
输出视频路径 |
--retarget_strategy |
重定向策略:no_retarget(同人)/ fix_face(固定人脸)/ offset_retarget(偏移重定向)/ naive_retarget(朴素重定向) |
--num_inference_steps |
扩散推理步数(官方示例 25) |
--reference_attention_weight |
参考图在模型预测中的权重(官方建议 0.9–1.0) |
--audio_attention_weight |
音频在模型预测中的权重(官方建议 1.0–3.0) |
--save_gpu_memory |
节省显存开关(用于长视频生成) |
官方原文建议:"reference_attention_weight takes the value 0.9-1.0 and audio_attention_weight takes the value 1.0-3.0"。
训练配置:三阶段分别对应 ./training_configs/stage_1.yaml、stage_2.yaml、stage_3.yaml,通过 train_stage.sh 启动。
七、启动与运维
- 推理(场景 1:A 图 + A 说话视频,最佳实践),官方原文:
python inference.py \
--reference_image_path "./test_samples/short_case/AOC/ref.jpg" \
--audio_path "./test_samples/short_case/AOC/aud.mp3" \
--kps_path "./test_samples/short_case/AOC/kps.pth" \
--output_path "./output/short_case/talk_AOC_no_retarget.mp4" \
--retarget_strategy "no_retarget" \
--num_inference_steps 25
- 推理(场景 2:A 图 + 任意音频,固定人脸),官方原文:
python inference.py \
--reference_image_path "./test_samples/short_case/tys/ref.jpg" \
--audio_path "./test_samples/short_case/tys/aud.mp3" \
--output_path "./output/short_case/talk_tys_fix_face.mp4" \
--retarget_strategy "fix_face" \
--num_inference_steps 25
- 推理(长视频,启用显存优化),官方原文:
python inference.py \
--reference_image_path "./test_samples/short_case/AOC/ref.jpg" \
--audio_path "./test_samples/short_case/AOC/v_exprss_intro_chattts.mp3" \
--kps_path "./test_samples/short_case/AOC/AOC_raw_kps.pth" \
--output_path "./output/short_case/talk_AOC_raw_kps_chattts_no_retarget.mp4" \
--retarget_strategy "no_retarget" \
--num_inference_steps 25 \
--reference_attention_weight 1.0 \
--audio_attention_weight 1.0 \
--save_gpu_memory
- 后台常驻 / 开机自启: 官方未提供。V-Express 是命令行推理工具,不是常驻服务;可使用
nohup、tmux等系统通用方式运行(非官方机制)。 - 日志: 推理进度直接输出到终端,无独立日志文件。
- 数据持久化: 权重目录
model_ckpts/与输出目录output/即为持久化位置。
八、实操验证
- 完成环境与权重下载后,直接使用官方自带的测试样例运行场景 2(fix_face,无需 kps):
python inference.py \
--reference_image_path "./test_samples/short_case/tys/ref.jpg" \
--audio_path "./test_samples/short_case/tys/aud.mp3" \
--output_path "./output/short_case/talk_tys_fix_face.mp4" \
--retarget_strategy "fix_face" \
--num_inference_steps 25
-
终端应输出扩散模型推理进度(denoising step 进度条),最终在
./output/short_case/下生成talk_tys_fix_face.mp4。 -
用本地播放器打开该 mp4,应看到参考人像的嘴部随音频同步开合——即部署成功。
-
如需调整嘴部运动强度,按官方建议修改:
python inference.py \
--reference_image_path "./test_samples/short_case/10/ref.jpg" \
--audio_path "./test_samples/short_case/10/aud.mp3" \
--output_path "./output/short_case/talk_10_fix_face_with_weight.mp4" \
--retarget_strategy "fix_face" \
--reference_attention_weight 0.95 \
--audio_attention_weight 3.0
九、故障排查
案例 1:git clone Hugging Face 模型时大文件下载失败
- 报错原文(常见形式):
Error: Failed to fetch LFS object或文件大小异常(几十字节) - 报错原因:未先执行
git lfs install,或网络无法访问 huggingface.co。 - 分步解决:① 先执行
git lfs install;② 确认能访问 huggingface.co;③ 若网络受限,可在 Hugging Face 页面手动下载权重文件后按model_ckpts/目录结构摆放;④ 重新执行 inference.py。
案例 2:OOM(CUDA out of memory)
- 报错原文(常见形式):
CUDA out of memory. Tried to allocate ... GiB - 报错原因:V-Express 同时加载 SD1.5 UNet、audio adapter、wav2vec2 等模型,长音频时显存峰值显著上升。
- 分步解决:① 加
--save_gpu_memory参数(官方长视频示例自带);② 缩短音频长度;③ 降低--num_inference_steps(如 25 → 20);④ 关闭其他占用显存的进程;⑤ 使用官方推荐的 16GB+ 显存 GPU。
案例 3:人脸检测失败 / 关键点提取报错
- 报错原文(常见形式):
FileNotFoundError: ... buffalo_l.zip或RuntimeError: No face detected - 报错原因:官方依赖 insightface 的 buffalo_l 模型;未下载该模型或参考图中人脸不清晰。
- 分步解决:① 从 https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip 下载并解压到
model_ckpts/对应目录;② 按官方 README 提示,将参考图裁剪为清晰方形人脸,分辨率不低于 512×512;③ 重新运行推理。
案例 4:retarget 结果人物不一致 / 嘴型错位
- 报错现象:输出视频中人物姿态或口型与音频对不上。
- 报错原因:官方 README「Important Reminder」明确——当目标视频与参考图不是同一人时,人脸重定向是非常关键的一步;且当前模型在英文上表现更好,其他语言尚未充分测试。
- 分步解决:① 选择姿态更接近参考图的目标视频;② 优先用 no_retarget 场景(同人图+同人视频);③ 中文音频可先用英文音频测试链路是否通畅;④ 调整
--audio_attention_weight到 1.0–3.0 区间。
十、升级、回滚与卸载
升级:
git pull
pip install -r requirements.txt
cd V-Express
git pull
mv model_ckpts model_ckpts_backup # 备份旧权重(可选)
git clone https://huggingface.co/tk93/V-Express
mv V-Express/model_ckpts model_ckpts
逐段解释:代码
git pull;依赖同步更新;权重重新从 Hugging Face 拉取(官方在 Release 章节注明权重更新时间点)。
回滚: 官方未提供专门回滚命令。代码回滚可 git checkout <旧 commit>;权重回滚需从 Hugging Face 模型仓库的历史提交中下载旧版本。
卸载: ① rm -rf V-Express 删除项目目录;② 卸载 conda 环境(如使用);③ 权重目录随项目删除。权重约 10GB,删除前如需复用请先备份。
十一、商用许可合规说明
- 许可证状态: 仓库根目录未提供 LICENSE 文件(核验日期 2026-11-01,main 分支无 LICENSE / LICENSE.md / LICENSE.txt)。
- README 官方声明原文: "The code of V-Express is released for both academic and commercial usage. However, both manual-downloading and auto-downloading models from V-Express are for non-commercial research purposes. Our released checkpoints are also for research purposes only."
- 据此:代码本身官方声明可学术与商用;但权重(checkpoints)仅限非商业研究用途,直接商用部署 V-Express 权重前需联系腾讯 AI Lab 取得授权。
- 用户责任:官方同时声明"Users are granted the freedom to create videos using this tool, but they are obligated to comply with local laws and utilize it responsibly. The developers will not assume any responsibility for potential misuse by users."——即生成内容的合规责任由使用者承担。
- 依赖模型的许可证(SD1.5、wav2vec2、insightface buffalo_l 等)需另行核查。