Qwen3-Omni Technical Report
2026-01-29
DL论文
00

目录

🎬 视频输入处理
视频处理流程
1. 视觉部分(无音频的视频帧)
2. 音频部分(从视频提取的音频)
3. 时间对齐机制 (TM-RoPE)
🎵 音频输入处理
音频处理流程
详细步骤
1. 预处理
2. AuT 编码器处理
3. AuT 训练数据
4. 动态注意力窗口
🔄 完整的多模态输入流程
统一的 Token 序列构建
不同模态的 TM-RoPE 应用
📊 具体数值示例
音频 Token 化
视频 Token 化
💡 关键技术优势

根据论文内容,让我详细解释视频和音频是如何输入模型并转换为 token 的:

🎬 视频输入处理

视频处理流程

展开代码
原始视频 → 视觉帧提取 + 音频提取 → 分别编码 → 时间对齐 → 输入 LLM

1. 视觉部分(无音频的视频帧)

视觉编码器:

  • 采用 Qwen3-VL 的视觉编码器(从 SigLIP2-So400m 初始化)
  • 参数量约 543M

帧采样策略:

  • 动态帧率采样,以与音频采样率对齐
  • 目的是尽可能完整保留视频信息,同时与音频保持时间同步

处理过程:

展开代码
视频帧 → Vision Encoder → 视觉 token 序列

2. 音频部分(从视频提取的音频)

与独立音频输入的处理方式相同(见下文)

3. 时间对齐机制 (TM-RoPE)

这是关键创新!论文提出了 Time-aligned Multimodal Rotary Position Embedding (TM-RoPE):

TM-RoPE 的三维分解:

  • 时间维度 (Temporal): 24 个旋转角
  • 高度维度 (Height): 20 个旋转角
  • 宽度维度 (Width): 20 个旋转角

对于视频的具体应用:

python
展开代码
# 伪代码示例 for 视频中的每一帧: temporal_id = 帧的实际时间戳 / 80ms # 每 80ms 一个时间 ID height_ids = 帧内各像素的行位置 width_ids = 帧内各像素的列位置 position_embedding = TM_RoPE(temporal_id, height_ids, width_ids)

关键点:

  • 音频的每个 token 对应 80ms 的时间
  • 视频帧根据实际时间戳分配递增的 temporal ID
  • 确保音视频在时间轴上精确对齐(都是 80ms 的时间分辨率)

与 Qwen2.5-Omni 的区别:

  • 旧版本:将音视频表示切分为固定的 2 秒块
  • Qwen3-Omni:直接使用绝对时间戳对齐,支持任意长度的流式输入

🎵 音频输入处理

音频处理流程

展开代码
原始音频 → 重采样 → Mel频谱图 → AuT编码器 → 音频token序列

详细步骤

1. 预处理

python
展开代码
# 伪代码 原始音频 → 重采样到 16kHz ↓ 转换为 128 通道 Mel 频谱图 - 窗口大小: 25ms - 跳跃步长: 10ms

2. AuT 编码器处理

架构: Attention-Encoder-Decoder 自回归模型

降采样:

展开代码
Mel频谱图 → Conv2D 模块(8倍降采样) → 12.5Hz token 率

计算:

  • 原始音频: 16kHz 采样率
  • 经过 8 倍降采样后: 16000 / 8 / 100 = 20 帧/秒 → 实际约 12.5Hz
  • 每个音频 token 对应约 80ms 的原始音频

3. AuT 训练数据

  • 2000 万小时监督音频
  • 80% 中英文伪标注 ASR 数据
  • 10% 其他语言 ASR 数据
  • 10% 音频理解数据

4. 动态注意力窗口

python
展开代码
# 支持实时预填充缓存 attention_window_sizes = [1秒, 2秒, ..., 8秒] # 平衡实时性能和离线任务效果

🔄 完整的多模态输入流程

统一的 Token 序列构建

展开代码
[文本tokens] + [音频tokens] + [视觉tokens] → 连续的位置编码

位置编码的连续性:

python
展开代码
# 防止多模态位置冲突 当前模态起始位置 = 前一模态最大位置ID + 1 示例: 文本: position_ids [0, 1, 2, ..., 100] 音频: position_ids [101, 102, ..., 200] 视觉: position_ids [201, 202, ..., 300]

不同模态的 TM-RoPE 应用

模态Temporal IDHeight IDWidth ID
文本共享共享共享 (等效1D RoPE)
音频每80ms递增共享共享
图像常量行位置列位置
视频每80ms递增行位置列位置

📊 具体数值示例

音频 Token 化

展开代码
1秒音频: - 采样率: 16kHz - Mel特征: 10ms hop → 100帧/秒 - 8倍降采样 → 12.5帧/秒 - 结果: 1秒音频 ≈ 12-13个tokens 40分钟音频: - 40 × 60 × 12.5 = 30,000 tokens

视频 Token 化

展开代码
假设视频: - 分辨率: 224×224 - 帧率: 动态采样(与音频对齐) - Vision Encoder输出: 每帧约256-512 tokens 1分钟视频(含音频): - 音频: 60 × 12.5 = 750 tokens - 视觉: 帧数 × 每帧tokens (取决于采样率)

💡 关键技术优势

  1. 时间精确对齐: 音频和视频都基于 80ms 的时间分辨率
  2. 流式支持: 可以处理任意长度的输入(不再限制于 2 秒块)
  3. 高效编码: 12.5Hz 的 token 率在保证质量的同时降低计算量
  4. 统一表示: 所有模态通过 TM-RoPE 在同一空间中建模

这种设计使得模型能够自然地处理音视频的时序对应关系,为后续的跨模态推理提供了坚实的基础。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!