跳转至

Hierarchical Codec Diffusion for Video-to-Speech Generation

会议: CVPR2026
arXiv: 2604.15923
代码: https://github.com/Jiaxin-Ye/HiCoDiT (有)
领域: 多模态生成 / 语音合成 / 离散扩散
关键词: 视频转语音(VTS), RVQ Codec, 离散扩散, 语音层级先验, AdaLN

一句话总结

HiCoDiT 把"哑视频→语音"这件事重新拆成沿 RVQ 离散 token 层级逐层生成的掩码扩散任务——低层 token 负责内容与音色、由唇动和身份引导,高层 token 负责韵律、由表情通过双尺度 AdaLN 调制,从而在 LRS2/LRS3 上跨数据集零训练就拿下自然度、可懂度和唇同步的领先成绩。

研究背景与动机

领域现状:Video-to-Speech(VTS) 想从一段没有声音的人脸视频里推断并合成出与口型对齐的语音,应用在默片配音、失声者辅助交流、噪声/隐私敏感场景。主流做法是"表征对齐"——把视觉特征对齐到语音的语义内容(NaturalL2S)、说话人身份(Face2Speech)、情感韵律(FTV)上,再喂给生成模型。

现有痛点:视觉和声学之间存在信息不对称——视觉特征稀疏,难以承载语音那种稠密表征。更关键的是,现有方法几乎都把语音当成一个扁平的整体表征,把视觉特征一股脑注入进去,完全忽略了语音本身"从粗到细"的层级结构(粗的说话人语义 → 细的韵律细节)。这种忽略反过来加剧了模态间的信息不对称。

核心矛盾:语音并不是均质的——不同属性(内容、音色、韵律)天然分布在不同的抽象层级上;而视觉里的不同线索(唇动、人脸身份、表情)也对应不同属性。把它们硬塞进同一个整体表征,等于让"唇动"去干扰"韵律"、让"表情"去污染"内容",对齐自然次优。

本文目标:找到一种层级化的视觉条件注入机制,让每种视觉线索只去 refine 它该负责的那一层语音 token。

切入角度:作者对 RVQ codec 做了量化分析(论文 Figure 2)——RVQ 把语音残差式地编进 12 层 VQ token,低层(VQ 1-2)主要贡献语义内容(+30.35%)和音色(+20.10%),高层(VQ 2-12)才把韵律补上来(+10.85%)。这就给出一条天然的层级先验:低层 token ↔ 说话人语义,高层 token ↔ 抽象韵律。

核心 idea:用"离散语音 token 的层级先验"作为桥梁——把 VTS 写成层级化掩码 token 预测,让唇动+身份去精修低层 token、让表情去调制高层 token,在离散扩散框架里第一次显式注入语音层级结构。

方法详解

整体框架

HiCoDiT 接收一段哑视频 \(V\),目标是合成与视觉对齐的高保真语音。它把语音先用 RVQ codec 离散化成 12 层 token,按层级切成低层 \(x^{low}=x^{r_1:r_2}\) 和高层 \(x^{high}=x^{r_3:r_{12}}\);同时从视频里解耦出三种视觉特征——唇动 \(c_{lip}\)、身份 \(c_{id}\)、情感 \(c_{emo}\)。然后用一个掩码离散扩散 Transformer 当 score network:低层 block 吃唇动+身份生成内容/音色 token,高层 block 吃表情生成韵律 token。最后 12 个线性 score head 输出 concrete score,驱动反向 unmasking,把恢复的 token 交给 codec decoder 解码成语音。整条管线是"视觉解耦 → 按层级分流 → 分块条件生成 → 解码"的单向 pipeline。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["哑视频 V"] --> B["解耦视觉条件<br/>唇动/身份/情感"]
    S["语音 RVQ 12 层 token"] --> H["语音层级先验<br/>低层=内容音色<br/>高层=韵律"]
    H --> L["低层 Block ×8<br/>唇动+身份引导"]
    H --> G["高层 Block ×8<br/>双尺度 AdaLN 调韵律"]
    B -->|唇动 cid 拼接/AdaLN| L
    B -->|表情 cemo| G
    L --> Y["12 个 Score Head<br/>反向 unmasking"]
    G --> Y
    Y --> Z["Codec Decoder<br/>合成语音"]

