Nemotron 3 对比 pyannote:说话人识别错误率 16.0% → 9.9%

2026年11月8日
·
10 分钟阅读
·Whisper Notes Team

一段访谈或多人会议录音转成文字后,分清每句话是谁说的非常重要。Whisper Notes 在 iPhone 和 Mac 上离线完成语音识别和说话人识别(也叫说话人分离),要在准确率和速度之间取舍,而准确率一直是我们优先追求的。最近,我们把内置的说话人识别模型从 pyannote community-1 换成了 NVIDIA 的 Nemotron 3 Diarization,并用 122 段公开的中英文录音对比了两者:说话人识别错误率(DER)从 16.0% 降到了 9.9%。

Nemotron 3 把说话人识别错误率从 16.0% 降到 9.9%

说话人识别错误率(DER)把三种错误按时长合在一起计算:认错人、漏听,以及把杂音当成人声,这是衡量说话人识别最常用的指标。除了这个总指标,下表还列出了用户最常遇到的几类问题,以及两个模型在 Mac 和 iPhone 上的速度与内存。

pyannote
community‑1
Nemotron 3
说话人识别错误率(DER,122 段录音)16.0%9.9%
人数判断正确52% 的录音80% 的录音
认错人4.5%1.0%
Mac(M5)处理 1 小时录音约 22 秒约 8.5 秒
Mac 内存占用0.88 GB0.12 GB
iPhone 15 处理 55 分钟录音约 27 秒约 12 秒
iPhone 15 识别时额外占用的内存约 830 MB约 30 MB
最多识别几位说话人模型不设上限(App 里最多 10 位)8 位

本文表格和图中,绿色表示这一方更好,且差距超出误差范围:准确率看 95% 区间是否不含零,速度和内存看差距是否远大于多次运行间的波动。错误率越低越好。准确率各行基于 122 段公开录音(共 25 小时,中英文)。速度和内存是两个模型通过 Core ML 运行的结果,Nemotron 3 使用神经引擎;Mac 只计处理时间,iPhone 计从开始识别到出结果。

这个下降不是少数录音带来的。下图把 122 段录音逐段的变化,从降得最多排到升得最多:

错误率变化(百分点)+100−10−20−30−4099 段更好零线以下:Nemotron 3 错得更少23 段更差其中 12 段差距不到 1 个百分点122 段录音,按变化大小排列

每根竖条是一段录音,表示换成 Nemotron 3 后错误率变了多少个百分点:零线以下是降低,零线以上是升高。

Nemotron 3 不如旧模型的情况有三种:说话人超过 8 位、全程只有一个人说话,以及段落更常在句子中间断开。

认错人几乎消失:4.5% → 1.0%

三类错误里,认错人最影响阅读:文字一字不差,名字却是错的。漏听是有人说话、模型却没有标出来;把杂音当成人声,则是把没人说话的片段也标给了某个人。这次换模型,改进最大的正是认错人,漏听也明显减少,把杂音当成人声的情况则基本没变。

pyannote community-1Nemotron 3合计16.0%9.9%认错人4.5%1.0%漏听8.4%6.0%杂音当人声3.2%2.9% 差别在误差范围内

122 段录音的平均值,单位为语音时长的百分比,每行两根条都从零开始。认错人和漏听的下降都超出误差范围;杂音当人声的差别在误差范围内,所以那根条用浅灰色。各项经四舍五入,相加未必等于合计。

人数判对的录音从 52% 升到 80%

人数判错,往往意味着有一部分话归错了人。人数判少,等于把两个人当成了一个人,两人的话会出现在同一个标签下,这是 pyannote community-1 最常见的错误;Nemotron 3 大幅减少了这种情况,判对人数的录音明显增多。

判少判对判多pyannote community-156642Nemotron 3129812共 122 段录音

122 段录音中,两个模型判断的人数与实际人数的对比。pyannote community-1 多数是判少;Nemotron 3 判对的更多,判错时判多、判少各 12 段。

中文录音错误率从 19.7% 降到 10.5%,会议和广播也都更准

不同录音的难度差别很大:远场收音的会议最难,广播最容易。按录音类型、语言和说话人数分组来看,录音不少于 10 段的分组错误率都有下降,中文录音几乎减半;只有 1 人这一组的差别在误差范围内。9 到 12 人的 3 段录音变差了,但样本太少,不做检验。

pyannote community-1Nemotron 3录音类型会议(远场收音) · 58 段20.4%13.9%广播 · 48 段10.8%4.1%单人(多段拼接) · 10 段14.5%10.2%语言中文 · 31 段19.7%10.5%英语 · 91 段14.7%9.8%说话人数1 人 · 14 段12.5%9.4% 差别在误差范围内2 人 · 39 段10.2%5.8%3–4 人 · 55 段20.5%12.2%5–8 人 · 11 段16.2%9.9%9–12 人(样本太少) · 3 段23.2%25.1%

