mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
6075 字
17 分钟
Qwen2.5-Omni:一个想一个说
2026-07-24

Qwen2.5-Omni 论文解读:Thinker-Talker,一个负责想,一个负责说#

论文:Qwen2.5-Omni Technical Report 作者:Qwen Team(核心贡献者:Jin Xu、Zhifang Guo、Jinzheng He、Hangrui Hu、Ting He、Shuai Bai、Keqin Chen、Jialin Wang、Yang Fan、Kai Dang、Bin Zhang、Xiong Wang、Yunfei Chu、Junyang Lin) arXiv<2503>.20215,2025-03-26 提交

一句话概括:一个 7B 规模的开源模型,同时看懂文本、图像、音频、视频,还能一边”想”出文字、一边流式地说出自然语音。这是 Qwen 多模态路线的集大成之作——Qwen-VL、Qwen-Audio、Qwen2-VL、Qwen2-Audio、Qwen2.5-VL 这些年各练一门绝技,Qwen2.5-Omni 把它们全部熔于一炉,还额外给模型装上了一张”嘴”。自 GPT-4o 证明端到端全模态交互可行之后,开源侧最完整的一次对标,就是它了。

一、先立靶子:全模态模型的三道坎#

论文引言用了个很朴素的类比:人在生活中同时看、同时听,大脑统一处理,再用说话、写字、动手来反馈。对应到模型世界,LLM 负责抽象推理,LALM(语言-音频-语言模型)和 LVLM(语言-视觉-语言模型)这些年分别把听觉和视觉接了进来。但要把所有模态端到端地统一在一个模型里,还要能同时输出文本和语音,论文明说了有三道坎:

  1. 联合训练的对齐问题。文本、图像、视频、音频要一起训、互相增强,而不是互相拖累。尤其是视频——画面和声音必须在时间上严格对齐,否则模型学到的是”声画不同步”的歪数据。
  2. 输出端的互相干扰。文本 token 和语音 token 如果塞进同一个自回归序列里训练,两条线会打架。怎么让两个模态各学各的、互不拆台?
  3. 实时性。多模态信息要能流式地”进”,语音要能流式地”出”,首包延迟(initial packet latency)必须压下来——用户可等不了三秒才听到第一个字。

这三道坎对应论文的三个答案:TMRoPE 解决时间对齐,Thinker-Talker 解决输出干扰,分块流式编码 + 滑动窗口 DiT 解决实时性。整篇报告就是沿着这条线展开的,结构非常清楚。

落到产品形态上,这套配置支撑三类典型任务:语音对话(纯音频进出)、视频对话(看着视频聊天,同时听见声音)、视频推理(基于长视频内容做复杂问答)。模型以 Qwen2.5-Omni-7B 的名义在 HuggingFace 和 ModelScope 全量开源,代码仓库挂在 GitHub 的 QwenLM 组织下——这也是它和 GPT-4o 最大的身份差异:权重、架构、训练配方全部摊开给你看。

二、Thinker-Talker 架构:大脑负责想,嘴负责说#

1. 分工#

Thinker(思考者) 是一个标准的 Transformer decoder,也就是 LLM 本体,外加音频和视觉两个编码器。它的职责是”理解”:接收文本、音频、图像、视频,产出高层语义表示,并自回归地生成文本。论文的原话是”Thinker functions like a brain”。

Talker(表达者) 是一个 双轨自回归 Transformer decoder(dual-track autoregressive Transformer Decoder)——一条轨道吃 Thinker 给的表示和文本 token,另一条轨道自回归地往外吐语音 token。论文注明这个设计的灵感来自 Mini-Omni。Talker 就像人的嘴:不用自己想内容,但要说得流畅、说得有感情。