关键设计

1. 语音层级先验:把"从粗到细"的 RVQ 结构当成对齐的脚手架

痛点是现有 VTS 把语音当扁平整体,导致视觉条件无差别注入。作者实测 RVQ codec 的逐层解码贡献:低层 token(VQ 1-2)集中改善语义内容(+30.35%)与音色相似度(+20.10%),韵律质量则要靠高层(VQ 2-12)才补上来(+10.85%)。基于这条观测,论文把 12 层 token 切成低层 \(x^{r_1:r_2}\)(内容+音色)和高层 \(x^{r_3:r_{12}}\)(韵律),并据此规定:唇动/身份这类与内容音色强相关的视觉线索去 refine 低层,表情这类承载情感韵律的线索去调制高层。这一刀切是后面所有解耦条件注入的依据——它把"视觉该对齐到哪层语音"从经验拍脑袋变成了由 codec 层级直接指定

2. 解耦视觉条件:三个 adapter 各管一种语音属性

视觉里的唇动、人脸身份、表情本是混在一起的,硬注入会互相干扰。HiCoDiT 用三个独立 adapter 把它们解耦后分别对齐:唇动用 AV-HuBERT 取末层隐状态(它编码了最判别性的视听语义),经 MLP 投影成 \(c_{lip}\) 去管内容;身份用 ArcFace 提脸部身份特征投影成 \(c_{id}\),并用 \(\ell_1\) 距离把它对齐到 GE2E 语音说话人嵌入,从而把"脸"映射到"音色";情感用强表情识别模型 Poster2 逐帧预测情感类别,再在 0.5 秒窗口上做时间平滑(抑制身份偏置抖动),得到 \(c_{emo}\) 去管韵律。三路特征各走各的注入通道,正好对应设计 1 切出的低/高层 token

3. 层级化掩码 token 预测的双块结构:用两类条件机制匹配两类信号

针对"不同视觉信号粒度不同",HiCoDiT 在掩码离散扩散(基于 SEDD 的 DSE 训练目标)框架下用两种互补的条件机制:对帧级同步的细粒度信号(唇动),直接把掩码低层特征 \(m^{low}_t\)\(c_{lip}\) 沿通道拼接再过线性层做时序融合;对类别式属性(身份、情感),用 AdaLN 注入。低层 block(×8)负责内容/音色 token,高层 block(×8)负责韵律 token,前向过程把 token 按 SEDD 掩码、反向过程用 Euler 采样 64 步迭代 unmask。这种"按层级配条件机制"避免了用同一种注入方式去硬套粒度迥异的信号

4. 双尺度自适应实例层归一化(Dual-scale AdaLN):同时抓全局音色和局部韵律抖动

普通 DiT 的 AdaLN 只在通道维做归一化,能注入全局风格却抓不住韵律是随时间动态变化的。HiCoDiT 在高层 block 引入双尺度 AdaLN:通道维 MLP 用情感+时间特征预测通道级缩放/平移 \(\gamma_{emo,c}, \beta_{emo,c}\) 建模全局发声风格;时间维 MLP 再用情感+时间特征预测时间级缩放 \(\gamma_{emo,t}\) 捕捉局部韵律动态。两者复合作用:

\[\underbrace{\gamma^i_{emo,t}\otimes \mathbf{1}_{25}}_{\text{时间级}}\cdot\Big[\underbrace{(1+\gamma^i_{emo,c})\cdot\frac{h_t-\mu(h_t)}{\sigma(h_t)}+\beta^i_{emo,c}}_{\text{通道级}}\Big]\]