每组两根条都从零开始:灰色是 pyannote community-1,绿色是 Nemotron 3,条尾是平均错误率。绿色表示下降超出误差范围,浅灰表示差别在误差范围内,琥珀色表示变差。6 段财报电话会议计入总数,但数量太少,不单列。

整理转写稿时,每 10 分钟要手动改的地方从 28.9 处降到 18.9 处

错误率最终会变成整理转写稿的工作量:要把说话人视图改对,至少需要多少次合并段落、拆开段落和改说话人标签。我们在 4 段带逐字参考文本的双人录音(荷兰语 2 段,中文、芬兰语各 1 段)上算了这个次数。读者另一种容易注意到的错误,是一个人说的一句话被拆给了两个人;在 12 场远场收音的英语会议上,两个模型都很少出现这种情况,差别在误差范围内。

pyannote
community‑1
Nemotron 3
每 10 分钟需手动修改的次数(4 段双人录音)28.918.9
一句话被拆给两个人(12 场英语会议)0.58% 的句子0.88% 的句子

手动修改次数只有 4 段录音,不做统计检验,不能代表普遍情况。“一句话被拆给两个人”指同一个人说的一句话,文字被分进了两个人的段落。

Nemotron 3 更快,内存不到原来的七分之一

在设备上离线运行,速度和内存同样重要。下表是两个模型通过 Core ML 运行时的处理时间和内存,Nemotron 3 使用神经引擎。在我们测的每台设备上,Nemotron 3 都更快,内存也少得多,这对只有 4 GB 内存的老款 iPhone 尤其重要。

pyannote
community‑1
Nemotron 3
Mac(M5)
1 小时录音约 22 秒约 8.5 秒
内存0.88 GB0.12 GB
iPhone 15
55 分钟录音26.6 秒11.8 秒
识别时额外占用的内存833 MB30 MB
iPhone 12 mini
55 分钟录音30.1 秒17.2 秒
识别时 App 内存峰值638 MB71 MB

多次运行的中位数(pyannote community-1 在 iPhone 15 上只跑了一次),录音都是同一场 55 分钟、10 人参与的财报电话会议。两个模型都通过 Core ML 运行,Nemotron 3 使用神经引擎。Mac 只计处理时间,不含音频解码和模型加载;iPhone 计从开始识别到出结果,含模型加载,pyannote community-1 还含当时配套的后处理。手机全程连着 USB,每次都在机身冷却后开始。

Core ML 第一次在神经引擎上运行一个模型前,要先为这台设备编译模型:Mac 约 7 秒,iPhone 15 约 1 分钟。编译好之后,再次加载只要零点几秒。

pyannote community-1 仍然更好的地方

  • 超过 8 位说话人。Nemotron 3 最多识别 8 人;3 段 9 到 12 人的录音里,有 2 段比 pyannote community-1 差。
  • 只有一个人说话。14 段单人录音里,Nemotron 3 有 5 段多分出了说话人,pyannote community-1 只有 1 段。
  • 段落在句子中间断开。12 场英语会议里,这种分段占 25.8%,pyannote community-1 是 14.6%。

在 Whisper Notes 里用好 Nemotron 3 的几个小技巧

  • 知道有几个人,就先设好人数。在 108 段两人及以上的录音里,告诉 Nemotron 3 人数后,有 15 段的人数被改对,没有一段被改错;错误率没有明显变化(+0.16 个百分点,在误差范围内)。
  • 只有一个人说话,就不必识别说话人。这样不会偶尔冒出一个“第二个人”。
  • 超过 8 个人时,把标签当作初稿。需要时在说话人视图里合并、重命名。
Whisper Notes Mac 版中按说话人分段的会议转录稿,打开了「Not right?」菜单:Auto-detect remote speakers,以及 2 到 8 位远程说话人

在 Mac 的说话人视图里,从「Not right?」设定说话人数

说话人识别在 iPhone 和 Mac 上用法相同,全程在设备上完成。具体用法见 Whisper Notes 现已支持说话人识别。

两者原理:pyannote 先切片再聚类,Nemotron 3 按出场顺序给人编号

pyannote community-1 是一条三步流水线:先把音频切成 10 秒的窗口,在每个窗口里找出谁在说话(每个窗口最多 3 人,同一时刻最多 2 人);再给每段语音提取一个声纹;最后用 VBx 聚类,把相近的声纹归为同一个人。窗口里的编号只在本窗口内有效,所以总人数要到最后一步才能确定。

① 切窗口,找出谁在说话每 10 秒一个窗口;窗口里的编号只在本窗口内有效1212121210 秒10 秒10 秒10 秒② 提取声纹每段语音变成一个声纹向量③ VBx 聚类相近的声纹归为同一个人,到这一步才确定人数说话人 A说话人 B说话人 C