关键在于两者的连接方式:训练和推理时,Talker 都直接接收 Thinker 的高维隐藏表示,并且共享 Thinker 的全部历史上下文。所以这不是”两个模型串联”,而是同一个模型的两种输出通道,端到端联合训练、联合推理。论文说这模仿了人体的设计——不同器官产生不同信号,但由同一套神经系统统一协调。

2. 为什么 Talker 的输入要”双份”?#

Talker 的输入有两路:Thinker 的隐藏表示 + Thinker 采样出的文本 token 的 embedding。只给一路行不行?论文解释得很细,两路都不可少:

  • 隐藏表示负责”抢跑”。流式语音等不起——不能等整段文本全部生成完再开口。Thinker 的隐藏表示已经隐式携带了语气、态度的信息,Talker 可以提前预判该用什么情绪说。
  • 离散 token 负责”定音”。Thinker 的表示空间表达的是语义相似性而不是语音相似性——发音完全不同的两个词,高层表示可能长得几乎一样。所以必须把采样出的具体文字喂进来,才能消除”到底读哪个音”的不确定性。

一个管”怎么说”,一个管”说什么”,这个设计是整篇报告里我觉得最漂亮的一笔。

3. 跟级联方案、GPT-4o、Janus 摆在一起看#

传统语音助手是三段式级联:ASR → LLM → TTS。问题很老但很痛:延迟叠加、情绪语调等副语言信息在 ASR 那一步就丢了、错误逐级放大。Thinker-Talker 是端到端的,语音直接由模型的内部表示生成,文本流和语音流并行输出。

跟 GPT-4o 比:形态上高度一致——都是”全模态进、文本+语音流式出”的端到端路线。区别是 GPT-4o 细节闭源,而 Qwen2.5-Omni 把架构、数据配比、训练阶段全部写进了报告,7B 权重完全开源。跟 Janus 这类工作比,哲学也值得玩味:Janus 解耦的是视觉的理解与生成(用不同编码器处理进出两个方向),Thinker-Talker 解耦的是输出端的文本与语音——对象不同,思想同源:与其让一个自回归序列硬扛所有模态的 token(AnyGPT 那条路),不如把不同职责拆给专门模块,再在表示层面统一协调。

三、TMRoPE:把时间轴焊进位置编码#

1. 从 M-RoPE 到 TMRoPE#

先回顾 Qwen2-VL 时代提出的 M-RoPE(Multimodal Rotary Position Embedding,多模态旋转位置编码):把 RoPE 分解成时间、高度、宽度三个分量。文本在三个分量上用相同的 position ID,于是 M-RoPE 退化成普通 1D-RoPE;图像则在高度、宽度上赋予空间坐标。

TMRoPE(Time-aligned Multimodal RoPE,时间对齐的多模态 RoPE) 在这个骨架上加了一个关键升级:绝对时间位置。具体规则按模态分:

  • 文本:三个分量 ID 相同,等价于 1D-RoPE;
  • 音频:三个分量 ID 相同,但引入绝对时间编码——一个时间 ID 对应 40ms(正好是音频编码器每帧表示的时长,后文细说);
  • 图像:时间 ID 恒定,高度/宽度按 token 在图像中的位置分配;
  • 带音频的视频:音频依旧每 40ms 一个 ID;视频帧的时间 ID 逐帧递增——因为视频是动态帧率采样的,帧间隔不固定,所以按每帧的真实时间戳动态调整,保证”一个 ID 恒等于 40ms”。

多模态混合输入时,每个模态的起始编号接在前一个模态的最大 ID + 1 上,依次顺延。这样一来,音频 token 和视频帧在位置编码层面就被锚定到了同一条物理时间轴上——声画对齐不再靠数据碰运气,而是直接编码进了位置信息里。

2. 时间交错:每 2 秒切一块,图前音后#

有了时间对齐的 ID,还得安排 token 的排列顺序。论文的做法叫 time-interleaving(时间交错):把带音频的视频按实际时间每 2 秒切一个 chunk,每个 chunk 内部视觉表示排前、音频表示排后,然后一个 chunk 接一个 chunk 交错排列。

