来源丨乐百一家

论文题目:《Speech-Aware Long Context Pruning and Integration for Contextualized ASR》

论文地址:https://arxiv.org/pdf/2511.11139

作者是中科院自动化所和中国科学院大学的团队,核心是提出了一个叫SAP²的框架,专门解决长上下文场景下自动语音识别(ASR)又慢又不准的问题,代码还开源了,地址是 github.com/jymh/SAP2-ASR,想复现的朋友可以直接冲。

01、为啥要做这个研究?

现在普通场景的ASR已经很好了,比如日常对话识别, accuracy快赶上人了,但一碰到复杂场景就拉胯——比如会议演讲, speaker会放幻灯片,这些幻灯片的OCR文本里有很多领域术语(比如医学里的“glaucoma”青光眼),但这些文本动辄几万词,一来模型“吞不下”(上下文窗口有限),二来噪声多、有用信息少,反而会让识别变糟:

左边是“少见人名”识别,右边是“医学术语”识别,红色字是模型认错的专有名词,绿色字是TPI修正的。能明显看到,MaLa-ASR和Qwen2-Audio-PC经常把人名、术语拼错,而TPI能精准修正,说明它在“领域专有名词”识别上的优势。

之前解决这个问题的方法主要有两种,但都有坑:
  • 深度偏置端到端(bias-E2E)模型:靠注意力影响解码,但性能不如预训练大模型,而且架构改起来麻烦;
  • SpeechLLM模型:把上下文当提示词用,灵活是灵活,但处理长文本和滤噪声的能力不行。
作者受神经科学启发:人听语音时,如果能结合先验知识(比如知道接下来会讲医学内容),听得会更清楚。所以他们想模拟这个过程——把没用的上下文“剪”掉,只留和语音相关的部分,于是就有了SAP²。

02、SAP²到底是怎么工作的?

这部分是核心,重点看两个创新点:两阶段剪枝整合和语音驱动注意力池化。
1. 先明确要解决的问题
输入是语音的声学特征X(比如一段会议发言)和长上下文文本Z(比如对应的5页幻灯片OCR),目标是让模型输出正确的文本Y。但Z太长太乱,所以先把Z“剪”成核心关键词Ẑ,这样模型只需要算pθ(Y|X,Ẑ),任务就简化了。
2. 核心流程:两阶段剪枝整合(SAP²-TPI)

整个框架分两步,每步都用到了“语音驱动注意力池化”,相当于先“粗剪”再“精用”:
阶段1:语音感知剪枝——把没用的上下文删掉
拿Z(长文本)和X(语音)一起喂给SpeechLLM,用“语音驱动注意力池化”算两者的相关性,挑出和语音强相关的Ẑ(核心关键词)。比如幻灯片里有1000个词,最后可能只留50个和当前发言相关的术语,大大减少后续计算量。
阶段2:上下文整合ASR——用剪好的关键词辅助识别
把Ẑ和X拼在一起,再用一次“语音驱动注意力池化”压缩Ẑ的embedding,最后喂给ASR模型解码。训练时还要把“剪枝模型”和“ASR模型”的参数一起优化,保证剪出来的Ẑ既准又有用。
3. 关键创新:语音驱动注意力池化
这是让SAP²能“精准剪枝+高效压缩”的核心,步骤很清晰:
  1. 先把语音X转成语音embedding hx,把上下文Z转成文本embedding hz;
  2. 算hx和hz的多头交叉注意力得分——得分高的文本token,说明和语音更相关;
  3. 按固定窗口(默认2个token为一个窗口)对得分加权后的hz做“池化”,比如原来100个token,池化后变成50个,既压缩了长度,又没丢关键信息。

03、实验做得怎么样?

作者做了超详细的实验,从数据集、指标到消融实验都很全,重点看性能表现和核心模块有效性。
1. 实验 setup:用什么数据、怎么评?
1.1 数据集
两个常用数据集,覆盖不同场景:
  • SlideSpeech:会议演讲场景,上下文是幻灯片OCR文本,分S95(161小时)和L95(473小时)训练集,还特意做了“1-slide”和“5-slide”的对比,看长上下文的影响;
  • LibriSpeech:有声书场景(通用领域),上下文是动态建的“偏置词表”,训练集分train-clean(460小时)和train-other(500小时)。