其中 \(\otimes\) 是 Kronecker 积,\(\mathbf{1}_{25}\)\(L_{emo}=L/25\) 的时间参数上采样对齐到 50 Hz 隐特征。身份条件则用单尺度通道版 AdaLN(\((1+\gamma^i_{id})\cdot\frac{h_t-\mu}{\sigma}+\beta^i_{id}\))。这一设计让"情感"既塑造整体音色又逐帧调节韵律起伏,正是表达力提升的来源

损失函数 / 训练策略

总损失 \(L_{total}=L_{score}+\lambda L_{id}\),其中 \(\lambda=100\)\(L_{score}=\sum_{i=1}^{12}L_{DSE}(x^{r_i},t,c)\) 是对全部 12 层 RVQ token 求和的多级 DSE(denoising score entropy)损失;\(L_{id}=\ell_1(c_{id},c_{GE2E})\) 把视觉身份嵌入对齐到 GE2E 语音嵌入以强化说话人一致性。训练用 predictor-free guidance:每个条件以 10% 概率置空、并有 10% 样本全置空。训练时用真值声学特征替换 \(c_{id}/c_{emo}\) 保证稳定,推理时只用视觉特征。RVQ codec 来自 MaskGCT(12 层、码本 1024),低/高层 block 各 8 层、通道 768、12 头,AdamW、lr 1e-4、batch 32、200k 步。

实验关键数据

主实验

在 VoxCeleb2(261.5 小时、169k 条、3438 说话人)上训练,零训练直接在 LRS3 / LRS2 两个 in-the-wild 数据集上测试。下表为 LRS3 仅视频引导(V-only)结果:

方法 来源 WER↓ DNSMOS↑ UTMOS↑ MCD↓ LSE-C↑ EmoAcc↑ SpkSim↑
AlignDiT ACM MM'25 31.37 3.24 3.76 10.02 6.95 76.11 0.5597
FTV CVPR'25 30.37 3.22 3.99 10.54 7.08 73.19 0.5981
HiCoDiT (V) - 29.41 3.50 3.84 9.62 7.15 79.41 0.5678
HiCoDiT (A+V) - 28.98 3.44 3.80 8.69 7.10 77.08 0.6715

LRS2 上同样领先 DNSMOS(3.35 vs FTV 3.11)、LSE-C(7.95 vs 7.71)、LSE-D(6.17 vs 6.35),WER(39.99) 略逊 FTV(38.09)。OOD 真实电影数据(160 句/56 说话人)上 WER 58.7 远好于 EmoDubber 88.3 与 AlignDiT 80.8,鲁棒性突出。主观评测 MOSnat 3.17、MOSsyn 3.50 均第一,A/B 测试对 AlignDiT 57.0% 偏好、对 FTV 52.1%。

消融实验

配置(LRS3) WER↓ DNSMOS↑ EmoAcc↑ SpkSim↑ 说明
HiCoDiT (full) 29.41 3.50 79.41 0.5678 完整模型
w/o 层级建模 30.65 3.36 76.98 0.5652 塌成单一模块,视觉无差别注入
w/o 双尺度 AdaLN 29.60 3.45 78.55 0.5621 退回 utterance 级情感
w/o GE2E \(L_{id}\) 29.38 3.41 74.47 0.3410 SpkSim 崩到 34.10%
w/o Poster2(换 Poster) 29.41 3.50 76.29 0.5528 EmoAcc 79.41→76.29

关键发现

  • 层级建模是地基:去掉它(把多级表征塌成单一模块、视觉跨所有 token 注入)所有指标全面下滑,WER 30.65、DNSMOS 3.36、EmoAcc 76.98,印证"视觉属性应对齐到承载匹配内容的特定层 token"。
  • GE2E 身份损失不可或缺:去掉后说话人相似度从 56.78% 暴跌到 34.10%,而 WER 几乎不变——说明它专门负责从脸部线索里抽隐式音色,与内容解耦得很干净。
  • 双尺度 AdaLN 主要吃表达力:换成池化后的整句情感,EmoAcc 仅微降但其余指标明显下滑,说明逐帧时间维归一化对建模韵律动态确实关键。
  • 诚实的弱点:仅视频时 SpkSim(0.5678) 不及 FTV(0.5981),作者归因于训练数据说话人多样性有限;一旦引入语音作身份引导,SpkSim 跃到 0.6715 全场最高,显示强语音克隆能力。

