说话人分类是按说话人标签对音频记录进行分段的过程,旨在回答“谁在什么时候说话?”的问题。说话人分类与语音识别相比有着明显的区别。如下图所示,在执行说话人分类之前,我们知道“说了什么”,但不知道“谁说的”。因此,说话人分类是语音识别系统使用说话人标签丰富转录的一项基本功能。
为了弄清“谁在什么时候说话”,说话人分类系统需要捕捉未见过的说话人的特征,并区分音频记录中的哪些区域属于哪个说话人。为了实现这一点,说话人分类系统提取语音特征,计算说话人的数量,然后将音频片段分配给相应的说话人索引。
NeMo说话者分类
下图展示了 NeMo 说话人分类管道的整体数据流。
NeMo 说话人分类系统由以下模块组成:
语音活动检测器 (VAD):一种可训练模型,可检测语音的存在或不存在,以从给定的音频记录中生成语音活动的时间戳。
说话人嵌入提取器:一种可训练模型,从原始音频信号中提取包含语音特征的说话人嵌入向量。
聚类模块:一个不可训练的模块,将说话人嵌入向量分组为多个聚类。
神经分类器:一种可训练的模型,可以根据给定的特征估计说话人的标签。
主要开源的说话人识别
PyAnnote是一个用 Python 编写的开源说话人分类工具包,基于 PyTorch 机器学习框架构建。虽然 PyAnnote 确实通过 PyAnnote.audio 提供了一些预训练模型,但开发人员可能必须训练其端到端神经构建块才能修改和完善自己的说话人分类模型。请注意,pyAnnote.audio 仅支持 Linux 和 MacOS 上的 Python 3.7 或更高版本。
Kaldi是说话人分类的另一个开源选项,主要由研究人员使用。使用 Kaldi,用户可以从头开始训练模型,也可以从Kaldi 网站下载预先训练好的 X-Vectors 网络或 PLDA 后端。
NVIDIA NeMo 提供了强大的说话人分类库,可按说话人对音频记录进行分段。NeMo 的说话人分类管道包括几个关键模块:用于检测语音的语音活动检测器 (VAD)、用于捕捉声音特征的说话人嵌入提取器,以及用于对相似的说话人嵌入进行分组的聚类模块。
Speechbrain 是一个开源 PyTorch 工具包,可加速对话式 AI 开发,例如语音助手、聊天机器人和大型语言模型。它支持二值化、语音识别、说话人识别、语音翻译和语音增强。该开源工具提供了 40 多个数据集上的 200 多个竞争性训练方案,支持 20 项任务。这些方案既可以从头开始训练,也可以对预先训练的模型进行微调。 Speechbrain 具有动态批处理、混合精度训练以及支持单 GPU 和多 GPU 训练等功能,非常适合大规模、高性能 AI 应用。
最后推荐一个开源的支持多个说话者识别的视频翻译工具。 github.com/synthere/sy…