论文题目:《Train Short, Infer Long: Speech-LLM Enables Zero-Shot Streamable Joint ASR And Diarization On Long Audio》

arXiv链接:https://arxiv.org/pdf/2511.16046


01、先搞懂背景:我们要解决啥问题?

简单说,这篇论文要做的是“联合自动语音识别(ASR)和说话人分割”——就是在多说话人场景(比如会议、多人聊天)里,搞清楚“谁在什么时候说什么”。这事儿看着简单,之前的方法却有不少坑:
  • 级联系统(比如先做ASR再做分割):前面步骤错了,后面会跟着错(比如ASR把“张三说的话”转错了,分割再准也没用);
  • 短音频端到端模型(比如Sortformer、Meta-Cat):得分别训ASR和分割的编码器,而且只能处理20秒以内的音频,长音频的“全局说话人一致性”搞不定(比如同个人在不同片段被标成“speaker1”和“speaker2”);
  • LLM辅助模型(比如DiarizationLM):得先有独立的ASR和分割结果,再用LLM后处理,不是端到端的,还不能实时流式推理。
所以作者就想:能不能做一个模型,只训短音频,却能处理任意长音频的实时推理,还能端到端解决“谁在说什么”?这就是JEDIS-LLM的由来。

02、核心创新:JEDIS-LLM是怎么设计的?

这部分是重点,主要分“短音频训练”和“长音频流式推理”两部分,全是干货。
1. 短音频训练:基础架构+关键优化
模型是在Phi-4-Multimodal(一个多模态Speech-LLM)的基础上改的,核心加了“词级说话人监督”,目的是让模型同时学好ASR和分割。

(1)Speech-LLM的核心:段级说话人归因目标
之前有些模型会在“每个词前面都插说话人ID”(比如“speaker1:你好,speaker1:吃饭了吗”),但这样太浪费LLM的上下文,还会打乱语义。作者改用“段级目标”——只有说话人切换时才插ID(比如“speaker1:你好,吃饭了吗?speaker2:吃了,你呢?”),既保留上下文,又能区分说话人。具体流程很直观:
  • 语音信号先过Speech-Encoder生成特征,再用Projector映射成LLM能读的格式(叫Es);
  • 文本提示(比如“请转录并标注说话人”)和目标结果(带说话人ID的转录文本),先分词再转成embedding(Ep和Et);
  • 把Es、Ep、Et拼起来喂给LLM,让LLM预测带说话人ID的转录文本,损失用交叉熵(LLLM);
  • 还加了个LoRA(α=32,rank=16),不用全量训LLM,省算力。
(2)关键优化:词级说话人监督(比帧级好用!)
为了增强分割能力,作者加了个“Spk-Decoder”(3层Transformer),专门做“词级说话人预测”——比如把转录文本里的每个词,对应到它的说话人ID(比如“你好”→speaker1,“吃了”→speaker2)。
为啥不用之前流行的“帧级监督”?因为帧级标签没语义(就是纯音频帧的分类),还容易有标注误差,反而会拖累ASR性能;词级监督结合了文本语义,既帮分割,又不影响ASR。
注意:这个Spk-Decoder只在训练时用,推理时就扔了,不增加计算量。总损失是LLLM和LSpk的加权和,权重μ=0.5,平衡两个任务。
2. 长音频流式推理:SPC机制解决“说话人ID乱飘”
长音频最大的坑是“分块推理时ID不一致”——比如第一段把“张三”标成speaker1,第二段又标成speaker2,传统方法得用“全局聚类”后处理,没法实时。作者搞了个“Speaker Prompt Cache(SPC)”,完美解决这个问题。

(1)SPC是啥?怎么用?
SPC就是个“缓存库”,存着之前见过的每个说话人的“代表性片段”——包括一小段音频(≤5秒)和对应的转录文本。推理时:
  • 如果是第一次处理(SPC空),直接用当前音频块+基础提示推理;
  • 如果SPC有内容,就把缓存里的所有音频拼在当前块前面,缓存的转录文本拼在提示后面,让LLM“看着之前的说话人信息”来预测当前块,自然就保持ID一致了。
(2)SPC怎么动态更新?
作者给了个算法(Algorithm 1),逻辑很清晰:
  1. 先用“Word-Timing Model”(强制对齐模型)把当前块里每个说话人的音频片段拆出来;
  2. 挑最长、无重叠的片段(文本至少8个词,还得有标点,保证质量);
  3. 用dvector(一个训好的说话人验证模型)算这个新片段和SPC里已有片段的相似度,超过0.7就更新SPC——既保证缓存质量,又不存没用的内容。
