说话人分离
又称:说话人标签
更新于
定义
说话人分离是判断录音中谁在什么时候说话的过程,以便按说话人给转写文本加上标签。它回答的是“这是谁说的?”,而不是“说了什么?”。
说话人分离是独立于语音识别的模型。它会聆听声音的变化,把听起来像同一个人的片段归为一类,并为每一类分配标签,通常是“说话人1”和“说话人2”,直到附上名字为止。与转写文本结合后,就形成了常见的会议记录格式,每一行都标明了说话人。
它是转写功能,而不是听写功能。听写时只有一个说话人,就是你,所以听写工具用不上说话人分离,也不应因为缺少它而被评判。转写会议、采访或播客时,它决定了你得到的是一份转写文本,还是一堵文字墙。
为什么它很难
两个声音相似的人、一个因感冒而声音变了的人、交叠的说话声,以及一支把所有人都压成同样环境音的笔记本电脑麦克风,都会让聚类失效。说话人的数量通常是猜出来的,而不是已知的。最好的系统在播客这种干净、轮流发言的音频上表现不错,但在三个人互相抢话的真实会议中则差得多。要做好手动修正标签的准备。
哪些工具具备这项功能
像Otter.ai这样的会议转写工具,把产品建立在它之上。MacWhisper这样的文件转写工具,能为录音提供说话人标签。听写工具通常没有,因为这项工作从来不会有两个说话人。如果说话人分离在你的需求清单上,那你要找的是转写工具。
如何在Mac上为录音添加说话人标签
开源工具包pyannote.audio可以在你的电脑上本地运行说话人分离。它会告诉你谁在什么时候说话,并给出每段发言的开始和结束时间。它不生成文字,所以你需要把它的输出与语音识别器生成的转写文本配合使用。
下面的步骤使用社区版流水线,它以CC-BY-4.0许可证发布,需要一个免费的Hugging Face账户才能下载。
- 确保已安装ffmpeg,例如使用:brew install ffmpeg
- 在“终端”中用以下命令安装该工具包:pip install pyannote.audio
- 登录Hugging Face,并在pyannote/speaker-diarization-community-1页面上接受用户条件。
- 在hf.co/settings/tokens创建一个Hugging Face访问令牌。
- 在Python中,用Pipeline.from_pretrained加载流水线,传入流水线名称和你的令牌,然后对你的音频文件调用它。
- 遍历输出中的speaker_diarization字段,读取每段发言的开始时间、结束时间和说话人标签。
- 如果你知道有几个人说话,调用流水线时传入num_speakers。如果只知道一个范围,就传入min_speakers和max_speakers。
Whisper或Parakeet能区分说话人吗?
不能。两者都是语音识别模型,都不是为标注说话人而构建的。Whisper模型卡称,这些模型尚未在说话人分类或说话人分离上经过充分评估。NVIDIA为Parakeet TDT 0.6B v2发布的模型卡没有把说话人分离列为它的功能。
Whisper论文记录了一个相关的怪现象。早期模型往往会为说话人的名字写出看似合理、但几乎总是错误的猜测,因为许多训练用的转写文本里都写有说话人的名字。作者通过用不带说话人标注的转写文本进行微调,去掉了这种行为。如果仅由识别模型生成的转写文本里出现了说话人的名字,不要相信它们。
说话人分离的准确度如何衡量
标准指标是说话人分离错误率(DER),以百分比表示,越低越好。它把三类错误加在一起:虚警,即报告了并不存在的语音;漏检,即真实的语音没有被归给任何人;以及说话人混淆,即语音被归给了错误的人。
与词错误率一样,评分规则会改变这个数字。有些评估会在每次说话人切换前后留出一小段容错时间,有些会跳过重叠的语音。pyannote的基准测试说明,它们不使用容错时间,也不跳过重叠语音,这是更严格的设置。在比较不同来源的DER数字之前,请先确认这两项选择。
大家常问的问题。
在转写中,说话人分离是什么意思?
按说话人给转写文本加标签。说话人分离模型会检测声音的变化,并按说话人对片段分组,这样会议转写文本读起来就像一段对话,而不是一整块文字。
听写软件会标注说话人吗?
几乎从不,因为听写只有一个说话人。说话人标签是会议和文件转写工具的功能。如果你需要它,就选转写工具;如果你需要实时听写,就选听写App。
Whisper能做说话人分离吗?
不能。Whisper转写的是文字,它的模型卡称它尚未在说话人分离上经过充分评估。要得到说话人标签,你需要运行单独的说话人分离模型,例如开源的pyannote.audio流水线,再把它的时间戳与转写文本结合起来。
什么是说话人分离错误率?
说话人分离错误率(DER)是衡量说话人分离准确度的标准指标,越低越好。它综合了虚警、漏检的语音,以及被归给错误说话人的语音。
说话人分离能在Mac上离线运行吗?
能。开源的pyannote.audio社区版流水线在你的电脑上本地运行,下载完成后无需联网即可使用。