1. 概述

Qwen3-Omni是阿里巴巴通义千问团队于2025年提出的音频-视觉多模态大语言模型,采用创新的Thinker-Talker MoE架构,实现了文本、图像、音频的统一理解与流式语音生成。

论文Qwen3-Omni: Thinker-Talker MoE Architecture for Audio and Vision Understanding

核心规格

参数规格
Thinker总参数量30B
Thinker激活参数量3.3B
Talker总参数量3B
Talker激活参数量0.3B
专家数量128
激活专家数8
冷启动延迟234ms
预训练音频数据2000万小时

2. Thinker-Talker分离设计

2.1 设计动机

传统多模态模型将理解和生成耦合在同一模型中,导致以下问题:

问题影响
任务冲突理解和生成需要不同的注意力模式
推理延迟流式生成必须等待完整理解
资源浪费理解和生成共享参数,无法针对各自任务优化
部署困难大模型同时服务理解和生成

2.2 架构图

┌─────────────────────────────────────────────────────────────────────┐
│                     Qwen3-Omni Thinker-Talker 架构                   │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  输入层                                                              │
│  ┌─────────┐    ┌─────────┐    ┌─────────┐                        │
│  │  音频   │    │  图像   │    │  文本   │                        │
│  └────┬────┘    └────┬────┘    └────┬────┘                        │
│       │              │              │                               │
│       ▼              ▼              ▼                               │
│  ┌───────────┐  ┌───────────┐  ┌───────────┐                      │
│  │AuT Encoder│  │ViT Encoder│  │文本Embedding│                    │
│  │(音频Token)│  │(视觉Token)│  │           │                      │
│  └─────┬─────┘  └─────┬─────┘  └─────┬─────┘                      │
│        │              │              │                              │
│        └──────────────┼──────────────┘                              │
│                       ▼                                              │
│              ┌─────────────────┐                                    │
│              │   统一Token序列   │                                    │
│              │  Audio+Visual+Text│                                    │
│              └────────┬────────┘                                    │
│                       │                                              │
│                       ▼                                              │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │                        Thinker (30B MoE)                    │   │
│  │                                                              │   │
│  │   输入: Token序列 + Thought Prompt                           │   │
│  │   输出: Thought序列 (中间推理结果)                            │   │
│  │                                                              │   │
│  │   ┌────────────────────────────────────────────────────────┐  │   │
│  │   │              MoE Transformer Layers                    │  │   │
│  │   │   Layer i ──→ [SSM + Attention] ──→ Router → Experts │  │   │
│  │   │   ...                                                    │  │   │
│  │   │   Layer 1 ──→ [SSM + Attention] ──→ Router → Experts │  │   │
│  │   └────────────────────────────────────────────────────────┘  │   │
│  │                                                              │   │
│  └──────────────────────────┬───────────────────────────────────┘   │
│                             │                                        │
│                             ▼                                        │
│                    Thought序列输出                                    │
│                             │                                        │
│                             ▼                                        │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │                        Talker (3B)                          │   │
│  │                                                              │   │
│  │   输入: Thinker输出 + 文本指令                                  │   │
│  │   输出: 多码本流式音频                                          │   │
│  │                                                              │   │
│  │   ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐        │   │
│  │   │Codebook1│  │Codebook2│  │Codebook3│  │Codebook4│        │   │
│  │   │ (512)  │  │ (512)   │  │ (512)   │  │ (512)   │        │   │
│  │   └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘        │   │
│  │        └─────────────┼─────────────┘           │             │   │
│  │                      ▼                           │             │   │
│  │              多码本联合解码                       │             │   │
│  │                      └───────────────────────────┘             │   │
│  │                              ▼                                │   │
│  │                    ┌──────────────┐                           │   │
│  │                    │ 流式音频合成  │                           │   │
│  │                    └──────────────┘                           │   │
│  │                                                              │   │
│  └──────────────────────────────────────────────────────────────┘   │
│                             │                                        │
│                             ▼                                        │
│                    文本输出 + 流式音频                                 │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

3. Thinker模块详解

3.1 MoE架构

Thinker采用标准MoE架构,核心组件:

组件规格
专家数量128
激活专家数8
总参数量30B
激活参数量3.3B
稀疏度89%

门控机制

其中 是激活专家数, 是路由器的稀疏激活。

3.2 SSM-Attention混合

Thinker层结合结构化状态空间模型(SSM)多头自注意力

// Thinker层伪代码
class ThinkerLayer {
    // SSM组件 - 捕获长程依赖
    SSMBlock ssm;
    
    // 注意力组件 - 捕获局部上下文
    MultiHeadAttention attention;
    
    // 混合门控
    Linear混合门控;
    
    void forward(x) {
        // SSM特征
        ssm_out = ssm(x);
        
        // 注意力特征
        attn_out = attention(x);
        
        // 动态混合
        gate = sigmoid(混合门控(x));
        out = gate * ssm_out + (1 - gate) * attn_out;
        
        return out;
    }
}

设计优势

  • SSM处理长序列、降低计算复杂度
  • Attention处理需要精确记忆的信息
  • 动态混合根据输入自适应选择

