Back

全双工语音模型精读②:Freeze-Omni——冻结 LLM、8 张卡 6 万条数据做出全双工语音对话

全双工语音模型系列精读第 2 篇。本文基于 Freeze-Omni 论文 arXiv:2411.00774v5 与官方项目页,梳理其"冻结骨干"路线。配套总览见《全双工语音大模型全景调研》。

一、它要解决的痛点:语音数据太少,微调会"变傻"

GPT-4o 展示端到端语音交互后,2024 年底涌现出一批 speech-to-speech 多模态模型(Mini-Omni2、LLaMA-Omni、Moshi 等)。Freeze-Omni(腾讯优图 Lab + 西工大 ASLP@NPU + 南京大学,王雄等,2024-11-01)注意到一个被忽视的问题:

  • 文本 LLM 动辄用万亿 token 训练,但百万小时级的口语问答数据极难获取(语音模态的数据量根本无法和文本模态相比);
  • 因此,把语音模态对齐进 LLM 时,只要微调 LLM 参数,就不可避免地带来灾难性遗忘(catastrophic forgetting)——模型原本的"智商"(推理、指令遵循、角色扮演)被带偏;
  • 当时多数开源语音-文本模型的口语问答成绩明显低于其文本模态问答成绩,就是这个原因。

Freeze-Omni 的核心主张一句话:整个训练过程把 LLM 参数完全冻结,语音输入/输出以适配器方式外挂,从而让语音模态的智商与骨干 LLM 文本模态同级,还顺带做到低延迟。

二、三大模块设计

论文把系统拆成"语音输入建模 + 语音输出建模 + 双工对话设计"三块。

1. 语音输入:chunk-wise 流式编码器 + 三阶段训练

  • 编码器:多层下采样卷积 + 24 层 Transformer(隐层 1024),约 350M 参数,输出帧率 12.5Hz;接一个仅由下采样卷积构成的 adapter,把高维语音表征映射进 LLM 的嵌入空间。下采样是为了降低帧率、加快 prefill、降延迟。输入是 25ms 窗/10ms 帧移的 mel 特征。
  • 三阶段训练(全程冻结 LLM):
    1. ASR 阶段:像普通语音识别一样训练,输入语音、标签是转写文本,用 CTC 损失;
    2. 对齐阶段:把编码器通过 adapter 接 LLM,加可训练特殊 token,标签仍是转写文本——此阶段除 LLM 冻结外其余可训;
    3. 语音问答阶段:用骨干 LLM 自己生成多轮问答答案(保证与骨干完全兼容),再用多说话人 TTS 把问题合成语音;每轮问题前加可训练 prompt embedding(各问题共享同一组参数)引导 LLM 做"语音进、文本出"。此阶段编码器也冻结(保住阶段 2 的声学鲁棒性),只有 prompt embedding 可训

2. 语音输出:NAR + AR 双解码器 + prefix kv-cache

受 VALL-E 启发,语音解码器分 NAR(非自回归)prefillAR(自回归)生成两段,再加 codec 解码器出波形:

  • 单码本 codec:说话人数量有限时单码本足以提取语音 token,可最大程度降低复杂度和延迟;
  • 同样三阶段训练:① 只用语音训单码本 codec;② 大量文本-语音配对数据,文本经 LLM 嵌入层成语义特征喂 NAR 解码器,AR 解码器 teacher-force 预测语音 token(LLM 嵌入层冻结);③ 关键的 prefix kv-cache 微调——新增一个 NAR prefix 语音解码器建模 LLM 输出的隐状态,把其 kv-cache 传给 NAR 解码器,让语音解码器紧密耦合 LLM 的真实输出风格(阶段 2 的配对文本风格和 LLM 实际输出风格不同,第三阶段专治 bad case)。此阶段只有 NAR prefix 解码器可训。

这样就在不动 LLM 的前提下,把 LLM 的隐状态/文本转成了流式语音。

3. 双工对话:chunk 级状态预测

  • 先用一个声学 VAD(Silero VAD)检测语音起点,触发后把语音流逐 chunk 送入模型;
  • 在 LLM 最后一层之后加一个分类层,在每个 chunk 最后一帧预测三种状态:
    • state 0:用户还在说,LLM 继续接收;
    • state 1:这个 chunk 是语音结尾,且用户要打断——LLM 重新进入 generate 阶段;
    • state 2:语音结尾但无需打断——停止送流、重置 VAD。
  • 状态标签只在每个 chunk 最后一帧有效,用多任务方式同时优化状态分类交叉熵和 LLM 损失。
  • "model as a server"工程策略:同时启动多个模型当服务器,VAD 触发后由服务器调度空闲模型响应当前 chunk;由于推理时语音编码器和 LLM 的 kv-cache、CNN cache 全部按用户分离保存,任意模型都能响应任意用户的任意 chunk,无需指定谁监听、谁生成。

三、训练成本:小到惊人

论文给出的数据量和算力:

  • 多轮问答数据仅 6 万条(从 moss-003-sft-data 随机抽取,用骨干 LLM 重新生成答案、零样本 TTS 合成语音);
  • 语音输入侧:约 11 万小时中英内部 ASR 配对数据(阶段 1、2);
  • 语音输出侧:约 3000 小时零样本 TTS 生成的文本-语音配对数据;
  • 8 张 GPU 即可完成全部训练;
  • 骨干用 Qwen2-7B-Instruct 验证(方法上可接任意带文本模态的 LLM/多模态 LLM)。

四、结论与意义

  • 语音模态智商不掉队:因为 LLM 全程冻结,Freeze-Omni 在语音模态的智能与其骨干文本模态同级,避免了灾难性遗忘;
  • 低延迟端到端语音响应:流式编码器 + chunk 状态预测 + NAR/AR 流式解码;
  • 可插拔、可换风格:能接任何文本 LLM,保留其 prompt 遵循、角色扮演能力;想改回答风格,只需用对应风格的文本数据微调 LLM 即可;
  • 论文还做了语音输入、语音输出、口语问答、端到端延迟的系统实验。

在全双工版图里的位置:Freeze-Omni 开创了"冻结骨干派"——和 Moshi 的"双流从零建模"、Qwen/Thinker-Talker 的"大规模联合训练"形成鲜明对比。它证明了在数据和算力受限时,冻结大模型、只训轻量语音模块 + chunk 状态预测,是一条性价比极高的路线。后续 VITA 系列(VITA-1.5 入选 NeurIPS 2025)在此基础上加入视觉,逼近 GPT-4o 级实时音视频交互。

局限:双工判断仍依赖一个外部声学 VAD 做起点检测(状态预测在 VAD 触发之后),属于"外置 VAD + 模型状态预测"的中间档,而非 Moshi/GPT-Live 那种双流原生建模;无原生工具调用/Agent 能力。

参考来源

  1. Freeze-Omni 论文:https://arxiv.org/abs/2411.00774 (HTML 全文:https://arxiv.org/html/2411.00774v5
  2. 官方项目页:https://freeze-omni.github.io/

评论