亮点与洞察

  • 把"指标分析"直接变成"架构先验":论文先量化 RVQ 各层对内容/音色/韵律的贡献占比(30.35%/20.10%/10.85%),再据此切层、分配视觉条件——这种"先测量层级、再据层级设计"的思路很可迁移到任何残差量化表征(图像 RVQ、视频 token)的条件生成上。
  • 离散扩散 + codec 层级的组合让 VTS 第一次摆脱连续 mel 谱建模,既享受 codec 强重建力(频谱更干净、信噪比更高),又规避连续扩散的计算低效。
  • 两类条件机制对两类信号:帧级同步信号用通道拼接、类别式属性用 AdaLN——这种"按信号粒度选注入方式"的工程判断,值得在任何多条件生成里照搬。
  • 双尺度 AdaLN 把"全局风格 vs 局部动态"拆成通道维和时间维两条归一化,是个干净的、可复用到任意需要"既定风格又要时变细节"的调制场景的 trick。

局限与展望

  • 作者承认:说话人相似度受训练数据多样性掣肘,仅视频时不及 FTV;表达力(MOSexp 2.88)也略逊 FTV,作者认为更多样的说话人数据可缓解。
  • 依赖一串现成强编码器(AV-HuBERT、ArcFace、Poster2、GE2E、MaskGCT codec),任一环节的领域偏移都会传导到最终语音;且层级先验是基于这个特定 codec 测出来的,换 codec 是否仍是"VQ1-2 管内容"需重新验证。
  • 层级切分点(r2/r3 之间)是按 Figure 2 的统计经验定的,偏硬;是否对所有语种/采样率都最优、能否学习自适应的切分边界,论文未探讨。
  • 64 步 Euler 采样 + 12 个 score head 的推理开销相对自回归 codec TTS 仍需评估,论文未给端到端延迟数字。

相关工作与启发

  • vs FTV (CVPR'25): FTV 用 flow matching + 层级视觉编码器,把视觉特征逐步注入连续 mel 谱空间;本文在离散 token 空间做扩散,且层级来自语音 token 自身而非视觉编码器。FTV 在 UTMOS/SpkSim 上仍有优势(数据多样性),但 HiCoDiT 在 DNSMOS/WER/EmoAcc/同步性上更强。
  • vs AlignDiT (ACM MM'25): 同为多模态对齐扩散 transformer,但 AlignDiT 不显式利用语音层级;HiCoDiT 在几乎所有指标和 A/B 偏好(57.0%)上胜出。
  • vs VoiceCraft-Dub: 它把预训练自回归离散 TTS 适配进视觉上下文,但模糊了语音表征的层级结构;HiCoDiT 是从零训练、显式集成层级先验的离散扩散,首次把 speech hierarchy prior 引入离散扩散 VTS。
  • vs 层级 TTS(Lee et al. / Hsu et al. 的层级 VAE): 它们设计纠缠的条件去建模层级语音属性;本文直接利用 token 自身的内在层级,做到解耦条件,这是和先前层级语音生成最本质的区别。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ 首次把离散语音 token 的层级先验显式引入扩散式 VTS,且层级来自对 RVQ 的量化分析而非拍脑袋。
  • 实验充分度: ⭐⭐⭐⭐ LRS2/LRS3/OOD 电影三套数据 + 主客观 + 4 组消融齐全,唯说话人多样性弱点诚实暴露。
  • 写作质量: ⭐⭐⭐⭐ 动机—先验—设计逻辑链清晰,公式与图配合好;离散扩散预备知识稍重。
  • 价值: ⭐⭐⭐⭐ 给残差量化表征的条件生成提供了"先测层级再设计"的范式,默片配音/辅助交流落地潜力明确。