“请把报告发过来。”“现在取消会议。”八个普通单词,转写系统可以一个不差地全部识别正确,却仍然把说话人认错。对会议助手来说,这是个尴尬的特性——尤其是当说“取消”的那个人,被系统分配了待办事项。
![]()
英伟达发布 Nemotron 3.5 Transcribe,把转写和说话人归属放进了同一个检查点。发布材料里讨论了词错误率、说话人分离错误率和拼接最小排列词错误率。这几个数字回答的其实是不同的问题。
为了把差别摆出来,可以做一个很小的打分示例。它用的是虚构文本,不是模型生成的转写结果。同样八个单词,按时间顺序的词错误为零,按说话人归属的词错误却是 50%。
把词分给错的人
参考文本里有两个说话人:A 说“please send the report”,B 说“cancel the meeting now”。现在假设识别出的词在时间顺序上完全正确,但说话人标签在话轮两端发生了互换。把每个预测说话人的词收集起来,假设文本就变成了:X 说“please send the meeting now”,Y 说“cancel the report”。
“report”跑到了 Y 名下,“meeting now”跑到了 X 名下。整段录音里没有哪个词消失,变的是归属。如果把识别出的词按原始时间顺序摊平,再和实际说出的序列比对,词错误率就是零——这个比对刻意丢掉了说话人标签。这是一次有用的转写检查,却是一次不完整的会议检查。
名字可以变,归属要诚实
说话人标签通常是随意的。系统可能把第一个人叫 speaker_0,也可能叫 Alice 或 X。打分器不该因为 A 变成了 Y,就惩罚一份正确的转写。拼接最小排列词错误率(cpWER)处理的就是这个命名问题:按顺序收集每个说话人的词,尝试参考说话人与预测说话人之间的各种对应关系,取词编辑次数最少的那种对应,再除以参考词总数。
在这个例子里,A 对应 X、B 对应 Y 需要四次编辑:A 的“report”变成“meeting now”,是一次替换加一次插入;B 的“meeting now”变成“report”,是一次替换加一次删除。另一种对应代价更高。最小值因此是 4 / 8 = 50%。
一个完整的迷你打分器会穷举所有排列,这对两个说话人很方便,对一场大型会议则是糟糕的方案。实用版本里,MeetEval 用的是分配算法。示例代码的关键输出是四行:
- 按时间顺序的词错误:0 / 8
- 说话人归属错误:4 次编辑,参考词 8 个,比率 0.5
- 仅互换说话人名字:0 次编辑,比率 0.0
- 第二个说话人缺失:4 次编辑,比率 0.5
这个实现曾在三个展示用例和另外 30 个生成用例上与 MeetEval 0.4.3 核对,编辑次数和参考词分母都一致。这检验的是打分代码,和某个语音识别模型的准确率无关。标签互换的对照很关键:如果仅仅交换两个名字就让分数变差,那打分器衡量的就是标签拼写,而不是谁说了什么。
看榜单时别忘了任务本身
英伟达报告称,在 Open ASR 对比中平均英语词错误率为 5.33%,在 VoiceArena 的全会话对比中 cpWER 约为 32.4%。这两个数字来自不同的评测设置,把其中一个除以另一个,并不能测出说话人归属的惩罚。
同样的区分也适用于说话人分离错误率(DER)。它衡量的是说话人-时间,cpWER 统计的是分配说话人流之后的词编辑。两者之间不存在通用的换算关系。
对会议产品来说,几个检查应该并排放:词、带说话人归属的词、漏掉的说话人,以及对困难话轮的实际试听。一份转写可以读起来很漂亮,同时把一句反对、一个承诺或一项决定记到了错误的人头上。
常见的错误是,把一份漂亮的纯词错误率结果当成说话人标注纪要可靠的证据。分母可能是词,但产品失败的地方往往是归属。这个迷你打分器还忽略了时间戳和重叠语音:说话人可能拿到正确的词,时间排列却是错的,而这项检查不会告诉你完整的故事。文本规范化也需要明确的策略——标点、数字和领域术语,在说话人分配开始之前就能改变编辑次数。
这次发布值得为它合并的语音任务试一试。评估上的教训在任何检查点下载之前都用得上:先确定应用需要的是词、说话人时间线,还是两者都要,然后针对那个实际输出打分。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.