百度提出Deep Speaker:可用于端到端的大规模说话人识别

对话常常涉及到多个说话人,在这样的场景中,机器需要具备识别不同说话人的能力才能发挥更大的价值。近日,百度的一篇论文提出一种新的端到端的基于神经网络的说话人识别系统 Deep Speaker,实验表明该系统显著优于之前的基于 DNN 的 i-vector 方法。今天早些时候,百度发布了一篇技术博客对这项研究进行了解读,机器之心对本文进行了编译介绍,论文原文请访问:https://arxiv.org/abs/1705.02304


说话人识别(speaker recognition)算法的目标是根据音频确定说话人的身份。常见的识别任务有两种:验证(确定说话人是否是其宣称的身份)和说话人身份识别(从一组说话人中分辨出未知音频的说话人)。

这项技术有很多不同的应用。比如说,声纹(voiceprint)可以被用于登录设备。说话人身份验证可被用作金融交易的额外安全步骤。此外,智能家庭助手这样的共享设备也可以使用这项技术来为当前用户提供个性化服务。

最近一些使用神经网络来进行说话人识别的论文已经在传统的 i-vector 方法的基础上实现了提升,可参考来自 Interspeech 教程的原论文和幻灯片。


  • 原论文:http://www.crim.ca/perso/patrick.kenny/IS090079.PDF

  •  幻灯片:http://people.csail.mit.edu/sshum/talks/ivector_tutorial_interspeech_27Aug2011.pdf


i-vector 方法假定任何话语都可被分解为一个依赖于说话人和信道变化的分量与另一个相对于这些因素不变的分量。i-vector 说话人识别是一个多步过程,涉及到使用来自多个说话人的数据来评估一个通用背景模型(Universal Background Model,通常是高斯混合模型)、收集足够的统计数据、提取 i-vector、以及最后使用一个分类器来进行识别任务。

一些论文已经将 i-vector 流程中的某些部分替换为了神经网络,另一些研究则在训练端到端的说话人识别模型——不管是依赖于文本的方法(用户必须说出同样的话语,比如唤醒词),还是独立于文本的方法(模型不知道话语中的词)。我们推出了一款端到端的神经说话人识别系统 Deep Speaker,其在依赖于文本和独立于文本的场景中都表现良好。这意味着不管你是使用唤醒词来激活你的家庭助手,还是在会议上讲话,该系统都能够在训练之后识别出说话人的身份。

Deep Speaker 包含用于从音频中提取特征的深度神经网络层,还带有基于余弦相似度(cosine similarity)的时间池化(temporal pooling)和 triplet loss。我们探索了使用 ResNet 启发的卷积模型和循环模型来提取声学特征。


image.png

图注:我们使用了 triplet loss,其之前曾被用于人脸识别。在训练阶段,我们选择一个说话人的一个话语,然后计算一个嵌入(标记为 Anchor)。然后我们生成另外两个嵌入,一个来自同一个说话人(标记为 Positive),另一个来自不同的说话人(标记为 Negative)。在训练阶段,我们会努力使 anchor 嵌入和 positive 嵌入之间的余弦相似度高于 anchor 嵌入和 negative 嵌入之间的余弦相似度。

我们在三个不同的数据集上演示了 Deep Speaker 的有效性,其中既包括依赖于文本的任务,也包含独立于文本的任务。其中一个数据集 UIDs 包含大约 250,000 个说话人,在我们所知的文献中,这是目前最大规模的。实验表明 Deep Speaker 的表现显著优于基于 DNN 的 i-vector 方法。比如,在一个独立于文本的数据集上,Deep Speaker 在说话人验证任务上达到了 1.83% 的等错误率(EER),并且还在有 100 个随机采样的候选者的说话人识别任务上得到了 92.58% 的准确度。相比于基于 DNN 的 i-vector 方法,Deep Speaker 的 EER 下降了 50%,准确度提高了 60%。


image (1).png

图注:我们在实验中使用的三个数据集分别是 UIDs、XiaoDu 和 MTurk。其中 UIDs 和 XiaoDu 是普通话数据集,MTurk 是英语数据集。UIDs 和 MTurk 是独立于文本的数据集,XiaoDu 是依赖于文本的数据集——基于百度的唤醒词。为了试验不同的训练集大小,我们使用了全 UIDs 数据集(Train250k)和一个大约包含 5 万个说话人的子集(Train50k)。在评估阶段,我们选择 1 个 anchor,然后随机选择 1 个 anchor positive 样本和 99 个 anchor negative 样本来进行测试。


我们还发现 Deep Speaker 可以学习到独立于语言的特征。当仅在普通话语音上训练时,Deep Speaker 在英语的验证和识别任务上分别实现了 5.57% 的 EER 和 88% 的准确度。此外,相比于没有使用普通话预训练的模型,首先使用普通话训练然后再继续使用英语训练的模型在英语识别准确度上得到了提升。这些结果说明 Deep Speaker 可以跨语言学习识别说话人的声学特征,即使这些语言听起来非常不同。

这些结果与 Deep Speech 2(https://arxiv.org/abs/1512.02595)一道,说明同样的架构可以学会识别极其不同的语言的语音。

有关 Deep Speaker 模型、训练技术和实验结果的详情,请参阅论文,以下是该论文的摘要:

论文:Deep Speaker:一种端到端神经说话人嵌入系统(Deep Speaker: an End-to-End Neural Speaker Embedding System)


image (2).png


我们提出了 Deep Speaker,这是一个基于神经网络的说话人嵌入系统(neural speaker embedding system),这个系统可以将话语映射到一个超平面,从而可以通过余弦相似度来衡量说话人的相似度。由 Deep Speaker 生成的嵌入可以被用在很多任务中,包括说话人识别、说话人验证和聚类。我们的实验使用了 ResCNN 和 GRU 架构来提取声学特征,然后平均池化以生成语句层面说话人嵌入,并用基于余弦相似度的 triplet loss 来训练。在三个不同数据集上的实验表明 Deep Speaker 的表现要优于基于 DNN 的 i-vector 的基准结果。例如,在一个独立于文本的数据集上,Deep Speaker 将说话人验证的等错误率(EER)相对降低了 50%,把说话人识别的准确率相对提升了 60%。我们还有一些实验结果表明调整在普通话上训练过的模型可以提升英语说话人识别的准确率。synced icon.png


image (3).png

图 1:Deep Speaker 架构示意图

理论百度工程NLP论文神经网络