瞿于荃,龙 华,2+,段 荧,邵玉斌,2,杜庆治,2
1.昆明理工大学 信息工程与自动化学院,昆明 650000
2.昆明理工大学 云南省计算机国家重点实验室,昆明 650000
说话人识别(speaker verification,SV)属于生物认证领域的一种技术,是一项根据说话人语音中代表说话人生理和行为的特征参数,来判别说话人身份的技术。起初的短语音问题还没能得到广大信号处理界的重视,有些研究员们仅仅从侧面提到了短语音问题[1],并未成为说话人识别的重点。由于说话人识别对样本语音的时长非常敏感,短时语音的识别性能的好坏,是决定其能否商业化的关键一步。随着说话人系统实际项目的落地,短语音问题开始被重视起来。由于实际生活环境的限制,收集目标用户长时间的语音数据不易,而在短语音条件下获得的有效信息较少,这样就无法提取足够的说话人身份信息,直接导致识别性能的降低。在21 世纪初期,高斯混合模型通用背景模型(Gaussian mixture model universal background model,GMM-UBM)[2]的提出解决了注册说话人语料不足的问题,它的成功应用标志着说话人识别的兴起。随后,联合因子分析(joint factor analysis,JFA)[3]则对说话人变率空间和信道变率空间分别建模,以其高性能引领了说话人识别进入一个新时代。继而,基于总变率空间的身份向量(identity vector,i-vector)[4]成为了近十年来说话人识别研究的基线标准。直至深度学习流行的今日,身份向量仍占据一席之地。近来,针对短语音说话人识别的问题,大致思路分为两方面。一是特征层面,增加特征有效维度是短语音的常用方法,它能有效提高识别率。然而,特征维数的增加,势必加大计算的复杂度和维度灾难的风险。文献[5]将声学特征进行特征融合后生成高维特征矩阵,再利用主成分分析(principal component analysis,PCA)降维;利用说话人特征信息在高频区域更为突出的特点,文献[6]提出使用线性频率倒谱系数(linear frequency cepstral coefficients,LFCC)提取短语音说话人嵌入向量;针对Baum-Welch 统计量的不足,文献[7]通过联合通用背景模型中的参数信息,增加说话人的个人信息表达;文献[8]利用神经网络极强的特征提取能力,提出了使用时延神经网络(time-delay neural networks,TDNN)提取语音的嵌入向量x-vector。针对x-vector 的不足,文献[9]提出将语谱图输入进时延神经网络代替传统声学特征,并在统计池化层使用注意力机制增强关键帧的信息。二是模型层面,对于传统支持向量机模型,文献[10]运用多个核函数的线性组合构造多核空间实现短语音下说话人识别。而深度学习的崛起,席卷整个语音处理界,人们开始尝试不同模型应用在短语音说话人识别上。文献[11]将话语视为图像,将深度卷积架构直接应用于时频语音表征,像人脸识别一样学习短时说话人嵌入。文献[12]提出使用生成式对抗网络(generative adversarial networks,GAN)的i-vector 补偿方法来代替概率线性判别模型(probabilistic linear discriminant analysis,PLDA)在短语音下所出现的估计偏差。文献[13]使用图像特征金字塔(feature pyramid network,FPN)对多尺度聚合(multi-scale aggregation,MSA)进行改进,提高处理变化时长下话语的鲁棒性;然而,训练深度神经网络[14]需要大量的数据,而用于说话人识别的可用数据量通常非常小。这一直是使用深度学习构建端到端说话者识别系统的最大障碍之一。
本文从特征方法出发,提出使用典型联合分析方法从总变率空间的i-vector 向量和TDNN 网络的xvector 向量中学习线性关联信息,再从投影矩阵中抽取相关向量组合成为新向量,以此增强说话人身份信息。在短注册和短测试语音环境下,实验结果证明,融合超向量在注册和测试时长不匹配问题条件下均对说话人识别等误差率有下降的作用。
说话人语音的长短不一,让学者耗费大量的精力去寻求一种技术可以从变化长度的语音中获得恒定长度表示说话人身份信息。i-vector 的出现为这种想法开创了先河,使得文本无关的说话人识别上升到了新高度。由联合因子分析(JFA)理论获得启发[4],Dehak 提出从高斯混合模型的均值超向量中提取更加紧凑的身份向量,即i-vector。i-vector 模型利用因子分析来构造总变率空间(total variability space),对说话人差异和信道差异共同进行建模。假设说话人的一段语音,该语音的高斯均值超矢量可由下式表示:
其中,m为通用背景模型的高斯均值超矢量,T为总变率空间矩阵,ω为总变率空间因子,其后验均值就是身份向量i-vector。身份向量模型的重点就是总变率空间矩阵的估计和身份向量的提取。
总变率空间矩阵的估计[15]用最大期望算法,提取Baum-Welch 统计量,计算隐藏因子的后验分布,更新模型参数,迭代多次直至停止,最后得到总变率空间矩阵。前提条件是已训练好一个通用背景模型。
步骤1给定第s说话人第h句话,有若干帧{Y1,Y2,…}组成,对于每一个高斯分量c,计算零阶、一阶Baum-Welch 的统计量如下:
其中,mc为高斯分量所对应的均值矢量。对于t时刻,γt(c)是第t帧Yt相对每个高斯分量c的状态占有率,换句话说,第t时刻落入状态c的后验概率,其值可以表示为:
步骤2计算总变率空间因子ω的后验分布。对于第s个说话人的第h段语音总变率空间因子记为ωs,h,令l(s)=I+TTΣ-1Nh(s)T:
Σ为UBM 的各阶协方差矩为对角块的对角矩阵。
步骤3最大似然值重估更新模型参数矩阵T和最大化似然函数值,得到如下:
对于每一个高斯混合分量c=1,2,…,C和特征参数的每一维d=1,2,…,P,令i=(c-1)P+d,Ti表示T的第i行,Ωi表示Ω的第i行,则说话人总变率空间矩阵T的更新公式如下:
步骤2、步骤3 在设置一定的次数迭代更新,完成总变率空间矩阵训练后,由式(6)得到每个说话人对应的身份向量i-vector。这里,目标说话人的模型训练的过程和i-vector说话人向量抽取就到此结束。
短语音下的说话人识别的困难很大程度上可以归结于注册和测试时长语音数据的不匹配。虽然通用背景模型中的均值超向量可以通过每个人的总变率因子来共享一些统计信息,在一定程度上减轻短语音带来的影响,但从式(2)~(4)看来,总变率空间的估计很大程度上依赖于Baum-Welch 统计量的计算,而语音数据量过少势必造成统计量估计的偏差。对于GMM-UBM、i-vector 等基于语音概率分布的统计模型来说,短语音下的语音分布必然存在偏差,使得估计的说话人特征在统计上变得不那么可靠。
深度学习中的嵌入(embedding)是一项非常流行的技术,它的原理是取一个低维稠密的向量表示一个对象。“表示”代表着embedding 向量能够表达相应对象的某些特性,同时两个embedding 向量之间的距离反映了对象之间的相像性。比较典型的:graph embedding 中图像为对象的deepwalk[16];word embedding 中文字为对象的word2vec[17];随着深度学习在语音识别方面火热进行,说话人识别深受影响。而xvector 是由Snyder 从时延神经网络(TDNN)[18]中提取的voice embedding 特征,并像i-vector 一样使用。时延神经网络的结构如图1 所示,由此看来,TDNN 更像是一个一维卷积的过程,这样的架构更适合语音序列信息的处理。将分帧后的语音输入进TDNN 网络,网络中的统计池化层会负责将帧级特征映射至话语级特征上,具体操作为计算帧级特征的均值和标准差。在统计池化层之后的全连接层用于抽取embedding 向量,网络最后一层为softmax 层,输出的神经元数量与训练集中说话人个数保持一致。由于TDNN 是时延架构,利用其网络结构的优点可以学习不同时长的特征,这也让x-vector 在注册测试不同时长语音上表现出更强的鲁棒性。
Fig.1 Time delay neural network structure图1 时延神经网络结构
传统基线DNN(deep neural networks)网络中,DNN 仅仅只对输入层的语音特征做了前后若干帧的扩展,在输入层拥有上下文信息,而TDNN 与DNN 不同之处在于TDNN 对其中的隐藏层也进行上下文的拓展,TDNN 会将隐层当前时刻的输出与前后若干时刻的输出组成在一起,以此作为当前时刻下一个隐藏层的输入。由此来看,TDNN 中的每一层都被给予了上下层级的时间信息,对于处理时序数据是非常有效的。
同为生物识别技术,说话人识别许多的技术都是借鉴于人脸识别的经验,比如信道补偿的概率线性判别模型(PLDA)[19]、Face net以及新引入的代价函数三元组损失(triplet loss)。典型关联分析(canonical correlation analysis,CCA)[20]可以被看作是为两组变量间寻求基向量的问题,由此变量在基向量上的投影之间的相关性就可以相互最大化,这样可以联合特征提高分类的效果。CCA 主要在人脸识别中多视图学习的特征融合方面,在验证目标人身份时,利用不同信息的人脸照片进行多视图信息学习。ivector 的独到之处在于它结构简单,只考虑说话人差异和信道差异两部分,这让它在文本无关方面优势明显。x-vector 是话语层级提取的嵌入特征,更符合说话人在多段话语中的一个平均代表。两种向量都能单独代表说话人,且又从不同形式下表征说话人独有的信息。典型相关分析寻求一对线性转换,每组变量对应一对,当这组变量被转换时,对应的表示说话人的向量就会最大程度相关,联合两个向量组成说话人超向量,用来增强说话人信息。
假设训练阶段总变率空间,TDNN 已被训练。那么注册和测试阶段,每个说话人的i-vector 身份向量表示为I=(i1,i2,…,in)T,x-vector 向量为X=(x1,x2,…,xn)T,对于I其对应的投影向量为α,对于X,对应的投影向量为β,令Z=[I X]T,则:
设W=αTI,V=βTX,计算W、V方差和协方差:
由Pearson 相关系数可得优化目标为:
其中,cov(W,V)为W、V协方差,而σW、σV分别是I、X标准差,优化的目标是:
构造Lagrangian 等式对式(16)进行求解:
式(17)分别求导令等于0 得:
式(18)分别左乘αT和βT,结合式(16)得:
λ=θ(19)
将式(20)中下式带入上式得:
将式(20)中上式带入下式得:
Fig.2 Model combining total variability space with TDNN图2 联合总变率空间和时延神经网络模型
流程如图2 所示。训练阶段,分别训练总变率空间和时延神经网络。建立一个独立说话人的适应集提取i-vector 和x-vector 用来学习总变率空间与TDNN在说话人表示上的线性关系,i-vector 用来学习关联性的输入矩阵I,维度为P1×N,x-vector 学习关联性的输入矩阵X,维度为P2×N,获得r个投影向量拼接为矩阵形式,其中N是适应集说话人话语数,P1为总变率空间维度,本次实验取400 维,P2为TDNN全连接层第一层输出维度,同文献[21]保持一致取512 维。若仍使用训练集提取说话人向量,说话人已存在训练集之中,不能表达集外说话人的普适特性,使用适应集目的为解决CCA 学习中说话人的泛化能力和鲁棒性问题。注册和测试阶段,提取i-vector 和x-vector 与投影变换α、β矩阵映射,得到一组线性关联向量,组合得到超向量xi-vector。
语料库选自Librispeech 英文演讲集、TIMIT 英文集,共1 257 人。语料库分为注册集、适应集、测试集和训练集。注册集为100 个说话人;测试集与注册集说话人对应,适应集为500 个说话人,剩余人数为训练集。特征预处理设置同i-vector、x-vector 原文献保持一致:预加重系数0.95,帧长25 ms,帧移10 ms,使用基于能量的端点检测对语音去静音。总变率空间设置方面:通用背景模型和总变率空间的训练集保持一致,高斯混合度为512,总变率空间维度400,20维梅尔倒谱系数(Mel frequency cepstrum coefficient,MFCC),以及一阶、二阶差分[6]。提取i-vector,使用LDA(linear discriminant analysis)降维至200 维,以及PLDA 信道补偿和相似度打分。时延神经网络方面:TDNN 网络结构与文献[21]保持一致,特征取24 维FilterBank,提取x-vector 向量,后端与i-vector 保持一致。
本次实验使用的说话人指标为等误差率(equal error rate,EER)。EER定义如下式:
式中,Pfrr(θ)为错误拒绝率(false rejection rate),Pfar(θ)为错误接受率(false acceptance rate)。stws为冒充者测试得分(spoof trials with score),tst为总冒充次数(total spoof trials);htws为正确测试得分(human trials with score),tht为总正确测试次数(total human trials);θ为判断两语音为同一人阈值,Pfrr(θ)和Pfar(θ)随着θ变换而发生变化,当θ=θEER时,使Pfrr(θ)、Pfar(θ)值相等,该值为EER,其中:
以错误接受率为横坐标,错误拒绝率为纵坐标,做检测错误权衡图(detection error tradeoff,DET),反映说话人识别系统性能。
首先,在不同注册和测试时长下,分别统计了三种说话人向量的等误差率。通过表1 的实验结果和图3 的DET 曲线可以看出,固定说话人测试语音为全时长,注册时长为30 s 时,xi-vector 的误差率相比ivector、x-vector 下降了6.15%和15.2%;20 s 时,同比下降7.02%和15.6%;10 s 极短注册语音下,分别下降6.5%和29.6%。面对逐渐缩短的短语音任务,短注册语音给i-vector 带来的问题是对说话人语音分布估计的偏差,注册说话人的身份偏差导致即使使用全时长的语音去测试说话人也不能获得较好的等误差率。而时延神经网络也会遇到相同的问题,虽然能够利用自身结构学习上下文的相关信息,但为了加速计算而会选择在输入层对语音进行固定时长的分块操作,直接造成了短注册语音被再次分割和剔除,上下文信息的捕获变得少之又少。从整体变化来看,i-vector 等误差率上升幅度较大也印证了基于统计模型对于短语音的鲁棒性能力较差的缺点,而x-vector上升幅度趋缓的表现得益于时延神经网络连接softmax 的架构,所取出的x-vector 在说话人分类上有着极强的区分能力,这也让x-vector代替i-vector成为近几年说话人识别挑战赛的基线系统。xi-vector 在上升幅度中有着最好的表现,它在三者之中保持了短语音下较好的鲁棒性,联合总变率空间的信道变化,说话人差异变化的同时又有着时延神经网络的超强分类器能力。
Table 1 EER of each vector under different registered speech lengths表1 不同注册语音长度下各向量的等误差率
Fig.3 DET of each vector under different registered speech lengths图3 不同注册语音长度下各向量的检测错误权衡图
值得注意的是,在全时长注册和测试语音下,xivector 的效果并没有i-vector 和x-vector 的好,原因就在于基于总变率空间提取i-vector 的说话人差异性和基于时延神经网络提取x-vector 的分类性在全时长下都可以完全表达说话人个人信息,反而联合总变率空间和时延神经网络下的xi-vector 在结合两者之间线性关系在某种情况下成为一种冗余。x-vector等误差率最低也说明在全时长注册和测试的情况下,基于时延神经网络的x-vector已经能达到较好的性能。
通过表2 的实验结果和图4 的DET 曲线可以看出,固定注册时长为全时长,测试时长为10 s 时,xivector 的等误差率相比i-vector、x-vector 分别下降了4.01%和15.8%,5 s测试语音时,相比分别下降6.0%和22.1%,3 s 短测试语音下,分别下降了1.7%和12%。尽管注册说话人已经得到了充分的注册,短测试语音下总变率空间对语音概率估计不足的问题,让测试i-vector 缺少区分不同人的能力,而时延神经网络输入的语音特征在短测试语音下并没能在上下文关系上给予信息的共享。xi-vector 对上述情况做出补偿,在i-vector 和x-vector 学习线性关联关系,以结合的方式增强说话人个人信息,这一点让xi-vector 在短测试环境下优于前两者。整体来看,本文所提出的联合总变率空间和时延神经网络的新向量xi-vector,在短注册和短测试环境下,与基线i-vector、x-vector相比表现最佳,系统性能较基线系统有了良好改善,尤其是在极低时长环境下,依然有着较为理想和稳定的等误差率。
Table 2 EER of each vector under different test speech lengths表2 不同测试语音长度下各向量的等误差率
Fig.4 DET of each vector under different test speech lengths图4 不同测试语音长度下各向量的检测错误权衡图
最后,更换数据集为aidatatang 中文普通话数据集和Primewords 中文语料库,旨在验证本文算法对中文语料下的处理能力以及与不同针对短语音的改进技术的文献在等误差率上进行对比。设置中文语料库注册集为100 人,测试集与注册集人数对应。其余实验细节部分与上述实验保持一致。短语音时长设置方面,固定注册时长为全时长,测试语音划分为10 s、5 s和3 s三部分,固定测试时长为全时长,注册语音划分为30 s、20 s、10 s三部分,总计6 个短语音条件下对文献[5]、文献[6]、文献[7]、文献[9]和xi-vector 进行实验,对比结果如图5 所示。
从图5 可以看出,固定全时长注册语音,在10 s测试语音下,xi-vector 比文献[5]、文献[6]、文献[7]、文献[9]在等误差率上降低了44.46%、7.67%、39.9%、9.33%;5 s 测试语音下,xi-vector 相比下降30.16%、8.36%、25.03%、6.44%;3 s 测试语音下,xi-vector 相比下降30.41%、5.36%、22.21%、5.15%。固定全时长测试语音,在30 s 注册语音下,xi-vector 在等误差率上同比降低了32.74%、2.56%、26.89%、2.57%;在20 s 注册语音下,xi-vector 在等误差率上同比降低30.01%、7.42%、18.45%、7.2%;在10 s 注册语音下,xi-vector 在等误差率上同比降低26.9%、9.37%、18.68%、6.53%。文献[5]所使用特征融合再进行降维的方法,通过对浅层特征融合达到增强说话人信息的行为,但任何降维都导致原始信息的损失,而同样是以总变率空间作为说话人模型的文献[7]借助通用背景模型增强短语音下的Baum-Welch 统计量,但人为选择超参量的方法对统计量进行融合,在不同环境下应用的鲁棒性还有待商榷。文献[6]提取线性频率倒谱系数代替传统梅尔倒谱系数特征,并且将i-vector 与x-vector在提取后直接串联实现融合,但串联的方法增加维度的同时,并不能有效提升识别性能。文献[9]是基于时延变率空间的基础,将语谱图作为x-vector输入,并在统计池化层上添加注意力机制对帧级信息叠加权值,但是对于语音序列来说,使用注意力机制的缺点是忽略了序列中的上下文顺序关系,这样其实浪费了TDNN 网络的优势。相比上述文献,xi-vector 联合i-vector 和x-vector 的说话人信息,进行说话人识别在等误差率上均优于上述针对短语音所改进的i-vector与x-vector 算法。有一点值得考虑的是,xi-vector 在优化误差率的同时也增大了计算量和负载量,对于实时性要求严格的识别系统来说,运算时间可能是本文算法的一大挑战,相比实时性,本文算法更合适于离线识别,要求精度较高的说话人识别系统,比如军队以及公安刑侦等方面。
Fig.5 EER comparison of various documents under different speech lengths图5 不同语音长度下各文献等误差率对比
总体来看,在注册测试语音不匹配条件下,xivector 在中文数据集的等误差率比英文数据集上的表现上升了4.87%、9.21%、7.72%、10.19%、6.29%、6.36%,这说明xi-vector 在中文语料库下的性能没有英文下的好。原因可能是所使用的Librispeech 与TIMIT 是相对纯净的数据集且语音的长度分布较为均匀,可以保证注册语音的长度足够长而不需要进行拼接的操作,而实验所使用的数据集的特点是较短语句,且大部分语音都在日常移动设备聊天应用上采集,更加贴近现实生活的说话人识别使用情况。另外一个原因是,所采用数据集的采集设备情况不一,所造成各个说话人之间的信道差异也有所不同,虽然实验后处理使用PLDA 进行信道补偿,但整体来说对基于总变率空间的模型产生些许影响。
综上所述。本文实验在英文语料库下对xi-vector进行测试,在实验中均比i-vector、x-vector 等说话人嵌入向量在等误差率上有所下降;同时,在中文语料库中对几种针对短语音改进说话人向量的方法进行对比发现,xi-vector 在等误差率上均低于其余几种方法,实验证明了本文算法的有效性。
短语音条件下收集说话人语音信息的不足,严重制约了说话人现实商用的落地。针对短语音条件下总变率空间对不同时长鲁棒性不足的问题,本文结合时延神经网络,提出一种联合总变率空间和时延神经网络的短语音说话人识别方法。通过典型关联分析两者的关联性,并将其嵌入向量进行投影,组合成新向量xi-vector 以获取更加丰富的说话人信息超向量。实验证明,将本文方法应用在说话人识别方面,能够有效降低在短注册语音或短测试语音中说话人识别的等误差率,改善了说话人识别在短语音环境下的时长不匹配的鲁棒性问题。