为什么不是”所有画面排完再排所有音频”?因为那样音频和对应的画面在序列上隔了几千个 token,注意力要隔着千山万水才能对上。2 秒一块交错排布,让”同一时刻的声与画”始终落在彼此的近邻范围内——这是一个典型的位置编码与注意力模式联合设计的案例。另外,纯图像输入会被当作两个相同帧处理,保持和视频表示的格式一致。

四、感知层:四路信号怎么进模型#

1. 编码器配置#

  • 文本:沿用 Qwen 的 tokenizer,byte-level BPE,151,643 个常规 token;
  • 音频:先重采样到 16kHz,转成 128 通道 mel 频谱图(窗长 25ms、帧移 10ms)。编码器直接沿用 Qwen2-Audio 的音频编码器,初始化自 Whisper-large-v3,设计成每帧表示对应原始音频约 40ms——正好和 TMRoPE 的”一个 ID = 40ms”严丝合缝;
  • 视觉:沿用 Qwen2.5-VL 的 ViT,约 6.75 亿参数,图像和视频数据混合训练。视频采用动态帧率采样,尽量完整保留信息,同时适配音频的采样节奏。

这套配置的思路很明确:感知模块不重造轮子,直接继承 Qwen 体系里各模态最强的现成组件,精力集中在”怎么把它们缝起来”上。

2. 为流式做的分块改造#

要支持实时交互,编码器必须支持 chunked prefill(分块预填充),论文对两个编码器都动了刀:

  • 音频编码器从”对整段音频做全注意力”改成按 2 秒分块做注意力——音频来多少处理多少,不用等整段说完;
  • 视觉编码器用 flash attention 提效,并加了一个简单的 MLP 层把相邻的 2×2 个 token 合并成 1 个;patch size 取 14,不同分辨率的图像可以打包进同一条序列。

论文还特意点了一句分工哲学:编码器负责感知,长序列建模交给 LLM。把长序列的依赖关系从编码器里解耦出去,各模块才能分别流式化。

五、说话这件事:qwen-tts-tokenizer 与滑动窗口 DiT#

1. 语音 token:不要求对齐,是刻意的#

论文设计了一套自研语音 codec,叫 qwen-tts-tokenizer,能高效压缩语音的关键信息,并通过因果(causal)音频解码器流式还原。这里有个容易被忽略但很要命的设计:语音生成不需要与文本做词级、时间戳级的对齐

做过 TTS 的都懂,强制对齐(forced alignment)是多少管线的噩梦——对齐数据难搞、推理时还得维护对齐状态。Talker 直接从 Thinker 的表示流里自回归地把语音 token 吐出来,单调对齐由模型自己学(训练阶段专门有语音续写任务来建立这个映射),训练数据要求和推理复杂度都大幅下降。

2. code → wav:Flow-Matching DiT + BigVGAN,加一扇滑动窗口#

token 变成声音还要两步:先用一个 Flow-Matching 的 DiT 把语音 code 转成 mel 频谱,再用一个改造过的 BigVGAN 把频谱重建为波形。

流式的关键在 DiT 上的 滑动窗口分块注意力(sliding window block attention):把相邻 code 分组为块,限制每个块只能看到 4 个块的感受野——往回看 2 块、往前看 1 块(加上当前块)。解码时按 chunk 逐块生成 mel 频谱,每块都能拿到必要的上下文,既保住了音质,又把首包延迟压了下来。BigVGAN 那一侧也用固定感受野逐块推进,波形同样是流式出的。

3. 首包延迟的四个来源#

论文把流式交互的首包延迟拆成四项,每一项都有对应招式,工程味十足:

延迟来源对应手段
多模态输入处理音频/视觉编码器分块(2 秒块、2×2 合并)
收到首段文本 → 首个语音 tokenThinker-Talker 双轨并行,Talker 流式续接
首段语音 code → 波形滑动窗口 DiT(4 块感受野)
架构固有延迟控制模型尺寸与 FLOPs(7B + 轻量 Talker)