4. Talker模块详解

4.1 多码本流式合成

Talker采用多码本自回归解码实现流式语音合成:

组件说明
码本数量4
每个码本大小512
总码本大小512⁴ ≈ 687亿
采样方式逐码本自回归

多码本编码示例

# 多码本流式合成伪代码
class MultiCodebookTalker:
    def __init__(self, num_codebooks=4, codebook_size=512):
        self.embeddings = nn.ModuleList([
            nn.Embedding(codebook_size, embed_dim) 
            for _ in range(num_codebooks)
        ])
        self.decoder = TransformerDecoder()
        
    def streaming_synthesize(self, thought_output, text_instruction):
        """流式语音合成 - 每个码本独立采样"""
        audio_tokens = []
        
        for t in range(max_length):
            # 逐码本生成
            codebook_outputs = []
            for cb_idx in range(self.num_codebooks):
                # 使用已生成的码本和文本作为上下文
                context = concat(
                    audio_tokens[:t],  # 历史
                    text_instruction   # 文本
                )
                logits = self.decoder(context, cb_idx)
                token = gumbel_sample(logits)  # 采样
                codebook_outputs.append(token)
                
            # 多码本联合解码
            joint_embedding = sum([
                self.embeddings[i](codebook_outputs[i]) 
                for i in range(self.num_codebooks)
            ])
            
            audio_tokens.append(codebook_outputs)
            
            # 流式输出(每生成一个码本即可解码)
            if len(audio_tokens) % codebook_interval == 0:
                yield decode_to_audio(joint_embedding)

4.2 与传统TTS的对比

维度Qwen3-Omni Talker传统级联TTS
架构端到端自回归ASR + TTS多阶段
延迟234ms冷启动500ms+
自然度高(统一优化)中(各阶段独立优化)
韵律控制通过Thought隐式学习需显式控制
多语言原生支持需独立模型

5. AuT音频编码器

5.1 音频Token化

Qwen3-Omni使用专门的**AuT (Audio Tokenizer)**编码器:

┌─────────────────────────────────────────────────────────────┐
│                    AuT 音频编码器                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  原始音频 ──→ Mel Spectrogram ──→ 卷积编码 ──→ 离散Token序列   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   音频处理流程                         │   │
│  │                                                     │   │
│  │   波形 ──→ [STFT] ──→ Mel Filter ──→ Mel Spec      │   │
│  │                      │                              │   │
│  │                      ▼                              │   │
│  │              [卷积编码器]                           │   │
│  │                 │     │                            │   │
│  │                 ▼     ▼                            │   │
│  │           [残差块] [注意力]                         │   │
│  │                 │                                   │   │
│  │                 ▼                                   │   │
│  │          [量化层 (RVQ)]                             │   │
│  │                 │                                   │   │
│  │                 ▼                                   │   │
│  │            音频Token序列                            │   │
│  │                                                     │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5.2 预训练规模

数据类型规模说明
音频预训练2000万小时超大规模音频理解预训练
语音识别百万小时级覆盖多语言
音乐音频十万小时级音乐理解能力
环境音百万小时级场景理解

6. 训练策略

6.1 两阶段训练

┌─────────────────────────────────────────────────────────────────────┐
│                         Qwen3-Omni 训练流程                          │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  第一阶段:联合预训练                                                   │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                                                             │   │
│  │   Thinker: 30B MoE                                          │   │
│  │   ├── 文本预训练 (大规模语料)                                │   │
│  │   ├── 视觉对齐 (图像-文本对)                                  │   │
│  │   └── 音频对齐 (音频-文本对)                                  │   │
│  │                                                             │   │
│  │   Talker: 3B 自回归                                         │   │
│  │   ├── 语音识别预训练                                         │   │
│  │   └── 语音生成预训练                                         │   │
│  │                                                             │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                              ↓                                       │
│  第二阶段:联合微调                                                   │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                                                             │   │
│  │   Thinker + Talker 联合优化                                  │   │
│  │   ├── 指令微调 (SFT)                                        │   │
│  │   ├── 音频问答微调                                          │   │
│  │   └── RLHF对齐 (可选)                                        │   │
│  │                                                             │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

6.2 训练数据混合

数据类型比例用途
文本对话40%通用理解能力
图像描述20%视觉理解
语音识别20%音频-文本对齐
语音合成10%语音生成能力
音频问答10%端到端音频理解

7. 实验结果

7.1 多模态理解基准

任务Qwen3-OmniGPT-4oGemini-1.5
MMMU72.369.168.5
MathVista68.563.861.2
MMBench85.282.181.5
VoiceBench78.975.273.8

7.2 语音生成质量

指标Qwen3-Omni传统级联TTS
WER (语音识别)4.2%5.8%
MOS (自然度)4.34.1
冷启动延迟234ms580ms
流式吞吐量1.2x实时0.8x实时

8. 应用场景

场景说明
实时语音助手语音输入,语音输出,实时对话
多模态客服支持语音、图像、文本的统一交互
语音视频理解同时理解视频中的音频和视觉信息
同声传译实时语音翻译

9. 相关专题


参考文献