NVIDIA 把「谁在说话」做成 100M 开源模型:8000 小时会议,0.32 秒就能认人

开会录音转文字,最烦的不是转写错词,而是转写出来根本分不清哪句是哪个人说的。NVIDIA 上周放出了一个专门解决这个问题的开源权重模型 Nemotron-3-Diarization,定位就是「谁在什么时候说话」,也就是 speaker diarization。模型只有 100M 参数,却把实时识别压到了 0.32 秒的输入缓冲延迟,还能同时区分最多 8 个说话人。

这模型最麻烦也最值钱的点,其实是它在「实时流式」上的取舍。传统 diarization 大多是离线一次性算完,等录音全录完才给你分好角色。Nemotron-3 不一样,它支持 streaming,音频按 chunk 进来、按 chunk 出结果,靠一个叫 Arrival-Order Speaker Cache(AOSC)的机制把前面 chunk 的说话人身份保留住,再用 FIFO 队列提供最近帧的上下文。翻译成人话就是:它边听边记谁是谁,不会因为分块处理就把一个人的声音搞丢。

延迟可以自己调。模型卡里给了三档推荐配置——低延迟 1.04 秒、超低延迟 0.64 秒、极低延迟 0.32 秒,还有一档 30.4 秒的 offline 模式。0.32 秒这档意味着音频进来之后最多等 0.32 秒就能出说话人标签,对于实时转写、电话会议、直播字幕这类场景是够用的。当然,输入缓冲延迟和实际计算时间不是一回事,模型卡里特意标注了这一点。

性能上 NVIDIA 自己报了两个指标,DER(Diarization Error Rate,越低越好)和 SCA(说话人计数准确率)。拿离线 30.4 秒这档看,DIHARD III 全集的 DER 是 12.73,CALLHOME-Part2 是 9.10,AliMeeting Test Near 是 6.40。对比它自家的上一代 4-speaker baseline(diar_streaming_sortformer_4spk-v2.1),在 NOTSOFAR1 这类远场单麦场景上改进尤其明显——离线档 DER 从 30.49 掉到 11.00。远场录音一直是 diarization 的老大难,这个提升算是实打实。

有一点值得注意:这些 DER 数字不是随便能复现的。模型卡里说得很清楚,AMI、AliMeeting、NOTSOFAR1 用的都是强制对齐(forced alignment)生成的参考标签,因为原始标注是按转写目的做的,不是按帧精确的 diarization 评估做的,直接拿来算 DER 会高估漏话误差。所以如果你想复现,必须用卡里链接给出的那份参考 RTTM,换任何标签结果都不可比。这不是在泼冷水,是提醒别拿不同协议的分数互相打架。

用法上 NVIDIA 给了两条路。要么用 NeMo Speech 生态(Python 3.12+),一条命令 nemo-speech diarize meeting.wav 就能跑本地 diarization,还能用 --diarize --json 给转写结果加说话人标签;要么直接用 Hugging Face Transformers,从源码安装后 AutoModelForAudioFrameClassification 加载,音频按 chunk 喂进去,每 10ms 出一帧,共 8 个通道的概率。100M 参数在 bf16 下跑起来不重,本地 RTX 就能压得住。

数据方面,模型在约 1 万小时真实对话加 8 万多小时模拟多说话人混合音频上训练过,语言覆盖英文、中文、印地语、卡纳达语、泰卢固语、孟加拉语等。许可走的是 OpenMDW License 1.1,商用和非商用都行。模型页面上显示 9 个微调版本、25 个量化版本,说明社区已经在动手往下游场景适配了。

比较实际的一个场景:接进 streaming ASR 流水线,把「谁说了什么」喂给会议纪要 Agent,让摘要不再只是「有人说了这段」而是「谁对谁说了什么」。0.32 秒的延迟配上 100M 的体积,够小团队在实况场景里试水了。真要做大规模并发评估,卡里也给了 e2e_diarize_speech.py 脚本,能调 chunk_len、fifo_len 这些参数跑完整 DER 和 RTFx。

当然,8 个说话人只是上限,不代表 8 人一桌的圆桌会议能做得完美——从 DIHARD III 的数据看,5-9 个说话人的档位 DER 明显高于 1-4 人档,人一多、重叠说话一多,任何 diarization 系统都会吃力。这个模型也不例外。至于它到底能不能扛住你手头那种充满抢话、插嘴、录音环境嘈杂的会议,还是得拿自己的数据跑一遍才知道。NVIDIA 自己也反复强调,上线前要用业务场景数据做额外测试。

(发布模式,正文完)

相关链接

  • 模型主页:https://huggingface.co/nvidia/Nemotron-3-Diarization
  • 官方博客:https://huggingface.co/blog/nvidia/nemotron-diarization
  • 在线演示(Streaming ASR):https://huggingface.co/spaces/nvidia/nemotron-diarization
  • NeMo-Speech.cpp:https://github.com/NVIDIA/NeMo-Speech.cpp
  • NeMo Speech:https://github.com/NVIDIA-NeMo/Speech