六、训练流程:三阶段预训练 + Talker 三步走#

1. 预训练三阶段#

  • 阶段一:冻 LLM,练感官。锁住 LLM 参数,只训视觉和音频两个编码器,数据是海量音频-文本、图像-文本对。顺序也有讲究:先训各自的 adapter,再训编码器本体。初始化来源体现了”集大成”:LLM 来自 Qwen2.5,视觉编码器就是 Qwen2.5-VL 那套,音频编码器从 Whisper-large-v3 起步。
  • 阶段二:全参解冻,混模态上量。加入 8000 亿图像/视频 token、3000 亿音频 token、1000 亿带音频视频 token,任务类型更杂,让听、视、文三种信息深度互搏。同时保留纯文本数据——论文强调这对维持语言能力是必需的(多模态训练把 LLM”练傻”的事,业内见得多了)。另外沿用 Qwen2-Audio 的做法,用自然语言 prompt 替代层级标签,换更好的泛化和指令跟随。
  • 阶段三:拉长上下文。前两阶段为了效率把序列压在 8192 token,这一阶段引入长音频、长视频,把上下文扩到 32,768 token

2. Thinker 的后训练#

ChatML 格式的指令微调,数据覆盖四类:纯文本对话、视觉模态对话、音频模态对话、混合模态对话。

3. Talker 的三阶段,一步一个坑#

  • 第一步:上下文续写(ICL)。用大规模”多模态上下文 + 语音回复”的对话数据做 next-token prediction,让 Talker 学会从语义表示到语音的单调映射,顺带掌握韵律、情绪、口音这些上下文相关的属性。这里还用了音色解耦(timbre disentanglement),防止模型把某个音色和低频文本模式绑死——不然冷僻词一出来就串味。
  • 第二步:DPO 修稳定性。预训练数据为了覆盖足够多的说话人和场景,免不了标签噪声和发音错误,模型学多了会产生幻觉——读错字、停顿乱。论文给每个请求构造三元组 (x, yw, yl),好语音 yw 和坏语音 yl 按 WER(词错率)+ 标点停顿错误率两个奖励信号排序,然后套用标准的 DPO 目标(论文记作 LDPO)训练。
  • 第三步:说话人微调。在基座模型上做 speaker fine-tuning,让 Talker 固定到特定音色,进一步提升自然度和可控性。

七、成绩单:跟自家兄弟掰手腕,顺手刷了 OmniBench#

评测分两大块:X → Text(理解)X → Speech(语音生成)。挑重点说。

1. 文本能力:交了税,但不多#

跟 7B 级纯文本模型比,Qwen2.5-Omni 大致落在 Qwen2-7B 和 Qwen2.5-7B 之间:MMLU-Pro 47.0(Qwen2.5-7B 是 56.3)、MATH 71.5(75.5)、GSM8K 88.7(91.6)、HumanEval 78.7(84.8)。全模态训练对纯文本能力有一点损耗,这是意料之中的代价——好在幅度不大。

2. 音频理解:全面超过 Qwen2-Audio#

Librispeech test-clean/test-other WER 1.8/3.4,CommonVoice15 中文 WER 5.2(Whisper-large-v3 是 12.8),CoVoST2 中译英 BLEU 29.4(Qwen2-Audio 24.4)。音频推理基准 MMAU 平均 65.60,而 Qwen2-Audio 只有 49.20、Gemini-Pro-V1.5 是 54.90——音乐子集 69.16 尤其夸张。语音交互基准 VoiceBench 平均 74.12,同尺寸里第一。

3. 最惊艳的一张表:语音指令 ≈ 文本指令#

