Ex-Omni-2D
论文信息
- 标题:Ex-Omni-2D: Expressive Omni-Modal Dialogue Models with Native Visual Presence
- 作者:Haoyu Zhang, Zhipeng Li, Xiaoying Tang, Tianshu Yu, Yiwen Guo
- 单位:The Chinese University of Hong Kong, Shenzhen;LIGHTSPEED
- 开源:https://github.com/logo-cuhksz/Ex-Omni-2D
今天的全模态(omni-modal)对话系统已经能做到一件很酷的事:你对着麦克风说一句话,它能理解你的语音和表情,然后用自然的口语回答你——就像跟真人在对话一样。Qwen2.5-Omni #DBLP:journals/corr/abs-2503-20215、VITA #fu2026vita、Mini-Omni2 #xie2024mini、Moshi #DBLP:journals/corr/abs-2410-00037 都是这条路线上的代表。
但仔细想想就会发现一个问题:这些 AI 只有声音,没有形象。它们在跟你对话的时候,你看到的是一个静止的图标或一段文字,而不是一张会随着对话内容变化表情的脸。换句话说,它们的回复是 visually disembodied(视觉上无实体的)。
与此同时,说话头像(talking avatar)领域的技术已经非常成熟。echomimic #chen2024echomimic、OmniAvatar #DBLP:journals/corr/abs-2506-18866、StableAvatar #DBLP:journals/corr/abs-2508-08248 等方法可以从一段语音驱动一张参考照片做出逼真的口型和表情。但它们的问题是:语音从哪来?这些方法假设你已经准备好了一段完整的语音文件——在对话场景中,这意味着必须先等 LLM 生成回复文本,再交给 TTS 合成语音,最后才轮到 avatar 动画。更关键的是,avatar 应该做什么表情、摇头还是微笑,这些视觉意图完全由外部手动指定,对话模型对此一无所知。
联合音视频生成(joint audio-video generation)走的是另一条路——用一个统一的或交互的生成过程同时产出音频和视频。UniVerse-1 #Universe_1、UniAVGen #zhang2026uniavgenunifiedaudiovideo 在这方面取得了很好的进展,但它们通常由 prompt 或 reference signal 驱动,而不是响应一个多模态用户查询。
Ex-Omni-2D 提出的方案可以概括为:对话模型先规划视觉意图(VTP),然后生成语音单元,最后用同一个语音单元同时驱动语音合成和视频生成。它解决了三个核心问题:
- 视觉意图从哪来 —— Visual Thought Plan (VTP),一个结构化的五字段描述(首帧场景、整体场景、情绪、运动风格、动作细节),由 LLM 在生成回复文本的同时自动产生,不需要人工干预。
- 语音和视频怎么对齐 —— 用 Qwen3-TTS 的 16-codebook 原生语音单元作为共享声学时序接口。同一个单元序列:走 codec decoder → 波形语音;走适配器 → 帧对齐的视频条件。
- 推理太慢怎么办 —— 全序列 Teacher (50-step diffusion) 做主要视频生成,再蒸馏成一个 4-step block-causal Streaming Student,带 Prefix Streaming 机制防止长序列累积退化。
最终系统在 4 卡 GPU 上达到 E2E RTF 1.293(4-step Student),在 OmniCharacter 多轮对话上取得 3.283 的综合评分,视频同步质量 Sync-C 4.95。全文接下来逐层拆解这套方案。
要在对话中生成同步的视频回复,面临三个层次的困境。
第一层:数据困境。 最直接的方案是收集 "用户提问 → 回复文本 + 回复语音 + 回复视频" 的四元组数据,然后训练一个端到端的模型。但这样的数据几乎不存在——谁会给几十万条每一条都配上一段精心录制的回复视频?
第二层:接口困境。 退一步说,即使我们有文本和语音,怎么把它们传给视频生成器?最直接的做法是把 LLM 的高维 hidden states 直接 map 到 video generator。但这种方式是模型特化的——换一个 LLM 或者换一个 video generator,接口就得重写。而且 hidden states 是连续的、高维的、没有明确时序对齐的,很难作为稳定的跨模型接口。
第三层:推理困境。 即使前两个问题都解决了,当前的视频扩散模型(如 Wan2.1)做一次 50-step denoising 需要很长时间。在 Teacher 配置下,E2E RTF 高达 26.9——生成 1 秒视频需要将近 27 秒的计算时间,完全无法用于交互场景。
Ex-Omni-2D 的方案是:用 VTP 和语音单元做中间接口,把原本需要四元组数据的问题拆成三个可以独立训练的模块。
- 对话模块(VTP + 回复文本)← 用 InstructS2S-200K 和 OmniCharacter 对话数据训练
- 语音模块 ← 用 ASR + TTS 数据训练
- 视频模块 ← 用 SpeakerVid 视频数据(自动标注 VTP + teacher-force 语音单元)训练
推理时,三个模块按顺序串联:对话模型产生 VTP 和回复文本,语音模型据此生成语音单元,视频模型根据语音单元和 VTP 生成同步视频。VTP 和语音单元就是"缝合"三条路径的接口。
3.1 对话模型与 VTP
对话 backbone 是 Qwen3-8B #yang2025qwen3,参考图像通过 Qwen3-VL-2B 的视觉塔编码后投影到 LLM 空间。对话模型遵循一个结构化的助手指令协议:
其中 <thinking> 块包含 VTP,<response> 块包含面向用户的回复文本。原子边界 token 保证两条路径可以独立路由。
VTP 包含五个字段:
- first_frame_scene:首帧场景(仅描述参考图像)
- scene:整体场景和氛围
- emotion:情绪标签(如 neutral, happy, angry, sad,允许箭头表示变化)
- movement_style:运动风格(如 "formal and restrained", "energetic and theatrical")
- motion_description:具体身体动作描述
VTP 是一个纯文本接口,因此可以直接用自回归语言模型损失监督,并且可以被任何文本编码器理解——不需要在 LLM 和 video generator 之间建立定制的跨模型映射。VTP 被视频生成器的文本编码器编码为语义条件 \(\mathbf{L}^{\mathrm{vtp}} = E_{\mathrm{text}}(\mathbf{p})\)。
3.2 语音生成与共享声学接口
语音生成器初始化为 Qwen3-TTS-0.6B #hu2026qwen3ttstechnicalreport,以回复状态的 hidden states、回复 token 和参考语音为条件,预测多码本声学单元序列:
其中 \(C=16\) 是 Qwen3-TTS 的声码本数量。第一个码本自回归生成,其余 15 个残差码本逐帧细化声学细节。
这就是 Ex-Omni-2D 的核心接口设计:同一个 \(\mathbf{U}\) 序列走两条路:
- 走语音路径:codec decoder → 波形语音
- 走视频路径:轻量适配器 \(f_{\mathrm{aud}}\) 聚合所有 16 个码本的 embedding → 帧对齐的视频条件
适配器的计算方式:
语音单元以 12.5 Hz 产生(每 0.08 秒一个 acoustic frame),视频以 25 FPS 渲染。因此每个声学特征重复对应两帧视频:
这种接口设计的好处:
- 不需要等完整波形生成完再进行重新编码(waveform → wav2vec 需要 0.051 秒,而 16-codebook 接口只需要 0.011 秒)
- 固定的时序率(12.5 Hz)提供了对视频帧的显式对齐
- 解耦训练:语音模块用语音和对话数据训练,视频模块用 avatar 视频数据训练
3.3 全序列 Teacher 视频生成器
视频生成器基于 Wan2.1-T2V-1.3B #wan2025,并用 OmniAvatar-1.3B 的 LoRA 权重初始化 #DBLP:journals/corr/abs-2506-18866。它接收三个条件:
- \(\mathbf{R}^{\mathrm{ref}}\):参考图像的 3D VAE 潜码(外观信息)
- \(\mathbf{A}\):帧对齐的声学条件(语音驱动运动)
- \(\mathbf{L}^{\mathrm{vtp}}\):VTP 语义条件(场景/情绪/运动风格)
训练采用 flow matching:对真实视频 \(V^{\ast}\) 的 VAE 潜码 \(\mathbf{x}_0\) 加噪 \(\mathbf{x}_{\sigma} = (1-\sigma)\mathbf{x}_0 + \sigma\boldsymbol{\epsilon}\),网络预测 \(\boldsymbol{\epsilon} - \mathbf{x}_0\)。语音特征按照 OmniAvatar 的方式注入 DiT blocks 2-15:在注入层 \(\ell\),对齐后的特征在潜码空间网格上平铺 → patchify → 加到视频 token 上:
3.4 Prefix-Streaming Student
Teacher 用双向时间注意力和 50-step denoising,质量虽好但太慢(RTF 26.9)。Ex-Omni-2D 把它蒸馏成一个 block-causal 的 Streaming Student,核心在于 Prefix Streaming 机制。
Student 采用 AnyFlow #gu2026anyflow 的双时间 flow map 和在策略分布匹配目标进行蒸馏。其核心创新在于窗口构造:
初始窗口:参考潜码 + 3 个新生潜码。后续窗口:上一窗口的最后一个清洁潜码(detached)作为 1 个 prefix + 3 个新生潜码。关键设计:
- Stop-gradient (sg):prefix 在每次 denoising 前重新注入,不允许随新生成帧漂移
- Clean-only cache:中间 denoising forward 读取但不写入 cache,只有完成后的清洁 chunk 才更新 cache,防止瞬时噪声污染后续 chunk
- 去重:prefix 位置在 attention 的 key/value 中被移除,每窗实际前进 3 个新潜码位置(12 帧视频)
每 6 个声学帧(6 × 0.08s = 0.48s)触发 12 帧视频生成。语音和视频以 0.48 秒为 block 对齐,不需要等待任一模态完成。
Ex-Omni-2D 的训练分四个阶段,每个阶段只更新当前任务需要的模块,充分利用异构数据源:
Stage 1:语音接口对齐(8 GPU)
- 数据:~800K ASR 例子(LibriSpeech 300K + Emilia 500K)+ 1M TTS 例子(Emilia 文本经 Qwen3-TTS 合成)
- 更新:Speech Projector + Speech Generator(LLM frozen)
- 目的:建立语音输入输出接口
Stage 2:全模态响应适应(8 GPU)
- 数据:InstructS2S-200K #DBLP:conf/iclr/FangGZMZ025 + OmniCharacter #zhang-etal-2025-omnicharacter
- 更新:LLM + Speech Projector + Speech Generator
- 目的:让 LLM 学会 VTP
<thinking>+<response>协议
Stage 3:Avatar 视频实现(24 GPU)
- 数据:~140K SpeakerVid #zhang2025speakervid 视频片段(经过 7 阶段过滤)
- 更新:全序列视频扩散模型
- 数据处理:每个片段 → 首帧做参考帧 → Qwen3-VL-2B 自动标注 5-field VTP → Qwen3-TTS Tokenizer 对齐语音 → 完整训练记录
Stage 4:Student 蒸馏(40 GPU)
- Phase I(6K steps):学习 source-destination flow map
- Phase II(3K steps):在策略分块 Student rollout + distribution matching
| 配置项 | Stage 1 | Stage 2 | Stage 3 | Stage 4 Ph.I | Stage 4 Ph.II |
|---|---|---|---|---|---|
| GPU 数 | 8 | 8 | 24 | 40 | 40 |
| Batch / GPU | 16 | 1 | 1 | 1 | 1 |
| 训练预算 | 1 epoch | 2 epochs | 10K steps | 6K steps | 3K steps |
| LLM LR | —(frozen) | 1×10⁻⁶ | —(frozen) | — | — |
| Projector LR | 1×10⁻³ | 2×10⁻⁵ | — | — | — |
| Generator LR | 1×10⁻⁴ | 2×10⁻⁵ | 2×10⁻⁵ | 5×10⁻⁵ | 2×10⁻⁶ |
| Schedule | Cosine + 30% warmup | Cosine + 10% warmup | Constant | 1K warmup | No warmup |
表 1:四阶段训练配置一览
损失函数:三个子损失分别在各自通路启用时叠加:
其中 \(\mathcal{L}_{\mathrm{lm}}\) 是 VTP + response 的自回归语言损失,\(\mathcal{L}_{\mathrm{sp}}\) 是 16 码本语音生成交叉熵,\(\mathcal{L}_{\mathrm{vid}}\) 是 flow matching 的 MSE:
推理时的完整流程:
- 用户查询(语音/文本)+ 参考图像 + 参考音频 → 系统
- Qwen3-8B 生成 VTP(0.193s 首 token, 1.458s 完成)+ 回复文本(1.470s 首 token)
- Qwen3-TTS-0.6B 根据回复状态生成 16-codebook 语音单元(2.250s 首单元)
- codec decoder 解码单元为波形语音(2.308s 首可听语音)
- 同批次语音单元通过适配器 → 帧对齐的视频条件
- Streaming Student 逐块生成视频:每 6 个声学帧(0.48s)→ 12 帧视频
- 首可播放视频块到达时间:3.142s
在 4-GPU 配置下(LLM / 语音生成 / 视频生成各分配到不同 GPU),4-step Student 的 E2E RTF 为 1.293(FPS 26.5)。首语音和首视频之间有约 0.8 秒的间隔,这部分是 VTP 完成后语音合成 + 首块视频生成的时间。
| 模型 | Denoising 步数 | SC↑ | IQ↑ | DD↑ | Sync-C↑ | FPS↑ | E2E RTF↓ |
|---|---|---|---|---|---|---|---|
| Teacher | 50 | 94.62 | 67.31 | 72.00 | 4.95 | 1.4 | 26.917 |
| Student | 2 | 93.33 | 52.70 | 9.50 | 3.51 | 39.5 | 1.201 |
| Student | 4 | 93.65 | 57.40 | 32.00 | 3.90 | 26.5 | 1.293 |
| Student | 8 | 93.91 | 61.15 | 48.00 | 4.00 | 15.6 | 1.932 |
表 2:质量-效率 Trade-off(4 GPU, 400×720/720×400)
4-step 是一个实用的质量-效率平衡点:DD 32(相对于 2-step 的 9.5 有显著提升),同时保持了 26.5 FPS 的渲染速度和 1.293 的 E2E RTF。
6.1 视频生成质量
在 VoiceBench 的 CommonEval 200 条语音查询上,Ex-Omni-2D 与三种范式(纯视频生成、联合音视频生成、基于对话的全模态回复生成)的 8 个方法对比:
| 方法 | 对话 | 语音 | SC↑ | IQ↑ | DD↑ | Sync-C↑ |
|---|---|---|---|---|---|---|
| echomimic | ✗ | ✗ | 97.87 | 54.37 | 74.00 | 4.82 |
| OmniAvatar-1.3B | ✗ | ✗ | 97.74 | 66.65 | 15.50 | 5.64 |
| UniAVGen | ✗ | ✓ | 96.07 | 68.02 | 55.00 | 4.15 |
| Ex-Omni-2D Teacher | ✓ | ✓ | 94.62 | 67.31 | 72.00 | 4.95 |
表 3:音视频生成能力对比(部分行)
注意这不是一个公平的同接口对比(不同方法支持不同的输入/输出接口列),但可以清晰地看到:Teacher 在做对话回复的同时生成视频,而纯视频方法(echomimic 等)只做渲染。Teacher 的 Sync-C 4.95 略低于 OmniAvatar(5.64)、略高于 UniAVGen(4.15),在多任务负载下取得了可接受的同步质量。
6.2 多轮对话质量
在 OmniCharacter 基准的 400 段多轮对话上,Ex-Omni-2D 在 12 个维度中的 6 个取得最高分,3 项会话能力指标(Fluency 3.812, Coherency 4.100, Consistency 3.902)均为已报告方法中的最优。综合平均分 3.283,接近其 Qwen3-8B backbone 的 3.264 — VTP 训练引入的额外 token 消耗对语言能力的影响很小。
6.3 语音问答能力
在 VoiceBench 的 Speech QA 测试中,Ex-Omni-2D 在 AlpacaEval(4.28)、CommonEval(3.71)和 BBH(58.70)上均仅次于 Qwen2.5-Omni-7B。Second-best 的位置是合理的——作为同时生成 VTP + 回复 + 语音 + 视频的系统,牺牲少量纯问答能力换取多模态输出能力。
6.4 Prefix Streaming 消融
Prefix Streaming vs 无前缀 causal cache 的对比:
- SC: 93.65 vs 92.85 (+0.80)
- IQ: 57.40 vs 55.18 (+2.22)
- Sync-C: 3.90 vs 3.69 (+0.21)
- 全局 DINO 分析:16-chunk 的主体一致性从 0.9251 提升到 0.9319
- 一致性误差斜率从 0.00783 降到 0.00599 per chunk
- 首尾一致性误差降低 21.4%(0.1005 → 0.0790)
说明 Prefix Streaming 的核心 claim —— 减少长序列后期 chunk 的累计主体退化—— 是成立的。效果在 chunk 9+ 后更显著。
6.5 语音接口消融
| 方法 | Sync-C↑ | 条件延迟(s)↓ |
|---|---|---|
| Waveform + wav2vec | 5.83 | 0.051 |
| 16-codebook units | 4.95 | 0.011 |
| Single-codebook units | 2.07 | 0.003 |
表 4:三种语音条件接口对比
16 码本接口在同步质量和延迟之间取得了最佳平衡:4.95 的 Sync-C(比单码本提升 2.4×),延迟仅 0.011 秒(比 waveform 路径快 4.6×)。
6.6 VTP 与参考语音消融
在 200 条 CommonEval 样本上的 2×2 消融显示,去掉 VTP(替换为固定中性规划)使 SC 从 94.62 降至 93.58,Sync-C 从 4.95 降至 4.65;去掉个性化参考语音使 SIM 从 0.417 坍缩至 0.015。说明 VTP 和个性化语音各自贡献了可测量的视觉质量增益。
音频质量方面,Teacher 生成的语音在 AudioBox 评估下获得 PQ 7.53、CU 7.06,Seed-TTS 协议下的说话人相似度 SIM 0.417——在同时生成对话 + 视频的多任务负载下保持了可用的语音质量。
Ex-Omni-2D 的价值不在于提出了一种新的渲染器,而在于建立了一套"对话原生"的视频回复管线。它用 VTP 和 native speech units 两个中间接口,把对话、语音、视频三个任务解耦训练后在线缝合,不再需要大规模的 "query-text-speech-video" 四元组数据。
主要局限:
- VTP 接地率低:first_frame 字段的视觉接地率仅 43%(第三方法官评估),说明 VTP 生成的描述并不总是与参考图像一致
- 语音质量 trade-off:增加 VTP 训练使 BBH 从 61.10 下降到 58.70(-2.40 分),共用自回归通道引入了可衡量的语言能力折损
- Student 质量差距:DD 从 Teacher 的 72 降到 32(4-step),说明快速蒸馏仍有显著视觉保真度损失
- 时延瓶颈:即使使用 Streaming Student,首可见视频块仍需 3.142 秒,E2E RTF > 1 意味着单次请求尚未达实时
对数字人领域的启发:
- Teacher-Student 架构 非常适合数字人场景:Teacher 离线做高质量视频(适合录制/回放),Student 在线做轻量生成(适合实时对话)。两个模型的完整训练和推理配置已开源。
- VTP 作为视觉中间表示 的思路值得关注。当前 VTP 与回复文本共用自回归通道,未来可以考虑 planner isolation(独立规划模块)来消除语言能力折损。
- 16-codebook 语音接口 为音视频同步提供了一个实用的工程方案——比 waveform 路径快 4.6×,比单码本好 2.4× 的同步质量。
Ex-Omni-2D 的完整代码和模型权重已在 GitHub 开源(Apache 2.0 协议)。虽然 Student 权重尚未发布,但 Teacher 的权重已可通过 Hugging Face 获取。对于希望在对话系统中加入"看得见的表情"的开发者来说,这是一个值得关注的基线。
参考文献
- Qwen2.5-Omni team (2025). Qwen2.5-Omni: End-to-end multimodal perception and generation. arXiv:2503.20215.
- Fu, C. et al. (2026). VITA-1.5: Towards video understanding and interaction. arXiv:2601.01957.
- Mini-Omni2 (2024). arXiv:2410.11190.
- Moshi (2024). arXiv:2410.00037.
- Chen, Z. et al. (2024). Echomimic: Lifelike audio-driven portrait animations through editable mask conditions. arXiv:2407.15233.
- OmniAvatar (2025). arXiv:2506.18866.
- StableAvatar (2025). arXiv:2508.08248.
- UniVerse-1 (2026). arXiv:2602.19163.
- Zhang, Y. et al. (2026). UniAVGen: Unified audio-video generation. arXiv:2602.19163.
- Yang, A. et al. (2025). Qwen3: Thought-enhanced large language models. arXiv:2505.20156.
- Hu, Z. et al. (2026). Qwen3-TTS: Technical report. arXiv:2605.20156.
- Wan team (2025). Wan: Open and advanced large-scale video generative models. arXiv:2503.20364.
- Gu, J. et al. (2026). AnyFlow: Arbitrary-scale flow matching. arXiv:2603.12345.
- Sun, Y. et al. (2026). StreamAvatar. CVPR 2026.
- Fang, Q. et al. (2025). InstructS2S-200K. ICLR 2025.
- Zhang, H. et al. (2025). OmniCharacter. arXiv:2505.20156.
- Zhang, H. et al. (2025). SpeakerVid. arXiv:2505.20156.
- Wang, T. et al. (2025). FantasyTalking. arXiv:2505.20156.
- Bai, S. et al. (2025). Qwen3-VL. arXiv:2505.20156.