流式 Sortformer 用到达序说话人缓存,零点三二秒延迟仍可在线分离

Streaming Sortformer: Speaker Cache-Based Online Speaker Diarization with Arrival-Time Ordering

Ivan Medennikov, Taejin Park, Weiqing Wang, He Huang, Kunal Dhawan, Jinhan Wang, Jagadeesh Balam, Boris Ginsburg

eess.AS, cs.SD

2025-07-24

NVIDIA 把离线 Sortformer 改成流式:按到达时间排序的说话人缓存 AOSC 存放历史声学嵌入,跨块不再搜索置换。1.04 秒延迟下 DIHARD III 全量 DER 18.97,优于 LS-EEND 的 19.61;压到 0.32 秒仍有 19.32。

这篇在解决什么

离线 Sortformer 用全长自注意力,整段音频一次性看完,才能按到达时间把说话人排好。直播字幕、在线会议做不到这一点:音频是一块一块来的,块与块之间说话人编号还会对不上。流式分离和离线分离的差距,比流式 ASR 和离线 ASR 的差距更大。已有工作用 speaker-tracing buffer 存历史帧,再靠相关度搜置换;EEND-EDA 的流式版要 attractor,延迟往往以秒计。

这篇把 Sortformer 的到达时间排序用到流式场景里。既然模型输出本身就是按先来后到排的,缓存里的嵌入也按说话人编号排好,块间置换可以不再显式搜索。

方法

骨干仍是 Sortformer:NEST 预编码器加 Transformer,四个 sigmoid,最多四人。相对原版有两处改动:换上 109M 参数、128 维 Mel、多语训练的 NEST,总参数 117M;去掉全局特征归一化,因为流式里看不到全场统计。输出步长 80 毫秒。

核心模块叫 Arrival-Order Speaker Cache(AOSC)。它存的是 NEST 预编码器的帧级声学嵌入,按说话人编号排列,编号对应到达顺序。缓存长度不够上限时原样写入;超出就按模型历史预测打分,留下高分帧。打分对「像这个人、不像别人」的帧给高分,静音帧换成平均静音嵌入,新进来的帧加一点分,每人至少保住 K 帧。每人后面再垫若干静音嵌入,方便检测说话人切换。每人存多少帧是打分动态决定的,不是固定配额。

短块上下文不够,于是在缓存和当前块之间加一条 FIFO 队列,再给当前块留一点右上下文。缓存不必每块都更新,可以按更大周期刷。推理时输入是「说话人缓存 + FIFO + 当前块和右上下文」拼在一起。因为缓存和模型输出都按到达序排,公式里直接丢掉缓存段的预测,只取当前块,不再做 STB 那种相关度置换。

训练上,先训离线 Sortformer,再用 AOSC 微调:90 秒样本按 15 秒窗往前推,缓存 15 秒(188 帧)。训练时会随机打乱缓存里的说话人顺序,并有一半批次把自注意力右上下文限制在 7 帧(560 毫秒),逼模型少依赖未来。没有用 SpecAugment 或混响噪声增强。

结果

评 DIHARD III Eval、CALLHOME part2、CH109,重叠语音都算进 DER。一个模型打全部测试集,不做分数据集微调。1 秒延迟档跟此前流式系统比:

系统延迟DIHARD III 全量CALLHOME 全量CH109 双人
LS-EEND1 秒19.6112.11未报
EEND-GLA-Large + BW-STB1 秒20.7314.29未报
流式 Sortformer-AOSC,后处理1.04 秒18.9710.795.09
同上0.32 秒19.3211.505.41
离线 Sortformer,后处理无限21.3911.264.86

1.04 秒延迟下,不超过 4 人的 DIHARD III DER 是 13.32,LS-EEND 是 13.96。CALLHOME 四人 12.40,LS-EEND 是 15.30。只在推理时套 AOSC、不微调的离线模型会明显变差,DIHARD III 全量到 29.46,说明缓存机制必须训进去。

有几处反直觉。五人以上子集上,四人上限的流式模型仍能跟上主导说话人,DIHARD III 五人以上 42.61,和 LS-EEND 的 42.98 接近。DIHARD III 和 CALLHOME 四人以上上,流式甚至优于离线,作者归因为离线模型拿 90 秒片段训练,长录音对不上;流式窗口长度固定,这个问题更轻。

延迟从 10 秒收到 0.32 秒,DER 恶化有限。RTX 6000 Ada、batch 1 时,10 秒延迟的实时因子 0.005,1.04 秒是 0.093,0.32 秒是 0.180。声明的延迟只含输入缓冲,不含计算。

为什么重要

这是目前公开数字里,1 秒延迟档最强的流式端到端分离之一,而且没有 attractor,也没有缓存上的置换搜索。模型和代码在 NVIDIA NeMo 里,Hugging Face 上有 4 人流式权重。做实时会议字幕、边听边标说话人,这条链路比「离线 Sortformer 切块再对齐」干净。

对已经在用离线 Sortformer 的人,AOSC 是同一套到达序接口的在线版,后面接流式多说话人 ASR 时,说话人编号跨块稳定,这正是上一篇 Sortformer 想要的监督信号。

局限与存疑

设计上限仍是 4 人,结论里把扩到 8 人写成未来工作。五人以上的数字是「盯住四个主导说话人」的结果,人一多就会丢。CH109 和训练用的 CALLHOME part1 有轻微重叠。后处理参数在 DIHARD III Dev 和 CALLHOME part1 上分开调,对标注风格敏感。

对比表里不少基线在部分子集上没有数字,全面领先只在有数字的格子里成立。实时因子 0.32 秒档已经到 0.180,批量或更弱的芯片上未必跟得上声明延迟。论文没把流式分离接到流式 ASR 上做端到端词错误率,这块仍是展望。

术语

原文与代码

社区讨论

相关论文

全部论文解读