把纯文本基准转成语音来考模型:MMLU 语音输入 65.6,对比 Qwen2-7B 文本输入的 69.3——差距只剩 3.7 分;而 Qwen2-Audio 只有 33.2。GSM8K 更离谱,语音输入 85.4反超文本的 82.3。也就是说,“听题做题”和”看题做题”在它身上基本打平了。端到端语音指令跟随做到这个程度,是这份报告里我最服气的一组数字。

4. 图像与视频:和 Qwen2.5-VL 同水位#

MMMU 59.2、MMBench 81.8、DocVQA 95.2、TextVQA 84.4、OCRBench_V2 57.8——多数指标追平甚至个别超过 Qwen2.5-VL-7B,并且全面超过 GPT-4o-mini,也超过所有开源 omni 模型。视频侧 Video-MME 64.3(无字幕)/72.4(带字幕)、MVBench 70.3、EgoSchema 68.6(Qwen2.5-VL-7B 是 65.0,反超)。视觉定位 Refcoco val 90.5,开放词汇检测 ODinW 42.2 mAP,也压过了 VL-7B。

5. OmniBench:断层式领先#

全模态混合理解基准 OmniBench 上,Qwen2.5-Omni 平均 56.13%(语音 55.25 / 声音事件 60.00 / 音乐 52.83),而 Gemini-1.5-Pro 是 42.91%、Baichuan-Omni-1.5 是 42.9%、MiniCPM-o 是 40.5%——领先第二名 13 个多点,真正的断层。

6. 语音生成:硬刚专业 TTS#

seed-tts-eval 上 RL 后的 WER:test-zh 1.42%、test-en 2.33%、test-hard 6.54%,超过 MaskGCT(2.27/2.62/10.27)和 CosyVoice 2(1.45/2.57/6.83),逼近闭源的 Seed-TTS。单说话人微调后 NMOS 达到 4.46–4.62,人类录音是 4.51——主观自然度已经贴着人声走了。

收尾:我的一点看法#

第一,把它放回 Qwen 的演化路径里,才能看出分量。 Qwen-VL 和 Qwen-Audio 是两条单模态支线;Qwen2-VL 提出 M-RoPE,解决了多模态 token 的”空间位置”问题;Qwen2.5-VL 把这条线打磨成熟;而 Qwen2.5-Omni 用 TMRoPE 补上了最后一块——“时间”。位置编码从”在哪里”进化到”在何时”,音频和视频才真正焊成了一条时间轴。然后 Thinker-Talker 再解决输出侧。M-RoPE → TMRoPE → Thinker-Talker,这三级火箭是一步一步攒出来的,不是从天上掉下来的。

第二,“分工但不分家”是这份报告最值得抄的设计哲学。 全塞进一条自回归序列,模态互相干扰;完全拆开级联,又丢信息、加延迟。Thinker-Talker 走了中间路线:模块上分工(一个想、一个说),表示上不分家(Talker 直接吃 Thinker 的隐藏表示、共享全部上下文)。TMRoPE 同理——不重造编码器,而是把对齐的责任收敛到位置编码这一层。好的架构创新往往不是发明新零件,而是给旧零件重新分配职责。

第三,真正决定体验的是那些不起眼的数字。 40ms 一个时间 ID、2 秒一个交错块、4 个块的感受野(回看 2、前看 1)——这些数字全是为流式首包延迟服务的工程折中。论文没有炫什么惊世骇俗的理论,但把”实时对话”这个产品级需求拆成了四个延迟来源逐个击破。做工程的人读这一节会很舒服:每一处设计都能回答”为什么”。

第四,短板论文自己也认了。 文本能力比纯 LLM 略降(全模态的税);视频 OCR音视频协同理解仍是被学界普遍低估的弱区,论文呼吁产学研一起补 benchmark 和数据集。另外报告对 GPT-4o 没有直接对表(只跟 GPT-4o-mini 对了几项),完整的正面对比还要等社区实测。