Nemotron 3 Diarization 只用一个模型:一个 31 层的 Transformer 编码器,对每个时刻给 8 条说话人轨道各打一个分。每条轨道单独打分,所以几个人同时说话时,几条轨道会同时亮起。它沿用 NVIDIA 的 Sortformer 方法,按每个人第一次开口的先后给轨道编号,最先开口的人永远在第 1 条轨道,这样模型就不用去猜“这个人该排第几”。按模型卡的流式用法,它还用一个按出场顺序排列的说话人缓存记住前面出现过的人,后面的片段就能对上同一个编号。

一个模型,每个时刻给 8 条轨道各打一个分轨道按第一次开口的先后编号12345678两人同时说话:两条轨道同时亮第 4–8 条:这段录音里没人用第 1 条轨道永远是最先开口的人

两种做法各有边界:pyannote community-1 不设人数上限,但同一时刻最多分出两个人;Nemotron 3 能分别标出同时说话的几个人,但只有 8 条轨道,最多识别 8 人。

示意图为简化画法。pyannote community-1:在 Whisper Notes 中约 21 MB,CC BY 4.0(模型卡);分段模型见 Plaquet 与 Bredin(Interspeech 2023),声纹模型来自 WeSpeaker,聚类用 VBx(Landini 等,2022)。Nemotron 3 Diarization:97 MB(Fluid Inference 的 8 位 Core ML 转换版),约 1 亿参数,OpenMDW 1.1(模型卡);方法见 Sortformer 和 Streaming Sortformer 两篇论文。

测试方法

  • 录音。122 段公开录音,共 25 小时,英语和中文,每段 1 到 12 位说话人,包括远场收音的会议、广播、财报电话会议和由片段拼成的单人录音。另有 5 段双人录音(英语、荷兰语、中文、芬兰语),其中 4 段带逐字参考文本。
  • 数据集。AMI、AISHELL-4、AliMeeting、VoxConverse、Earnings-21、LibriSpeech、IFADV、SKN,以及我们自己的录音;只用许可证允许公开结果的数据集,没有用任何用户录音。
  • 指标。说话人识别错误率(DER),按 10 毫秒一帧计算,边界不留容差,重叠语音计入,按录音取平均。
  • 统计。95% 区间来自对整段录音的 10,000 次重抽样(bootstrap);少于 10 段录音的分组不给区间。
  • 设备。一台 M5 Mac、一台 iPhone 15、一台 iPhone 12 mini;准确率在 Mac 上算出。
  • 预先登记。测试方案于 2026 年 11 月 2 日定稿;双人录音的划分于 11 月 4 日冻结,当时还没有任何模型跑过这些片段。
完整测试细节

数据选取。测试问题和规则是为一个更大的基准提前定好的;本文这个子集按许可证筛选,而不是按结果挑选,再用同一批输出、同一套打分重新计算。由 LibriSpeech、AISHELL-4 片段拼成的单人录音,计入各自的来源数据集。我们只公开汇总结果,不公开任何音频或参考文本。

数据集许可证用到的录音
AMI Meeting CorpusCC BY 4.016 场会议,16 段一分钟节选
AISHELL-4CC BY-SA 4.05 场会议,5 段节选,5 段拼接的单人录音
AliMeetingCC BY-SA 4.08 场会议,8 段节选,1 段双人录音
VoxConverseCC BY 4.0(视频版权归原作者)30 段广播,18 段节选
Earnings-21CC BY-SA 4.06 场财报电话会议,1 段双人录音
LibriSpeechCC BY 4.05 段拼接的单人录音
IFADVGNU GPL v2 或更高版本2 段双人录音
SKN 芬兰语方言样本CC BY(芬兰语言研究所)1 段双人录音

许可证以各数据集官方页面的说明为准,核对于 2026 年 11 月。

区间。总体下降 6.0 个百分点(4.5 到 7.6)。漏听下降 2.3 个百分点(1.3 到 3.4),认错人下降 3.4 个百分点(2.4 到 4.6);杂音当人声下降 0.30 个百分点,在误差范围内(−0.02 到 0.62)。人数判断正确的比例提高 27.9 个百分点(17.2 到 38.5)。分组中,除 1 人组外,各组区间都不含零。12 场英语会议上,“一句话被拆给两个人”的区间含零,“段落在句子中间断开”的区间不含零。

打分程序。我们的打分程序与 pyannote.metrics 相差不超过 0.003 个百分点。

超过 8 人的录音。这类录音的结果对芯片和音频解码的细微差异很敏感:那场 55 分钟、10 人的财报电话会议,Nemotron 3 换芯片、换设置、换音频解码方式,错误率在 30.6% 到 42.8% 之间浮动,pyannote community-1 是 21.6%。

后处理参数。部分后处理参数在预先登记之后、只用单独的调参录音选定,测试录音只用于报告结果。

局限。准确率只测了英语和中文;手动修改次数只有 4 段录音。Mac 的计时来自一台同时运行其他任务、装着 macOS 测试版的 M5 Mac;手机全程连着 USB,没有测耗电。

试一试

Whisper Notes 的 iPhone 版和 Mac 版都已改用 Nemotron 3 识别说话人。有问题欢迎发邮件到 support@whispernotes.app。