ASR 实验室
说话人区分测试:168 分钟中文播客里,谁说了什么
我们用开放权重的说话人区分模型测试一集 168 分钟的中文多嘉宾节目,并与人工标注的 20 分钟片段对照:6 位说话人全部找出,33 处换人对 30 处,59 个句块对 56 个,CPU 上约 29 倍实时。
2026-10-14中文说话人区分中文语音识别播客转录SRT评测
摘要
- 测试源:一集 168 分钟的中文多嘉宾谈话节目,共 6 位真实说话人。来源已做脱敏,这里只公布测量结果。
- 模型:NVIDIA Nemotron 3 Diarization(Sortformer,约 9900 万参数,开放权重,许可对商用友好),未做任何调参。
- 在人工标注的 20 分钟片段上:6 位说话人得到 6 个聚类,33 处换人对了 30 处,59 个句块对了 56 个。
- 同一集节目上,云端语音识别服务自带的说话人编号表现差得多:6 个人给出 48 个编号,合并后仍有 19 个。
- 现状:我们正在把该模型集成进转录后端。目前 Audio2SRT 的说话人标注来自语音识别服务商。
为什么做这个测试
多嘉宾对话的字幕,只有把每一行对到正确的人才有用。中文播客里轮流发言很快、插话很短、有人抢话,归属很难做对。我们想知道说话人区分模型在这类音频上能做到多好,并与云端识别服务返回的说话人编号做对比。
方法
- 测试源:一集 168 分钟的中文多嘉宾节目,6 位说话人。
- 标准答案:由人工在 20 分钟片段内逐处标注换人位置(33 处)和每个句块的说话人(59 个句块,6 位真实说话人)。
- 模型:Nemotron 3 Diarization,默认设置,不针对该节目调参,在 20 线程 CPU 上运行。
- 计分:某处换人,模型在该处划出边界且两侧聚类归属正确,才算对;某个句块,其主要聚类对应到正确的真实说话人,才算对。同时给出说话人区分错误率(DER)。
- 对照:云端识别服务在同一集上的说话人编号、声纹方案,以及该模型的低延迟流式配置。
结果
| 指标 | 结果 |
| 找到的说话人数 | 6 个聚类,对应 6 位真实说话人 |
| 换人位置正确 | 30 / 33 |
| 句块正确 | 56 / 59 |
| 说话人区分错误率 | 22.2%(漏检 15.3%,混淆 6.9%) |
| 20 分钟片段处理时间 | 20 线程 CPU 上 41 秒(约 29 倍实时) |
| 整集 168 分钟 | 312 秒,内存 7.2 GB |
各说话人句块命中(已匿名为说话人 A 至 F):
| 说话人 | 正确 / 总数 |
| A | 28 / 29 |
| B | 17 / 17 |
| C | 8 / 8 |
| D | 1 / 2 |
| E | 1 / 2 |
| F | 1 / 1 |
同一集上的对照:
| 方案 | 结果 |
| 云端识别服务的说话人编号 | 48 个编号合并为 19 个,真实只有 6 人 |
| 声纹方案 | 对一位常驻说话人约 72% |
| 低延迟流式配置 | 更差:7 个聚类,耗时 750 秒 |
错在哪里
错误数量不多,类型也清楚:
- 一句话说到一半换人,按句子为单位的视角无法表示这种情况。
- 短于 1 秒的插话,模型倾向于把它并入相邻说话人。
15.3% 的漏检主要来自句子内部的停顿,而不是丢失说话人。
这对你的 SRT 意味着什么
字幕里的说话人标注决定每一行算谁说的。模型能找对人数时,长篇多嘉宾节目需要的人工清理量,比把一个人拆成很多编号的服务商结果少得多。
我们的集成方案:
- 把区分结果作为说话人分段来源,按时间重叠映射到词级时间戳。
- 短于 1 秒的插话沿用相邻说话人,并标记为低置信度,方便你知道该检查哪几行。
- 说话人先标为说话人 1、2、3……,由人来命名。
这项功能尚未在 Audio2SRT 上线。目前说话人标注来自语音识别服务商,建议人工复核。想体验当前流程,见 MP3 转 SRT 和 价格。
局限
只有一集节目、一种语言、一个 20 分钟的人工标注片段、6 位说话人。这些数字描述的是本次测试,不是通用保证。重叠更多或麦克风更少的录音,结果会不同。