最后说句展望。 报告结尾透露,下一步要做更强更快的模型,并把输出扩展到图像、视频、音乐。也就是说,今天的 Qwen2.5-Omni 只是”全模态进、双通道出”,未来的形态是”全模态进、全模态出”。如果这条路走通,我们现在回头看这份报告,大概会把它当成 Qwen 通往 AGI 路上的一个里程碑——论文自己也是这么写的。

附:核心数据速查#

基本盘#

项目数值
模型规模7B(Thinker 主体),另有 Talker + DiT + BigVGAN
LLM 初始化Qwen2.5
视觉编码器Qwen2.5-VL ViT,约 6.75 亿参数,patch size 14
音频编码器Qwen2-Audio 编码器,Whisper-large-v3 初始化
文本 tokenizerbyte-level BPE,151,643 tokens
音频前端16kHz 重采样,128 通道 mel,25ms 窗 / 10ms 帧移,每帧≈40ms
上下文预训练后期扩至 32,768 token
预训练增量图像/视频 8000 亿 + 音频 3000 亿 + 带音频视频 1000 亿 token

关键成绩#

基准Qwen2.5-Omni-7B对比参照
OmniBench(平均)56.13%Gemini-1.5-Pro 42.91%;Baichuan-Omni-1.5 42.9%
MMAU(音频推理)65.60Qwen2-Audio 49.20;Gemini-Pro-V1.5 54.90
VoiceBench74.12MiniCPM-o 71.69
MMLU(语音输入)65.6Qwen2-7B 文本 69.3;Qwen2-Audio 语音 33.2
GSM8K(语音输入)85.4Qwen2-7B 文本 82.3(反超)
MMMU59.2Qwen2.5-VL-7B 58.6;GPT-4o-mini 60.0
DocVQA95.2Qwen2.5-VL-7B 95.7
Video-MME(w/ sub)72.4Qwen2.5-VL-7B 71.6
EgoSchema68.6Qwen2.5-VL-7B 65.0
Librispeech test-clean/other WER1.8 / 3.4Whisper-large-v3 1.8 / 3.6
seed-tts-eval WER(zh/en/hard)1.42 / 2.33 / 6.54MaskGCT 2.27 / 2.62 / 10.27;CosyVoice 2 1.45 / 2.57 / 6.83
单说话人 NMOS4.46–4.62人类 4.51

概念清单#

  • Thinker-Talker:核心架构。Thinker(LLM)负责理解与文本生成;Talker(双轨自回归 decoder)吃 Thinker 的隐藏表示 + 文本 token,流式生成语音 token。端到端联合训练与推理。
  • TMRoPE(Time-aligned Multimodal RoPE):在 M-RoPE 的时间/高/宽三分量基础上引入绝对时间位置,一个时间 ID = 40ms,把音频与视频锚到同一物理时间轴。
  • Time-interleaving(时间交错):带音频的视频每 2 秒切块,块内图前音后、交错排列,保证声画在注意力局部相遇。
  • qwen-tts-tokenizer:自研语音 codec,因果解码器流式还原;语音生成无需词级/时间戳级对齐。
  • 滑动窗口 DiT:Flow-Matching DiT 做 code→mel,感受野限制为 4 块(回看 2 + 前看 1);改 BigVGAN 做 mel→波形,全程流式。
  • Chunked prefill:音频编码器 2 秒分块注意力;视觉编码器 2×2 token 合并,支持多分辨率打包。
  • Talker 三阶段训练:ICL 语音续写(学单调映射 + 音色解耦)→ DPO(按 WER + 停顿错误率排序,修幻觉)→ 说话人微调。
  • LDPO:Talker 用的 DPO 目标,基于 (x, yw, yl) 偏好三元组。
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Qwen2.5-Omni:一个想一个说
https://mizuki-eaf.pages.dev/posts/qwen/qwen25-omni一个想一个说/
作者
无名之子
发布于
2026-07-24
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录