(3)实用功能:说话人档案集成
如果是已知参会人的场景(比如公司会议),可以不用动态SPC,直接用“人工标好的高质量音频+转录”当“说话人档案”,还能映射真实姓名(比如speaker1→Mike,speaker2→Susan)。这样不用更新缓存,性能更稳,还符合实际使用场景。

03、实验:数据、配置和结果都在这

1. 训练数据:10k小时,覆盖多种场景
作者用了5个数据集,量很足,覆盖2-11个说话人的场景,具体如下:

(模拟数据还特意去了非英语内容,加了轻微重叠和房间回声,更贴近真实场景)
2. 训练配置:硬件和参数
  • 硬件:16个NVIDIA A100(80GB),每个GPU的批大小是256秒音频;
  • 优化器:AdamW,学习率1e-4,1000步预热,总共训40k步;
  • Spk-Decoder:3层Transformer,隐藏层1024维,16头注意力。
3. 评估设置:分“短音频本地”和“长音频全局”
  • 本地场景(≤20秒):用AMI Test、CH109 Full、内部测试集,非流式推理,看WDER(词分割误差率)和cpWER(拼接最小置换词错误率);
  • 全局场景(长音频):用CH109 Test、Fisher Test,分“Oracle分块”(用真实句子边界分块)和“VAD分块”(用语音活性检测分块),还加了SA-WER(说话人归因词错误率,更严格,不用找最优ID匹配)。

04、实验结果:JEDIS-LLM表现有多好?

咱们逐个看关键表格,结果很直观——几乎全方位碾压基线模型。
1. 短音频本地场景(表1):比Sortformer、Meta-Cat强太多

重点看“JEDIS-LLM最终模型”和基线的对比:
  • AMI Test:JEDIS-LLM的WDER才2.06%,cpWER19.46%;而Phi-4-Multimodal(没分割能力,全标speaker1)的WDER14.52%,cpWER28.09%;Sortformer、Meta-Cat的cpWER都在21%以上;
  • 消融实验还证明:词级监督比帧级好(帧级会让cpWER变差),段级目标比词级目标好(词级打乱上下文)。
2. 长音频全局场景(表2):流式推理比离线基线还强

主要比的是DiarizationLM(级联离线模型)和JEDIS-LLM的流式/离线版本:
  • 流式JEDIS-LLM(Oracle分块+开SPC更新):CH109 Test的WDER1.73%,cpWER18.20%;而PaLM2版DiarizationLM的WDER4.25%,cpWER20.22%,差了一大截;
  • 开SPC更新比不开好:比如VAD分块下,开更新WDER2.54%,不开2.62%;
  • 更惊喜的是:流式推理居然比“离线分块+全局聚类”还好(CH109 Test的WDER1.73% vs 2.48%),说明SPC的一致性做得比后处理聚类还棒。
3. 说话人档案效果(表3):ID匹配更准,还能标真实姓名

加了档案后,最关键的变化是“SA-WER和cpWER的差距变小了”:
  • Oracle分块:没档案时差距7.78%(说明ID匹配乱),有档案后差距才2.07%(ID和真实对应更准);
  • 还能直接映射真实姓名(比如speaker1→Mike),这对会议转录等场景太实用了。
4. 附录补充:块长度和CoT的小发现(表5、表6)

表5(块长度/SPC长度):SPC短到3秒更好(缓存文本误差少),块太短(比如5秒)会变差(难选高质量片段更新SPC);

表6(Chain-of-Thought尝试):加“预测说话人数”的推理链(比如“estimated speaker number: 3”),4个说话人的计数准确率从30.4%升到37.0%,但cpWER没变好——说明模型只是会数人数,没真正理解对话动态。

05、总结:这篇论文的贡献在哪?

  1. 技术突破:首个只训短音频(≤20s),却能零样本处理长音频流式推理的端到端模型,不用后处理;
  2. 核心创新:SPC机制解决ID一致性,词级监督增强分割,说话人档案提升实用性;
  3. 性能SOTA:短音频赢Sortformer、Meta-Cat,长音频赢DiarizationLM,还能实时流式——给多说话人语音理解(比如会议转录)提供了新方案。