音频语言模型:Qwen2.5-Omni、Audio Flamingo 与 GPT-4o Audio 本节摘要:2026 年的音频语言模型(Audio-Language Model, LALM)能对语音 + 环境声 + 音乐做联合推理。Qwen2.5-Omni-7B 在 MMAU-Pro 上追平 GPT-4o Audio,Audio Flamingo Next 在 LongAudioBench 上击败 Gemini 2.5 Pro。开源与闭源的差距基本弥合——除了多音频任务,所有人在那里都接近随机猜。LALM 不同于纯 ASR:ASR 只产出转录文本,LALM 产出自由形式的自然语言答案。
本节摘要:2026 年的音频语言模型(Audio-Language Model, LALM)能对语音 + 环境声 + 音乐做联合推理。Qwen2.5-Omni-7B 在 MMAU-Pro 上追平 GPT-4o Audio,Audio Flamingo Next 在 LongAudioBench 上击败 Gemini 2.5 Pro。开源与闭源的差距基本弥合——除了多音频任务,所有人在那里都接近随机猜。LALM 不同于纯 ASR:ASR 只产出转录文本,LALM 产出自由形式的自然语言答案。本节将拆解 2026 年所有 LALM 共享的三件套骨架(音频编码器 + 投影器 + LLM 解码器),讲透三阶段训练(冻结训投影器 → 全量/LoRA 指令微调 → 可选的语音输入/语音输出),并在 MMAU-Pro 与 LongAudioBench 上做基准现实检验。读完本节,你能为「呼叫中心合规审计」「无障碍声音描述」「内容审核」「长音频检索」等任务选对 LALM,并理解为什么多音频比较仍是众模型的死穴。
阅读完本节,你应当能够:
你有 5 秒音频:狗叫,有人喊「stop!」,然后静音。有用的问题跨多个轴:
一个模型用一个提示就能回答所有这些问题,就是音频语言模型(LALM / ALM)。它不同于纯 ASR:LALM 产出自由形式的自然语言答案,而不只是转录。
2026 年每个 LALM 都长这样:
训练:
| 模型 | 骨干 | 音频编码器 | 输出模态 | 访问 |
|---|---|---|---|---|
| Qwen2.5-Omni-7B | Qwen2.5-7B | 自研 + Whisper | 文本 + 语音 | Apache-2.0 |
| Qwen3-Omni | Qwen3 | 自研 | 文本 + 语音 | Apache-2.0 |
| Audio Flamingo 3 | Qwen2 | AF-CLAP | 文本 | NVIDIA 非商业 |
| Audio Flamingo Next | Qwen2 | AF-CLAP v2 | 文本 | NVIDIA 非商业 |
| SALMONN | Vicuna | Whisper + BEATs | 文本 | Apache-2.0 |
| LTU / LTU-AS | Llama | CAV-MAE | 文本 | Apache-2.0 |
| GAMA | Llama | AST + Q-Former | 文本 | Apache-2.0 |
| Gemini 2.5 Flash/Pro(闭源) | Gemini | 自研 | 文本 + 语音 | API |
| GPT-4o Audio(闭源) | GPT-4o | 自研 | 文本 + 语音 | API |
MMAU-Pro:1800 个 QA 对,覆盖语音 / 声音 / 音乐 / 混合,含多音频子集。
| 模型 | 总体 | 语音 | 声音 | 音乐 | 多音频 |
|---|---|---|---|---|---|
| Gemini 2.5 Pro | ~60% | 73.4% | 51.9% | 64.9% | ~22% |
| Gemini 2.5 Flash | ~57% | 73.4% | 50.5% | 64.9% | 21.2% |
| GPT-4o Audio | 52.5% | — | — | — | 26.5% |
| Qwen2.5-Omni-7B | 52.2% | 57.4% | 47.6% | 61.5% | ~20% |
| Audio Flamingo 3 | ~54% | — | — | — | — |
| Audio Flamingo Next | LongAudioBench SOTA | — | — | — | — |
多音频那一列对所有人都是控诉。4 选 1 的随机猜是 25%;多数模型就在那个水平附近。LALM 至今难以比较两段音频。
💡 多音频任务的失败暴露了 LALM 的一个根本短板:投影器把音频压成 token 后,LLM 要在「两段音频 token 序列」之间做细粒度比对,而这正是 Transformer 在长上下文里最不擅长的(lost-in-the-middle)。所以需要比对的场景,先用 ASR + 嵌入做检索,LALM 只做最终判断,远比让 LALM 一次吞两段音频有效。
from transformers import AutoModelForCausalLM, AutoProcessor processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B") model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype="auto") audio, sr = load_wav("clip.wav", sr=16000) messages = [{ "role": "user", "content": [ {"type": "audio", "audio": audio}, {"type": "text", "text": "你听到了什么声音?发生了什么?"}, ], }] inputs = processor.apply_chat_template(messages, tokenize=True, return_tensors="pt") output = model.generate(**inputs, max_new_tokens=200) print(processor.decode(output[0], skip_special_tokens=True))
import torch.nn as nn class AudioProjector(nn.Module): def __init__(self, audio_dim=1280, llm_dim=4096): super().__init__() self.down = nn.Linear(audio_dim, llm_dim) self.act = nn.GELU() self.up = nn.Linear(llm_dim, llm_dim) def forward(self, audio_features): return self.up(self.act(self.down(audio_features)))
就这样。投影器通常是 1~3 个线性层。在 ASR 对(音频 → 转录)上训它,就是阶段 1 的前置任务。
设计要点:投影器虽小,却是 LALM 的「翻译官」——它把音频编码器的 1280 维声学特征,搬到 LLM 的 4096 维语义空间。训练时只动它(冻结两端),相当于让它在两个已固定的高维空间之间学一个最优线性/非线性映射。这个范式与视觉语言模型的视觉投影器完全同构,是跨模态 LLM 的通用套路。
from datasets import load_dataset mmau = load_dataset("MMAU/MMAU-Pro") correct = 0 for item in mmau["test"]: answer = call_model(item["audio"], item["question"], item["choices"]) if answer == item["correct_choice"]: correct += 1 print(f"准确率: {correct / len(mmau['test']):.3f}")
分类别(语音 / 声音 / 音乐 / 多音频)分别汇报。汇总数字会掩盖模型在哪里失败。
| 任务 | 2026 年选择 |
|---|---|
| 自由形式音频 QA(开源) | Qwen2.5-Omni-7B |
| 长音频上的开源最佳 | Audio Flamingo Next |
| 闭源最佳 | Gemini 2.5 Pro |
| 语音输入/输出 agent | Qwen2.5-Omni 或 GPT-4o Audio |
| 音乐推理 | Audio Flamingo 3 或 2(音乐专精的 AF-CLAP) |
| 呼叫中心审计 | Gemini 2.5 Pro via API,对你的政策文档做 RAG |
⚠️ 四类陷阱:① 多音频过信——任务需要「哪段音频含 X」时,接近随机猜的性能是真实的;② 长音频退化——超过 10 分钟,多数模型的说话人归因会崩,先分离(第 6 节)再总结;③ 静音幻觉——使用 Whisper 编码器的 LALM 继承了同样的 Whisper 式静音幻觉问题,要 VAD 把关;④ 基准挑选——厂商博客只挑最好看的类别,自己跑 MMAU-Pro 多音频子集。
本节产出技能文档(原课程 outputs/skill-alm-picker.md),为给定音频理解任务选择 LALM + 基准子集 + 输出模态(文本 vs 语音)。决策树:
基础:运行 code/main.py,看玩具投影器范式 + 假 LALM 如何把(音频嵌入,文本 token)路由成输出 token。
进阶:在 100 个 MMAU-Pro 语音条目上给 Qwen2.5-Omni-7B 打分,与论文汇报数字对比。
挑战:搭一个最小音频描述基线:BEATs 编码器 + 2 层投影器 + 冻结的 Llama-3.2-1B。只微调投影器,在 AudioCaps 上训。在 Clotho-AQA 上与 SALMONN 对比。
下一节,我们把所有这些组件接成一条实时流水线——从麦克风采集、VAD 切块、流式 ASR、LLM 推理、流式 TTS,到喇叭回放,理解端到端延迟如何压到亚秒级。