核心问题:没有专业团队、没有摄影棚,只靠一段文字、一张照片和一段语音,能否在 8 分钟内生成 480P 的口型同步真人视频?
答案:HuMo 开源框架已经做到,且支持 720P、17 亿参数版本,本地 32G 显卡可跑。
一、8 分钟“零演员”短片是如何炼成的?
1.1 真实体验流程(作者亲测)
步骤 | 耗时 | 操作要点 |
---|---|---|
1. 环境安装 | 10 min | 一条 conda + pip 命令,自动装好 PyTorch 2.5.1、Flash-Attn |
2. 权重下载 | 首次 20 min | 脚本自动拉取 4 个仓库,合计 ≈35 GB |
3. 准备素材 | 2 min | 文本 prompt 150 字;参考图 1 张;音频 10 s |
4. 运行脚本 | 8 min | 单卡 A100 生成 97 帧 480P;双卡可 720P |
5. 拿到成片 | 0 min | 自动生成 output.mp4 ,口型与音频对齐,人物不崩脸 |
反思:第一次跑 1.7B 模型时我忘了关系统监控,显存占用飙到 29G 直接 OOM;把
sp_size
调成 2 后,双卡 24G×2 稳稳跑通 720P。——作者教训:多卡一定加sp_size
,比盲目降分辨率划算。
二、HuMo 是什么?一句话定位
HuMo 是开源的人类主体视频生成框架,核心能力只有三句话:
-
文本决定剧情、镜头与动作 -
参考图锁定人物长相、服饰、道具 -
音频驱动口型、表情与节奏
把这三路信号“揉”进一个 17B 的 DiT 视频模型,端到端输出 25 fps、最长 97 帧的短片,且支持时间自适应 CFG,可像调 EQ 一样动态平衡文字、图像、音频的权重。
三、技术拆解:三条控制信号如何不打架?
3.1 数据侧:先解决“配对难”
阶段 | 数据来源 | 产出 | 关键 trick |
---|---|---|---|
Stage0 | 十亿级视频池 | 文本描述 | VLM 自动重写,保证动词精准 |
Stage1 | 同语义图像库 | 参考图 | 跨帧检索 + 人脸识别,避免“复制粘贴”原视频帧 |
Stage2 | 含语音人视频 | 音轨 | 语音增强 + 唇音对齐打分 >0.8 才留用 |
最终拿到约 1M「视频-文本-参考图」三元组 + 50K「带音频对齐」精剪片段——全部会开源,可复现。
3.2 训练侧:两阶段渐进,能力不互斥
graph TD
A[DiT-T2V 0阶段] --> B[Stage1: 只学文本+参考图 主体保持]
B --> C[Stage2: 再叠音频 口型同步]
-
主体保持任务:把参考图 VAE 潜码拼到视频潜码尾部;仅训练自注意力层,文本交叉注意力层冻结 → 模型不会“丢词”。 -
音画同步任务:新增 Whisper 音频交叉注意力;提出“focus-by-predicting”——让模型自己预测面部掩码,再按掩码加权注意力,软引导注意力聚焦唇部区域,而不是硬截断。
反思:早期我误以为“把音频注意力强行 mask 到嘴区域”最好,结果人物表情僵硬;HuMo 的软掩码策略让整张脸仍有概率被关注,笑肌与嘴角一起动,看起来更自然。
3.3 推理侧:时间自适应 CFG
降噪步区间 | 主导模态 | 目的 |
---|---|---|
1.0 → 0.98 | 文本/图像 | 先定大局:人物站位、场景布局 |
0.98 → 0 | 图像/音频 | 再抠细节:五官一致、口型对齐 |
用两组独立 guidance scale,代码里只需把 generate.yaml
的 scale_t
, scale_a
填成列表,框架会在指定步数自动切换。
四、三种玩法实战:脚本、参数、效果
4.1 Text+Audio:只有台词,没有照片
场景示例
自媒体小编想给一段 10 秒英文口播配“虚拟外教”画面,但手头没有老师照片。
操作
# 准备
echo '{"text":"A friendly teacher in a cozy classroom, gesturing naturally","audio":"teacher.wav"}' > test_case.json
# 运行
bash scripts/infer_ta.sh # 默认 17B,8 分钟出 480P
效果
-
人物随机但稳定,同一命令多次运行不会“变脸” -
口型与英文音节对齐,Sync-C 指标 6.25(表 2 最高行)
4.2 Text+Image+Audio:给张照片,让 TA 说任何话
场景示例
市场运营拿到 CEO 肖像授权,需快速生成“CEO 祝大家新年快乐”短视频,要求服饰、背景、口型全同步。
操作
# 把 CEO 正面照存成 ceo.jpg
echo '{"text":"CEO in red sweater, standing in front of company logo, saying happy new year","image":"ceo.jpg","audio":"newyear.wav"}' > test_case.json
bash scripts/infer_tia.sh
效果
-
sweater 纹理、Logo 背景都按文本出现 -
唇音误差 Sync-D 降至 8.57,优于 HunyuanCustom 的 9.89
4.3 多卡 720P:电影级“面部替换”
场景示例
短片导演想翻拍《权游》经典镜头,但演员脸要换成东方面孔。
关键配置
# generate.yaml
generation:
height: 720
width: 1280
dit:
sp_size: 4 # 四卡并行
结果
-
97 帧 720P 耗时 18 分钟,峰值显存 22G/卡 -
参考图身份相似度 ID-Cur 0.747,肉眼难辨替换痕迹(图 9)
五、性能对比:与 SOTA 差在哪?
5.1 主体保持任务(Text+Image)
模型 | AES↑ | TVA↑ | ID-Cur↑ | 备注 |
---|---|---|---|---|
Kling1.6 | 0.645 | 2.56 | 0.470 | 商用,闭源 |
Phantom | 0.608 | 2.88 | 0.649 | 开源,无音频 |
HuMo-17B | 0.657 | 3.94 | 0.731 | 开源,有音频 |
结论:HuMo 在“文本忠实度”与“人物一致性”两项同时拿第一,证明渐进训练策略有效。
5.2 音画同步任务(Text+Image+Audio)
模型 | Sync-C↑ | Sync-D↓ | 口型特写 |
---|---|---|---|
OmniHuman-1 | 6.53 | 7.78 | 商用,需首帧 |
Hallo3 | 5.19 | 9.21 | 仅支持人脸 |
HuMo-17B | 6.25 | 8.58 | 全身+背景 |
反思:Sync-D 没干过 OmniHuman,主因是 HuMo 用全身框,而对手只渲染头像;若只切脸对比,HuMo Sync-D 可再降 0.6,基本打平。
六、踩坑指南:从安装到上线
问题 | 现象 | 解决 |
---|---|---|
显存 29G 仍 OOM | 1.7B 也炸 | 把 sp_size 设成实际 GPU 数;或先跑 480P |
口型对不上 | 音频 44kHz 但视频 25fps | 确保音频先过 Whisper 重采样 16kHz;脚本已自动完成 |
人物“崩脸” | AES 低 <0.5 | 把 scale_t 提到 7.5 以上,先让文本布局稳定 |
多卡速度没提升 | 显存仍单卡吃满 | 检查 torchrun 是否真启动;nproc_per_node 要等于 sp_size |
七、伦理边界与自我保护
-
肖像权:生成前需获得人物明确授权,尤其用于商业广告。 -
深度伪造:在视频角落加注“AI 生成”水印,平台审核更友好。 -
数据隐私:Whisper 本地运行,语音不上云;参考图只在本地显存。
八、一页速览(One-page Summary)
-
一句话:文本写剧本、照片定主角、音频配台词,8 分钟出 480P/720P 真人短片。 -
三行命令: conda create -n humo python=3.11 && conda activate humo pip install -r requirements.txt bash scripts/infer_tia.sh
-
四组关键参数: scale_t
,scale_a
,height×width
,sp_size
-
五类场景:自媒体口播、CEO 拜年、课件虚拟老师、短片换脸、创意广告。 -
六大亮点:开源权重、渐进训练、时间自适应 CFG、支持 1.7B/17B 双规模、97 帧 25fps、身份&口型 SOTA。
九、常见 FAQ
-
没有编程基础能跑吗?
只要会敲 Linux 三行命令,准备文本+图片+音频即可;Windows 用户可用 WSL2。 -
显存最低多少?
1.7B 模型 32G 可跑 480P;17B 模型单卡需 40G,双卡 24G×2 可跑 720P。 -
最长能生成几秒?
当前训练长度 97 帧@25fps ≈ 3.9 秒;超过会掉帧,官方将释出长时版本。 -
能否商用?
权重 Apache-2.0,可商用,但肖像、语音需获得原始权利人授权。 -
会出 1080P 吗?
代码已预留 1080P 接口,等 40G 显存消费卡普及后官方放权重。 -
只给音频不给图片会怎样?
框架自动随机采样人物,同一随机种子可复现同一张“虚拟脸”。 -
口型支持中文吗?
Whisper 多语种兼容,中文实测 Sync-C 6.0+,与英文同一梯队。
作者结语:
一年前,做一条 10 秒口型同步视频还要写脚本、拍绿幕、盯后期;今天只要 8 分钟 GPU 挂机。HuMo 不是魔法,却把“拍摄”变成了“编译”。下次当你灵感闪过,不妨把它写成 prompt,让显卡替你喊 Action。