对文章《Deep Speaker Feature Learning for Text-independent Speaker Verification》作一下阅读翻译,文章比较久远,主要也是为了学习一下作者的行文逻辑。
深度神经网络(DNN)最近经常被用来学习说话人特征。但是学习到的特征质量还不够好,因此在应用于说话人验证时,必须使用复杂的后端模型(神经模型或概率模型)来解决剩余的不确定性,就像原始特征一样。本文针对说话人特征学习提出了一种convolutional timedelay deep neural network structure (CT-DNN)。我们在Fisher数据库上的实验结果表明,这种CT-DNN可以产生高质量的说话人特征:即使只有一个特征(包括上下文一共0.3秒),EER也可以低至7.68%。这有效地证实了说话人特征在很大程度上是一种确定性的短时特征,不是一种长时间的分布模式,因此可以从几十个帧中来提取说话人特征。
(首先介绍一下目前方法的缺点,由此引入本文的算法,最后简要介绍一下实验结果和结论)
自动说话人验证(ASV)是一种重要的生物识别技术。与大多数机器学习任务一样,ASV的一个关键挑战是语音信号中涉及的多个可变因素的混合,这导致在做出真实或者冒名顶替者判断的时候有很大的不确定性。原则上来看,有两种方法能用来解决这种不确定性:一种是提取对说话人特征敏感但是对其他变量稳定的更有力的说话人特征;另一种方法是构建一个可以描述不确定性并促进说话人因素的统计模型。
大多数现有的成功 ASV 方法都是基于模型的。 例如著名的高斯混合模型通用背景模型(GMM-UBM)框架和随后的子空间模型,包括联合因子分析方法和i-vector模型。它们是生成模型并且大量利用无监督学习,已经在两个方向上取得了进步。第一个是使用判别模型来增强说话人的判别能力,例如 GMM-UBM 方法的 SVM 模型和i-vector 方法的 PLDA 模型。第二个是使用监督学习来产生对于声学空间来说更好的特征表示。例如,基于 DNN 的 i-vector方法 。几乎所有基于模型的方法都使用原始特征,例如流行的 Mel 频率倒谱系数(MFCC) 特征。
尽管基于模型的方法取得了巨大的成功,但是研究人员从未停止研究说话人特征的“基本”特征。动机有两个方面:从工程角度来看,如果找到了一个更好的特征,现有的复杂统计模型就可以在很大程度上被丢弃;从认知的角度来看,一个基本的特征将有助于我们理解说话人特征是如何嵌入到语音信号中的。在这些特征的驱动下,许多研究人员在过去几十年中都致力于“特征工程”,并且偶尔从不同只是领域的角度提出新的特征。然而,与基于模型的方法取得的显著成就相比,特征工程带来的回报是微乎其微的。几十年后,发现我们手中最有用的功能仍然是MFCC,有趣的是同样的故事也出现在了语音处理的其他领域,尤其是最近深度学习出现涉及后的自动语音识别(ASR)领域。
深度学习的发展改变了这个故事。 与历史上通过人类知识设计特征的特征工程方法不同,深度学习可以从大量原始数据中自动学习特征,通常通过多层结构,例如深度神经网络(DNN)。 通过逐层处理,可以保留和加强与任务相关的信息,同时减少和删除与任务无关的变量。 这种特征学习已被证明在 ASR 中非常成功,其中学习的特征体现了对语言内容的高度代表性,并且对其他因素的变化也具有鲁棒性。
ASR 中特征学习的成功促使 ASV 的研究人员学习说话人敏感的特征,Ehsan 等人报道了在文本相关的任务上取得的成功。他们构建了一个以训练集中的 496 个说话人为目标的 DNN 模型。从最后一个隐藏层的激活中读取帧级特征,并通过对这些帧级别的特征求均值得到 utterance level 的特征表示(称为“d-vector”)。在评估中使用打分判别,分数被计算为注册声音和测试声音的 d-vector之间的cosine distance。作者报告说,与传统的 i-vector baseline相比,d-vector 系统的性能更差,但在结合这两个系统后,获得了更好的性能。许多研究人员进一步扩展了这种方法。例如,海戈尔德等人使用 LSTM-RNN 直接学习utterance-level representations,并在使用大型数据库(超过 4000 个说话者)以及在相同的文本相关任务情况下,报告结果显示了比 i-vector 系统更好的性能。张等人同样是在文本相关的任务上,利用卷积神经网络 (CNN) 来学习说话者特征,并使用基于注意力的模型来学习如何做出决策。刘等人使用 DNN 学习到的特征来构建传统的 i-vector 系统。最近,Snydern 等人将基于 DNN 的方法迁移到与文本无关的任务,并在训练数据足够大(102k 说话者)时报告了比 i-vector 系统更好的性能。然而,所有这些后续研究都不是纯粹的特征学习:它们都涉及复杂的后端模型(无论是神经模型还是概率模型),以获得合理的性能。从研究和工程的角度来看这都是没问题的,但是与特征学习的初始目标不同:我们希望发现一种具有足够通用性和区分性的功能,这样它就可以在广泛的应用中使用,而不需要大量的后端模型。这已经在ASR中实现,但是在说话人验证中还尚未实现。
在本文中,我们提出了一个简单但有效的DNN结构,它包含两个卷积层和两个延时全连接层的结构来学习说话人特征。 我们的实验表明,这个简单的模型仅使用几千个说话人的语音数据就可以学习非常强的说话人敏感特征。 学习到的特征不需要复杂的后端模型:一个简单的帧平均是足以产生一个强大的话语级说话人向量,通过其中一个简单的cosine distance就足以执行文本无关的 ASV 任务。 这些结果实际上表明,仅通过几个简单的神经传播,就可以从短时语音片段(300 毫秒)中发现说话人信息。
我们的工作是被Ehsan 等人所提出的d-vector模型的直接扩展。 扩展有两个方面:一个强调时频滤波的CNN/TDNN结构,更多类似于传统的特征工程; 一项与文本无关的试验任务表明,所学特征独立于语言内容,具有高度的说话人敏感性。
这项工作不同于大多数现有的基于神经网络的 ASV 方法。 例如,基于 RNN 的话语级别表示学习很有吸引力,但 RNN池化将焦点转移到整个句子,而不是帧级特征学习。 Snyder和 Zhang提出的端到端神经模型都涉及后端分类器,这削弱了特征学习部分:说话人判别信息是由分类器学习的还是由特征提取器学习来的尚不清楚。 因此,特征不一定是说话人判别性的,并且不太具有概括性,因为特征提取器取决于分类器。
这项工作也不同于将神经网络特征和统计模型相结合的方法。在这些方法中,一些说话人信息是在特征中学习到的,但还不够。因此,特征仍然是主要的,因此必须使用统计模型来解决固有的不确定性。例如,Liu等人使用ASR-ASV多任务DNN生成帧级特征,并用它们代替MFCC构建GMM-UBM和i-vector系统。Yao等人提出了类似的方法,尽管他们使用面向ASR的特征来训练GMM以分割声学空间,并将面向ASV的原始特征作为声学特征来构建i-vector模型。
上述方法背后的一个含义是,说话人特征学习仍然不完善:说话人特征尚未完全提取,其他不相关的变异仍然存在,因此必须利用一些后端模型来提高识别能力。在本文中,我们将证明一个更好的网络设计可以显著提高特征学习的质量,从而大大减少对后端模型的依赖。
本节介绍我们针对说话人敏感特征学习的 DNN 结构。 这种结构是论文[10]中提出的模型的扩展,通过使用卷积层从时频谱中提取局部判别模式,使用延时层以增加每个帧的有效时间上下文。我们称这种结构为 CT-DNN。
上图Figure1阐述了本工作中使用的CT-DNN结构。它由卷积(CN)组件和延时(TD)组件组成,这两个组件之间由512个隐藏单元组成的bottleneck layer连接。卷积组件部分包括两个卷积层(CN),每层后面都有一个最大池化操作。该组件用于学习在表示说话人特征方面有用的local pattern。TD组件包括两个TD层,每个层后面都有一个P-norm层。此组件用于扩展时间上下文。图1显示了两个组件的设置,包括面片大小、特征图的数量、延时窗口、P-norm的组大小。简单计算表明,使用这些设置,有效上下文窗口的大小为20帧。P-norm层的输出被投影到由400个单元组成的特征层,该特征层连接到输出层,输出层的单元跟训练数据中的说话人相关。
这个 CT-DNN 模型相当简单,很容易训练。 在我们的研究中,采用自然随机梯度下降(NSGD)算法进行优化。 一旦 DNN 模型训练完毕,就可以从特征层(即模型的最后一个隐藏层)读取说话者特征。 如在[10]中,语音片段的utterance-level representation可以通过对语音片段的所有帧的说话人特征进行求平均来推导出来。
从CT-DNN派生的utterance-level representation称为d-vector。在测试过程中,分别产生测试话语和注册话语的d-vector。可以计算这两个向量之间的cosine distance,并将其用作ASV任务的决策分数。与i-vector类似,可以使用一些简单的归一化方法,如线性判别分析(LDA)和概率LDA(PLDA)。
在本节中,我们首先介绍了实验中使用的数据库,然后用i-vector和d-vector系统报告结果。所有实验均使用Kaldi工具包进行。
4.1 Database
我们的实验中使用了Fisher数据库,培训数据和测试数据如下所示。
Training set:它由2500名男性和2500名女性演讲者组成,里面一共有95167句话,都是从这个数据库中随机选择的,每个演讲者大约有120秒的语音片段。该数据网络用于训练i-vector系统的UBM、T-matrix和THLDA/PLDA模型,以及d-vector系统的CT-DNN模型。
Evaluation set:它从fisher数据库中随机选取了500名男性和500名女性说话人组成,在Training set和Evaluation set的说话人之间没有重叠。对于每一个说话人来说,10条utterances用于注册,剩下的用于测试。
测试在4种条件下进行,每种条件在注册和测试utterances长度方面都有不同的设置。这些条件如下表1所示,所有的测试条件都涉及男女混合试验,由于性别相关的测试也表现得是同样的趋势,所以我们仅仅报道了混合试验数据的结果。
4.2 Model settings
我们建立了一个i-vector系统作为baseline。原始特征包括19维MFCC和对数能量。该特征通过其一阶和二阶导数得到增强,从而得到60维特征向量。该MFCC特征被用于i-vector模型。UBM由2048个高斯分量组成,i-vector空间的维数为400。LDA映射空间的维数设置为150。整个系统使用Kaldi SRE08进行训练。
对于d-vector系统,该体系结构基于Figure1。输入特征为40维FBANK,使用一帧以及它前后相邻的 4 帧,即一共九帧作为整个神经网络的输入(9*40)。输出单元的数量为5000,与训练数据中的说话人的数量相对应。从最后一个隐藏层(图1中的特征层)提取说话人特征,并通过平均帧级特征得出utterance-level d-vectors。在测试过程中,i-vector系统使用的转换/评分方法也同样适用于d-vector系统,包括余弦距离、LDA和PLDA。复制结果的Kaldi结构已经在线发布。
题外话总结模型结构:(参考https://yutouwd.github.io/posts/600d0d5d/)
本文的模型使用了 40 维 filterbank 作为输入特征,不过这里使用一帧以及它前后相邻的 4 帧,即一共九帧作为整个神经网络的输入(9*40)。然后经过两个卷积–池化层,然后再经过一个 bottleneck 层,之后再有两层 time-delay 层,以及一个全连接层,最后是一个 5000 维的 softmax 输出。
到了注册和测试阶段,将最后的分类层去除,使用隐藏层的最后一层作为提取出来的特征,称为 d-vector。并且将帧级别(frame level)的 d-vector 求均值得到 utterance level 的 d-vector 作为一段语音所代表的特征。
4.3 Main results
下表2(Table 2)显示了i-vector和d-vector系统的等错误率结果。使用整个训练集对两个系统进行训练,并报告不同条件下的结果。
可以观察到,对于这两个系统来说,提高测试话语的长度总是会提高性能。然而,似乎i-vector系统的性能改善比d-vector系统更为显著。这是可以理解的,因为i-vector系统依赖于特性的统计模式来构建说话人向量,所以更多的SpeechFrame将有所帮助。相比之下,d向量系统使用简单的特征平均值来表示说话人,因此更多语音帧的贡献是有限的。
最有趣的观察结果是,在C(30-3)条件下,d-vector系统的明显优势是测试utterances短。由于d-vector系统不使用任何强大的后端模型,因此短utterances的这一优势意味着CT-DNN模型学习到的功能相当强大。Snyder等人[14]已经从DET曲线部分观察到了基于神经网络的模型在短utterances中的优势,我们的结果为这一趋势提供了更明确的证据。
另一个观察结果是,LDA方法改进了d-vector系统,而PLDA方法没有。 LDA的贡献表明,在学习到的特征中仍然存在一些非说话人变量,这需要更多的研究。PLDA方法的d-vector的失败也是我们之前工作中的一个已知问题[17]。一个可能的原因是,d-vector中的剩余噪声不是高斯噪声,因此不能用PLDA模型很好地建模。同样,更多的调查正在进行中。
4.4 Training data size
为了研究特征学习方法的数据依赖性,我们通过选择不同数量的说话人来改变训练数据的大小。最优的i-vector系统(i-vector+PLDA)和最优的d-vector系统(d-vector+LDA)在四种试验条件中的每种条件下都进行了报告。结果如图2所示,其中每幅图表示一个特定的测试条件。可以看出,在所有测试条件下,对于i-vector和d-vector系统,使用更多的训练数据可以获得更好的性能,但i-vector系统似乎从大数据中获益更多。这与我们的经验不同,深度神经模型比概率模型需要更多的数据。这也不同于[14]中的观察:当说话人数量非常大(102k)时,d-vector系统比i-vector系统能获得更多的性能改进。
我们将d-vector系统相对较少的数据敏感性归因于两个因素:(1)CT-DNN结构中的紧凑CN和TD层需要较少的训练数据; (2)d-vector系统性能的主要限制不是模型训练,而是简单的平均后端。在C(30-3)条件下,当测试utterances较短时,特征平均值的影响不太显著,因此学习特征的真实质量得以展现,当使用更多的训练数据时,性能得到明显改善。然而,在其他情况下,大量数据训练所取得的进步可能在很大程度上被平均后端所掩盖。
4.5 Feature discrimination
为了检查学习到的说话人特征的质量,我们使用t-SNE 从20个说话人中抽取一些特征样本。样本有两种选择方式:(a)从说话人的所有语音帧中随机抽样;(b)选择一个特殊的utterance。结果如图Figure 3所示。可以看出,学习到的特征对说话人来说是非常有区别的,但仍有一些由语言内容引起的变化,如Figure 3中的图(b)所示。
一个更定量的特征质量测试是在测试语音只有几帧的极端情况下进行测试。让我们从20帧开始,这实际上是CT-DNN的有效文本大小,因此只生成一个特征。更多帧将生成更多特征。表3和表4显示了结果,其中 enrollment utterances的长度分别为30秒和3秒。本实验中使用的i-vector和d-vector模型使用整个训练数据进行训练。
使用d-vector系统的结果是惊人的:如果enrollment speech仅为3秒,仅使用一个特征(20帧,或相当于0.3ms),EER可以达到13.54%;如果注册语音为30秒,EER可以达到7.68%!相比之下,i-vector系统在这些条件下基本失效。
这些结果表明,CT-DNN模型学习到了一个高度区分的特征。从另一个角度来看,这些结果还表明,说话人特征在很大程度上是一种确定的短时特性,而不是一种长时间分布模式,因此可以从几十个语音帧中提取。这表明,与依赖原始特征统计模式的现有基于模型的方法相比,特征学习可能是一种更合理的方法。
本文提出了一种学习说话人感知特征的CT-DNN模型。我们的实验表明,学习到的特征具有很强的辨别能力,并且可以在test utterances较短时获得比较好的性能。这一结果对研究和工程都具有深远的意义:一方面,这意味着说话人特征是一种短时模式,因此应该通过短时分析(包括神经学习)而不是长期概率建模来提取;另一方面,我们的研究结果表明,当测试话语较短时,可以/应该使用特征学习方法,这是一种许多实际应用都涉及的情况。还有很多工作要做,例如,如果PLDA不起作用,如何以简单的方式对特征进行建模?神经学习到的特征如何从一项任务(或语言)推广到另一项任务(或语言)?如何利用辅助信息提高模型质量?所有这些都尚需要仔细研究。