1.2 评价指标
重点看四个:
  • WER(词错误率):整体识别准不准;
  • B-WER(偏置词错误率):上下文里的关键词识别得怎么样(最核心,毕竟剪枝就是为了关键词);
  • U-WER(无偏词错误率):非关键词的识别率,看模型基础能力没丢;
  • 召回率:关键词有没有被完整保留下来。
1.3 基线模型
对比了主流方法,比如非上下文的SlideSpeech基线、MaLa-ASR、Qwen2-Audio,还有上下文的CPP、LCB-net、DB-RNNT+DB-LM等,保证结果有说服力。
2. 核心实验结果:SAP²是不是真的牛?
(1)在SlideSpeech上:刷新SOTA

  • 5-slide上下文时,WER低到7.71%,比之前的SOTA(MaLa-ASR)在S95/L95上的WER分别降了30.19%和10.45%;
  • 关键词识别超给力:B-WER比“不掺上下文的基线”降了41.1%,召回率还能保持95.59%(剪枝没把有用的关键词弄丢);
  • 长上下文鲁棒性:从1-slide加到5-slide,WER一直降,没出现“文本越长性能越差”的情况。
(2)在LibriSpeech上:同样稳得一批

  • test-clean子集最低WER1.12%,比之前的SOTA(Gong et al. 2024)在N=100(偏置词100个)时降0.48%,N=500时降0.74%;
  • 极端情况也能打:偏置词从100个加到1000个(翻10倍),test-clean的WER只升了0.1%,说明处理大量上下文时很稳定。
3. 消融实验:核心模块到底有没有用?
作者专门拆了两个关键模块来测,证明不是“堆模型”而是真有创新:
(1)两阶段剪枝是不是必要的?
对比了三种方案:
  • TPI(两阶段,SAP²的核心);
  • PC(直接把Z和X拼一起,不剪枝);
  • JPI(把“剪枝”和“ASR”放一个模型里联合训练)。
结果很明显:

  • TPI的B-WER最低,比如L95 5-slide场景,TPI的B-WER是4.54%,比PC低1.72%,比JPI低2.8%;
  • JPI因为要同时干“剪枝”和“识别”,两个目标打架,关键词筛选的F1-score只有21.19%,而TPI有94.48%(差了4倍多)。
(2)语音驱动注意力池化是不是有用?

加了池化vs没加池化对比:
  • 加了之后,TPI和PC的WER都降了,而且上下文越长(比如5-slide),效果越明显;
  • 效率也提升了:TPI的训练时间比没加池化的Qwen2-Audio-TPI少24.97%,推理时间少20.20%,又快又准。
4. 其他细节实验
(1)池化窗口大小的影响

试了窗口2、4、8,发现窗口越大,WER会稍微上升(毕竟压缩得太狠了),但不管用哪个窗口,TPI始终比PC、JPI好,而且PC对窗口大小变化最不敏感(稳健性强)。
(2)长上下文泛化能力

模型只在“5-slide”数据上训练,却测试了1~25-slide的场景:
  • 当slide数量>3时,TPI就开始比基线(Qwen2-Audio-TPI)好;
  • 到25-slide时,平均token长度都到1562.73了,WER还是很稳定,没崩,说明对超长上下文的适应能力很强。

04、总结和未来计划

1. 核心贡献
  1. 搞了个“语音感知剪枝框架”,能让SpeechLLM自动挑出和语音相关的关键词,解决长文本“吞不下”的问题;
  2. 提出“语音驱动注意力池化”,既能压缩上下文,又不丢关键信息,平衡了 accuracy和效率;
  3. 在两个数据集上都刷新了SOTA,而且长上下文场景下性能很稳。
2. 未来要做的
  1. 现在剪的是“单个关键词”,以后想试试“短语级”的语义上下文(比如“sriracha sauce”这种词组,而不是单独的“sriracha”);
  2. 想把幻灯片的“图像信息”也加进来,搞多模态整合(毕竟幻灯片不只有文字,还有图);
  3. 进一步优化极端长上下文(比如100页幻灯片)的性能。