版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录 11.1. 41.1.1. 41.1.2. 41.1.3. 51.1.4. 81.2. 101.2.1. 101.2.2. 121.2.3.ROC 131.2.4. 141.2.5. 141.2.6. 151.3. 151.3.1. 151.3.2. 161.3.3.高斯混合模型- 221.3.4.高斯混合模型- 231.3.5. 261.4. 291.4.1. 301.4.2. 36 363.4.4 361.4.3. 383.12 404. 415. 431. 452. 493. 514. 55 561.5. 571.5.1. 571.5.2. 581.5.3. 601.5.4. 651.6. 681.6.1. 681.6.2. 691.7. 721.7.1. 721.7.2. 721.7.3. 721.7.4. 731.7.5. 731.7.6.CN- 731.7.7. 731.7.8. 741.7.9. 74 术,还是第6章将要介绍的基于声纹的语音合成、人声分离及语音活动检测等,都离不开trained),也可以是联合训练(jointtraining)得到的。因此,本章也是本书最重要、最核声纹识别,也称为说话人识别,在英文中对应若干种说法,例如voicerecognition、speakerrecognition、voiceprintrecognition、talkerrecognition等都是同一个概念,也就是这里要注意将声纹识别与语音识别(speechrecognition)技术进行区分。语音识别是1.1节就提到过,每个人的发音器官(包括声带、声道等)的大小与形状有所差异,verification)及声纹辨认(speakeridentification或speakermatching)。声纹验证技术需要由目标说话人(targetspeaker)事先提供音频样本,通过特定的算称为声纹录入(voiceenrollment)或声纹注册(voiceregistration)。声纹验证对应的应用主要是唤醒和安全。在智能手机或智能音箱等产品上,可以对领域(如门禁系统、支付系统等),确保操作来自被授权的用户,而非冒名顶替者。 speakers)集合之中。假如这个集合包含了M位说话人,那么声纹辨认可以看作一个M元名顶替者(imposter)的类别,此时声纹辨认便成了一个M+1元分类问题。有时,我们将无论是闭集还是开集,声纹辨认需要集合中的M位候选说话人各自提供音频样本。也就是说,这M位候选说话人的集合是由所有完成了声纹录入步骤的说话人组成的集合。一个最直观的声纹辨认系统的实现方式,便是对集合中的M位候选说话人一一进行声纹辨认对应的应用场景主要是个性化。例如,对于智能音箱产品而言,这里的候别出正在使用产品的用户是哪一位家庭成员,并由此提供个性化的交互。例如用户对于声纹辨认来说,通常认为M越大,任务越难,识别准确率也会越低。直观上在实际应用中,文本相关的声纹识别系统主要用于唤醒词或验证口令的声纹识别。的音频进行声纹识别。中文或者英文,此时我们称之为语言相关、文本无关的声纹识别。如果不对说话内容的语言做限定,则称之为语言无关、文本无关的声纹识别。至衍生出了不少新兴的研究方向和应用。第5章将要介绍的声纹分割聚类技术,以及第6门的分支来研究如何区分原始的声音和转录后的声音,被称作反欺诈,我们会在7.2.3节系统的运作都包含两个阶段:事先完成的声纹录入阶段和实际运行时的识别阶段。我们将这两个阶段的大致流程分别用图3.1与图3.2表示。图3.1图3.2语音,先通过第2章介绍的方法进行分帧、加窗并提取特征,然后用本章将要介绍的方法征该说话人的声纹特征。后面将要提到的超向量、i-vector、d-vector等,都是说话人模型表3.1类问题中常用的平均精度均值(meanaverageprecision,mAP)指标,声纹识别领域中通从图3.2中可以看出,常见的声纹识别系统在识别阶段主要包括特征提取、声纹建模、相似匹配和判别这四个模块。特征提取模块在第2章已经进行了详细的介绍,声纹建纹模型。其输出是一个实数,通常称为匹配分数(o)——这个分数越高,表示两个声纹模型越接近,我们越倾向于认为验证音频来自目标说话人。假如需要匹配的声纹模型可以表示为两个嵌入码向量e1与e2,那么相似匹配可以采取以下几种形式(如图3.3所示)。图3.3余弦相似度(cosine 该相似度表示e与e两个向量在多维空间中的夹角的余弦值。如果e与e 欧氏距离(Euclidean数f(e1,e2|θ)。这里θ表示机器学习模型f(·)的参数集合。声纹识别所用的测试数据集,每个说话人都会有多段不同的语音(un),其中哪些音频用于录入,哪些用于识别。因此,一般需要将测试集分割成两个互不重叠的子集:录入集(nont)与验证集(von)。需要注意的是,录入集与验证集都需要涵盖测试集中全部说话人;但是对于每一个说话人,这两个子集需要包含来自该说话人的不同的语音。举一个简单的例子,假如测试集用了来自1号说话人的3段语音{U11,U12,U13},以及来自2号说话人的3段语音{U21,U22,U23},那么一个可行的分割方案为:每个说话人取两(如图3.1所示),最终得到一个包含了所有说话人声纹模型的模型库。之后便可以将验证集中的语音与模型库中的说话人模型进行相似匹配(如图3.2所示),并根据该模型是在一些公开的数据集中,有时会提供一个实验语音对(trialpairs)的列表,如3.7.5节将介绍的VoxCeleb数据集。这种测试相当于以上方法的一个特例,那就是录入集中每个试集中的音频,训练数据集必须不能包括任何在测试集中出现过的说话人。图3.4给出了训练集、录入集、验证集之间关系的简单示例。图3.4训练集、录入集、验证集之间关系的简单示例。图中每一个小方块代表一段语音,同一行的小方块代表来ROCROC曲线的全称是接收者操作特征曲线(receiveroperatingcharacteristiccurve),是验证可以看作一个二值判别的问题,因此可以用ROC曲线评价声纹验证系统的表现。 的“说话人-语音对”{(S,U)},这里S表示由录入集得到的第i个说话人的声纹模型,而U表示验证集中第i′个说话人的第j段语音。如果i=i′,则该说话人-语音对构成一个正 值得注意的是,对于任意U,如果S 入,计算出相似匹配的分数s。给定任意一个判别阈值t,判别结果为 ≥t),而真实结果为yi,i′j=δ(i=i′)。通过对所有与yi,i′j的比较,可以计算出该测试集上的正确接受率(trueaccept,TA)、正确拒绝率(truereject,TR)、错误接受率(falseaccept,FA),以及错误拒绝率(falsereject,FR)。在统计学中,FA与FR分别被称作第一类错误(typeIerror)与第二类错误(typeIIerror)。如果考虑以FA为横坐标,TA为纵坐标的平面,则每一个判别阈值t都对应了该平面上的一个点。如果将t的值从s的取值范围内扫过,那么随着t的增加,FA与TA都会减小,从而在该平面上绘制出一条单调递增的曲线。该曲线便是ROC曲线。曲线与x轴之间的面积,被称为曲线下面积(areaundercurve,AUC在声纹识别领域,常常以FA为横坐标,以FR(而非TA)为纵坐标绘制单调递减的ROC曲线。这种形式的ROC曲线更利于我们观察在判别阈值变化的过程中,FA与FR这两类错误之间的取舍。在这种设定下,ROC曲线下方的面积越小,意味着系统的识别能边界情况的处理,等等。这些细节的不同,可能导致同一组匹配分数,在不同的AUC实与曲线下面积相比,等错率(equalerrorrate,EER)的定义与实现都更加简单清晰,因此也成了声纹识别领域最常用的评价指标。顾名思义,等错率表示当FA与FR两类错误数值相等时的FA与FR数值。在以FA为横坐标,FR为纵坐标的ROC曲线上,等错率表示该ROC曲线与直线y=x的交点。该点对应的判别阈值,通常称为等错率阈值。在实际计算等错率的时候,由于会对判别阈值进行扫描,一般会得到ROC曲线上与y=x最接近的两个点。我们通常会通过这两个点拟合出一条直线(即ROC曲线的切线),计算其与y=x的交点,从而得到等错率。虽然这种做法在某种程度上也会受到判别积那样依赖ROC曲线上所有的点,在扫描判别阈值的时候,可以采用二分查找法进行扫值得注意的是,因为等错率表示FA与FR相等时的数值,所以在等错率阈值这一点,真正的错误率是FA与FR之和,也就是等错率的两倍,而非等错率本身。率只能非常粗略地反映ROC曲线的位置,并不包含有关ROC曲线形状的信息。因此,只有当两条ROC曲线的形状大致相同时,等错率才有最佳的可比性。如果两条ROC曲线的(tolerance)。一般来说,唤醒类应用倾向于采用FR更低的阈值,安全类应用倾向于采用FA更低的阈值。这是因为,对于智能手机、智能音箱上的唤醒系统而言,FR意味着用户的交互得不到响应,会导致较差的产品体验;而在很多情况下,FA(例如语音识别结果等)FA意味着冒名顶替者成功通过验证,会对用户的信息、财产安全造成损害;而FR因此,美国国家标准与技术研究所(NIST)提出了基于检测代价函数(detectioncost 这里C和C分别表示FR与FA这两类错误所对应的代价,P与P则分别表示真实说话人与冒名顶替者出现的先验概率;而使得C的值最小的判别阈值,称为最小检测代价函数阈值。显然,唤醒类应用倾向于采用更大的 有时也会用到辨认准确率(identificationaccuracy)。 前面提到过,声纹验证系统的评价指标基于“说话人-语音对”{(S,U)}。对于声纹辨认系统,我们需要用到多个说话人模型与语音组成的元组{(S,S,···,S,U)},这里k ···,S中,有一个来自真实说话人,其余说话人模型则来自随机选取的冒名顶替者。我们将语音U与这k个说话人模型进行匹配,并取分数最高的模型作为匹配结果。在所有元组中,语音被匹配到了正确的说话人模型的比例,称为k类辨认准确率。关于k值的选取,则取决于实际应用的场景。例如家用的智能音箱,其通常需要辨认多个家庭成员的声音,因此k值可以选取为购买该音箱的所有家庭的平均家庭成员数。我们已经介绍了图3.1和图3.2所对应的声纹识别系统流程的大部分模块。从本节开法,并分别在本节和3.4节进行介绍。这样分类的原因是:基于深度学习的方法目前已经早在1.3.2节与1.3.3节便已介绍了一些早期的基于模板匹配和统计量的声纹建模方第一种改进方法是基于矢量量化[5]的方法。这种方法将音频特征所在的d维特征空间划分为K个子区域,每个区域由一个中心点(centroid)表示。矢量量化,然后将得到的K个区域中心点称为该说话人的码表(codebook)。码表的构建通常采用K-均值(K-means)算法[55]或者LBG算法[56]。而在识别阶段,我们提取验证音频似然比失真度(likelihoodratiodistortion)的计算方法。第二种改进方法基于动态时间归正(dynamictimewarping,DTW)[4]技术。这种方的音频特征矢量组成的序列X=(x1,x2,···,xM)与Y=(y1,y2,···,yN),这里M/=N。真度最小。通过采用动态规划(dynamicprogramming)算法,求解动态时间归正的时间1.3.4节曾提到过,高斯混合模型(Gaussianmixturemodel,GMM)是统计学中一个的概率分布,如图3.5所示。在声纹识别领域,采用高斯混合模型的动机也可以直观地理图3.5本节介绍的基于高斯混合模型的声纹识别方法,主要参考DouglasReynolds等人发表于1995年的论文[9]。该论文的一个核心设定是:将每个说话人的音频特征用一个高斯混合模型来表示。假如该说话人的音频特征序列为X=(x1,x2,···,xN),我们希望用以下概率分布拟合X中特征的分布:这里λ表示该高斯混合模型的所有参数的集合,M 数,c≥0表示第i个高斯分量的权重,并满足其和为1:N(x)表示第i 这里K表示音频特征x的维度,μ和Σ分别是第i个高斯分量的均值向量及协方差矩阵。|Σ|是矩阵 回到式(3.4),从式(3.7)中可以看出,ci是实数,i是一维向量,而Σi模型的总参数数量为M(12),其中大部分参数都被协方差矩阵占据。尤其是当音频特征x的维度K出现严重的过拟合。此时,等式(3.6)其中σi=[σi1,σi2,···,σiK]是由对角协方差矩阵的对角元素的平方根组成的一维向量,而参数的总数量减少为M·(1+2K)。我们将完整的协方差矩阵简化为对角矩阵的理论依据是:具有M个完整协方差高斯参考文献9对多种协方差矩阵的选取进行了实验,并最终认为,让每个说话人的每做法。此后的大多数研究都沿用了这种做法。就是对高斯混合模型进行参数估计(parameterestimation)。常用的做法是进行最大似然估计(maximumlikelihoodestimation,MLE),也就是说,对于说话人的音频特征序列X=(x1,x2,···,xN),找到一组参数λ,使得以下似然函数最大化:算。高斯混合模型参数估计的EM算法大致如下:在第t步迭代中,假设当前参数为λ(t-1)。计算每一个x在第i个高斯分量上的后验概率为这一步称为EM算法的E-步骤。根据后验概率p(i|x,λ(t-1)),得到一组新的参数估计λ(t),其分别为混合权这一步称为EM算法的M- 在实际的参数估计过程中,如果某个方差2 的值过小,则会导致似然函数的计算现奇异点(nguy)。在数据不足时很容易出现这种情况。为了避免奇异点的产生,一个普遍的做法是对方差的取值进行限制。取定某个2 作为下限,一旦在迭代过程中个2的值小于该下限,便将其取值更改为2 对比图3.2所示的流程图,高斯混合模型的参数估计对应着图中的声纹建模模块,我们还需要定义一种相应的相似匹配算法。假如X=(x,x,···,x)是待识别的音频信号特征序列,S个待识别的说话人的高斯混合模型参数分别为λ,λ,···,λ 本节以Python语言的机器学习库scikit-learn中的高斯混合模型实现为例,介绍对应方实践4假如特征序列X来自目标说话人的录入音频,特征序列Y来自验证音频,用高斯混合模型计在scikit-learn中,要使用高斯混合模型,需要先创建一个高斯混合模型的对象,其创n_components表示高斯分量的个数,对应式(3.4)中的M;covariance_type希望所有高斯分量共享同一个完整协方差矩阵,则可以用'tied';max_iter表示使用EM算法进行参数估计时的最大迭代次数;n_iter表示初始化的次数,在多次初始化的尝试中,最好的一组初始化结果将被保存;init_params表示初始化所采用的算法,'kmeans'表示K- 高斯混合模型-了由S个说话人组成的闭集之中。如果待验证音频还可能来自这S个说话人之外的冒名顶 于2000年提出的通用背景模型(universalbackgroundmodel,UBM)[10]则很好地解决角度分析,如果用H表示验证音频来自S位待验证说话人,用H表示验证音频来自冒名顶替者,用λ 这里λ除此之外,参考文献10所提出的高斯混合模型-通用背景模型()框架说话人的高斯混合模型参数都可以由通用背景模型进行初始化,然后通过贝叶斯自适应(Bayesianadaptation)在GMM-UBM框架中,首先,利用来自所有说话人的音频特征,估算出一组高斯混算法与3.3.2节描述的M算法有所不同,其区别主要体现在步骤上。贝叶斯自适应的步骤利用一组依赖于数据本身的混合系数,对上一步得到的参数进行修正,从而在新的公式较多,本书就不详细列举了。感兴趣的读者可以自行参阅参考文献10。参数。大量的实验表明,只对均值进行自适应,而将混合权重和方差保持固定,有着最好的识别性能。高斯混合模型-在深度学习技术普及之前,支持向量机(supportvectormachine,SVM)[58]可以算是项工作,常被称为GMM-SVM方法[11]。 考虑一组由N个数据点构成的二元分类数据集{(x,y),···,(x,y)},其中x是表示特征的向量,y∈{-1,1}是其所属的真实类别。我们需要将y=1与y=-1对应的两类点分开,相当于在特征空间内寻找一个超平面w·x-b=0,使得y=1与y=-1 问题1对于数据集{(x1,y1),···,(xN,yN)},我们希望寻找这样一组w与b,使得超平面b=0将yi=1与yi=-1对应点集分隔后的间隔 最大(等同于使得ǁwǁ最小),并对所有1≤i≤N满足以 显然,如果数据{(x,y),···,(x,y)}本身不是线性可分的,则不存在对所有1≤i≤N都满足式(3.18)的 此时的优化问题变为其中的“软间隔”参数λ用来调整间隔的大小与分类正确性之间的一旦求解出w与b,便可以根据g(x)=w·x-b计算分类的分数,再根据该分数的符号非线性变化φ(·),先将所有特征向量x映射到变换后的空间φ(x),再对φ(x)进行分幸运的是,借助核技巧(kerneltrick)[59]式(3.22)中,αi≥0,1i≤N N。少数满足α>0的α所对应的 GMM-SVM框架提出了两种用于声纹识别的核函数:超向量线性核和L2回顾3.3.3节介绍的高斯混合模型-通用背景模型,在该方法中,先用所有语音获取一音,如果将贝叶斯自适应之后得到的不同高斯分量的M个均值向量μi,按照固定的顺序拼接在一起,则可以将得到的向量称为GMM超向量(supervector)。假如有两段语音Ua与Ub,通过高斯混合模型-通用背景模型的贝叶斯自适应得到的均则用于区分Ua与Ub的声纹特征的超向量线性核函数定义为相应地,L2 方法,在声纹识别任务上的表现都要优于原始GMM-UBM在GMM-UBM框架中,通过通用背景模型自适应得到的超向量,尽管能够在一定程景环境相关的信道信息等。联合因子分析(jointfactoranalysis,JFA)[12,60,61]方法的提出,因子分析(factoranalysis)是数据挖掘领域的一种统计方法。在该方法中,通过将观 考虑p个随机变量x,假设其均值为μ 这里f,···,f是k个潜在变量(或称为公共因子),且k<p;而ϵ 将这p 如果有N个观察到的x,则也有N个相对应的f与ϵ,而μ与L是与观察值独立的。L 在因子分析方法中,需要假设f (1)f与ϵ (2)f期望为零:E(f) (3)f协方差为单位矩阵:cov(f)= 联合因子分析方法将因子分析的思想运用到了基于GMM-UBM的声纹识别中。对于一段语音,考虑其通过通用背景模型自适应得到的超向量s,如果GMM一共有M个高斯分量,音频特征的维度为K,则s的维度为MK×1。联合因子分析方法认为超向量s不仅包含这里m是与说话人无关的MK×1维超向量,我们可以直接采用通用背景模型的超向量作为m;y是一个低维的用来表示说话人信息的因子,并服从标准多元正态分布(每个元素都服从N(0,1));V是y的载荷矩阵,V矩阵的列也被称为本征音(eigenvoice);x小;U是x的载荷矩阵,该矩阵的列也被称为本征信道(eigenchannel);z是MK×1维的与说话人相关的残差项,也被称为公共因子,服从标准多元正态分布;D是一个MK×MK为“联合”因子分析法。在一个常见的问题设定中,如果音频特征采用K=39维的MFCC特征,高斯混合模型采用M=512个高斯分量,那么超向量s的维度为19968×1——这个维度息及信道信息分别建模,例如可以取y的维度为300×1,x的维度为100×1。此时,V的维度为19968×300,U的维度为19968×100,D的维度为19968×19968。联合因子分析方法最大的难点在于参数估计,也就是求取矩阵V、U与D的过程。具中描述的JFA-SVM框架,便提出采用单独的说话人因子y,或者同时利用说话人因子y与公共因子z构建支持向量机的核函数,从而实现声纹识别。i-vector在基于深度学习的声纹识别方法出现之前,于2011年提出的基于i-vector的声纹识别vector技术本身并不神秘,它是联合因子分析技术的一种改进,或者说是一种简化。本节将对i-vector技术进行简要介绍。在联合因子分析方法中,通过将GMM-UBM的超向量分解为信道因子x、说话人因子y及公共因子z,令x只对信道进行建模,y只对说话人进行建模。这个思想虽然没有问题,但是在实际情况下,x通常也会包含一部分说话人信息,使得y中的说话人信息被弱参考文献[63]中进行了一组有意思的实验,那就是通过信道因子x进行声纹识别。在表明,仅仅用信道因子来实现声纹识别,居然能达到20%左右的等错率,也就是说x中其实依然包含了大量与说话人有关的信息。在基于说话人因子y的声纹识别系统中,这部分基于以上考虑,i-vector方法将式(3.31)中U所表示的信道空间和V所表示的说话人空间合二为一,得到一个新的总体变化(totalvariability)空间,用矩阵T表示。而对应的因子则称为总体因子(totalfactor),用w表示:这里m是与说话人和信道都无关的超向量,可以直接采用通用背景模型的超向量作为m;而w是一个服从标准多元正态分布的随机向量,维度通常选取在400到600之间。总体因子w也被称为“身份向量”(identityvector),简写为i-vector。式(3.32)可以解读为:s是一个服从多元正态分布的随机向量,其均值向量为m,协方差矩阵为TTT。在i-vector方法中,总体变化矩阵T的参数估计方法与联合因子分析中V矩阵的估计i-vector在式(3.32)中,总体变化矩阵T直接对说话人和信道同时建模,因此得到的总体因子w会包含信道相关的信息,而这是我们不希望见到的。因此,为了移除信道的影响,还需要对i-vector进行信道补偿。这里涉及了联合因子分析与i-vector这两种方法的核心区别:联合因子分析在高维的超向量空间移除信道的影响,而i-vector则在低维的总体因i-vector的信道补偿有很多种做法,其基本原理都在于寻找某个投影矩阵(projectionmatrix)A,使得补偿后的向量w′=Aw不包含信道信息,再利用w′而非w完成声纹识别。 covariancenormalization,WCCN)、线性判别分析(lineardiscriminantanalysis,LDA),以及扰动属性投影(nuisanceattributeprojection,NAP)。其中,线性判别分析后,概率线性判别分析(probabilisticlineardiscriminantanalysis,PLDA)[64]的引入更是令i-vector方法的性能得到了进一步提升[65]。基于i-vector 假设两段语音经过信道补偿后的i-vector分别为w与w,则可以定义如下的余弦核函数:有了核函数,便能利用 除了支持向量机,还有一种更简单的判别法,那就是直接计算目标说话人的vor与验证音频的vor 之间的余弦相似度,再将该余弦相似度与某个事先选定的全局阈进行比较。尽管神经网络(neuralnetwork)技术,甚至是卷积神经网络及长短期记忆网络等高级的网络结构早在20世纪末已被提出,但这些技术的真正爆炸式发展,以及在计算机视 LeCun、YoshuaBengio及GeoffreyHinton这三位神经网络领域的元老级人物于2015年《自然》期刊上发表的Deeplearning一文[66],更是让相关的技术受到了业内前所未有的关机的硬件性能。图形处理器通用计算(general-purposecomputingongraphicsprocessingunifieddevicearchitecture,CUDA),则成了深度学习技术背后的重要助力。除此之外,发展。例如,早期的CIFAR-10图像分类数据集只有10个类别[67],而ImageNet数据集经过型、通用背景模型、支持向量机、联合因子分析及i-vector的技术。因此,笔者将基于深入了解相关概念的读者,推荐直接阅读由IanGoodfellow等人编著的Deeplearning一书[69]。该书的HTML版本和PDF版本都能直接在网络上免费获取,并且能够在GitHub上找到开在3.3.2节介绍高斯混合模型时曾经提到过,高斯混合模型之所以能够在诸多领域有回顾图3.1与图3.2中描述的声纹识别系统流程,可以将音频特征到说话人模型的声纹前馈神经网络(feed-forwardneuralnetwork)是神经网络中最简单的一种,其元函 网络第k层的普遍表示:图3.6常用的激活函数包括Sigmoid函数σ(x)=(1+exp(-x))-1,反正切函数 在许多文献中,前馈神经网络有时也被称为完全连接网络 network),或者简称为深度神经网络(deepneuralnetwork)。图3.7给出了一个简单的用前馈神经网络来拟合函数y=x3-2x的示例。可以看到,即使只有少数几个节点,也能够达图3.7用激活函数为双曲正切函数的前馈神经网络拟合函数yx3-2x的效果示意图。第一个神经网络只有一层,该层包含3个节点;第二个神经网络有两层,每层包含3个节点音频、视频等高维多媒体输入的时候,则出现了问题。考虑一张64×64像素的图像,如果100个节点,那么式(3.37)中的Wk将会包含64×64×100=409600个参数。对于尺寸更大减少网络的总参数数量。而卷积神经网络(convolutionalneuralnetwork,CNN)的提卷积神经网络由卷积层(convolutionallayer)(convolutionalkernel),或称为卷积滤波器(convolutionalfilter)。每一个卷积内核被重则常被用来处理视频或者3D医学图像。图3.83.8()所示为一维序列经过三组空间上互不重叠的卷积核后,得到的三个新的序列,其中卷积内核的大小和步长均为4;图3.8(b)所示为二维图像的局部在经过卷积运算后,成为输出图像的一个像素。图3.8来。而循环神经网络(recurrentneuralnetwork,RNN)的提出,正是为了更好地对序列藏向量ht,而ht不仅取决于当前时刻的输入xt,还取决于前一时刻的隐藏向量ht-1,从而使得 这里,σ(·)与σ(·)分别是隐藏向量与输出向量的激活函数。图3.9以折叠和展开到,循环神经网络的参数集合{W,U,b, 图3.9式(3.38)与式(3.39)所示为循环神经网络中最简单的一种,常被称为原味循环经网络(vna )。在实际使用中,这种简单的循环神经网络的效果并不理想,为其很难保留长期的信息,并且训练过程中会遇到梯度消失问题(vnhng gdntpob)。为了克服这些困难,循环神经网络出现了很多变种,其中最有名的便是长短期记忆网络(ong hom oy,)22。长短期记忆网络通过增加输入门(inputgate)、输出门(outputgate)和遗忘门(forgetgate),来维持一组拥有更长期记忆能力的节点状态向量(cellstatevector),从而实现长期记忆功能。其实现细节可以参门控循环单元(gatedrecurrentunit,GRU)[70]是一种类似于长短期记忆网络的循环神具备自己的参数,例如式(3.34)中的w与b,因此神经网络也会拥有大量的参数。为了让神经网络实现我们希望其具备的功能,需要定义一个损失函数(lossfunction),来描数,最小化损失函数的过程。关于如何设计声纹识别问题中的损失函数,会在3.4.4节进 如神经网络的输入x是一张人脸图像,y是该人脸对应的真实年龄,而 =f(x;θ)是通 人脸图像构成的训练数据集{(x,y)} 式(3.40)所描述的问题,是一个标准的无约束优化(unconstrainedoptimization)问题。如果神经网络=f(x;θ)与损失函数L(y,)都可导,则可以通过以梯度下降法(gradientdescent)为代表的数值优化算法求解。在神经网络中,梯度的计算需要用 表示第k步时神经网络的参数,而γ>0是梯度下降的学习率(learning这种做法称为随机梯度下降(stochasticgradientdescent,SGD)。随机梯度下降的学习率的学习率。目前最常用的是自适应的学习率,包括Adagrad[73]、AdaDelta[74]及Adam[75]等算串联深度特征(ndmdpu)76]是上海交通大学于2014年提出的一种将神经网络间接用于声纹识别的技术。这种方法依然采用3.3.3节介绍的高斯混合模型模型作为声纹识别的基本框架。与之不同的是,传统的高斯混合模型通用背景模型的输入为C或P特征提取模块,提取出更高级的特征,与音频特征拼接后再作为高斯混合模型通用背景模型的输入。(donnhn,),这是一种非监督式的神经网络。通过这种网络获得的特征可能包括音素(phon)、说话人和信道等多方面的信息。第二种是用于将三连音素(phon)进行分类的监督式前馈神经网络。第三种则是用于将说话人进行分3.4.4基于神经网络的i-基于神经网络的i-vector[77]是另一项于2014年提出的将神经网络间接用于声纹识别的技术。这种方法的基本框架依然是3.3.6节介绍的i-vector方法。其差别在于,传统的i-vector方法基于高斯混合模型-通用背景模型;而参考文献[77]中描述的框架则将高斯混合这里提到的用于语音识别的神经网络(),非常类似于串联深度特征一节提到的参考文献76中的第二种网络。这种网络对音频特征帧进行分类,而分类的目标则为各种三连音素。高斯混合模型可以看作对音频特征的分布的一种概率描述,这里三音素的个数对应着高斯混合模型的高斯分量的个数;类似地,用于语音识别的神经网络可以看作对音频特征的分布的一种描述,此时三连音素对应着神经网络输出层的节点数因此,可以将高斯混合模型替代为用于语音识别的神经网络,而将vor 框架的其他部分保持不变。联合向量j-联合向量(onvo)方法,或称vor方法,是上海交通大学于2015年提出的一种基于神经网络的声纹识别方法21。这种方法用同一个神经网络同时完成两个任务:从语音中识别出文本,以及从语音中识别出说话人。该方法的具体实现是:两个任务的神网络底部若干层是共用的,然后用共用层的最上面一层的输出向量,也就是vo,实现两个不同任务的损失函数,进行联合训练。最后,利用概率线性判别分析A 的方法,让vor更好地区分说话人。。而串联深度特征,基于神经网络的i-vector,以及j-vector方法,都将语音识别神经网络性能较差,无法直接与经过多年发展的高斯混合模型-通用背景模型或者i-vector等成熟技代码实现,还是在产品、服务中的部署,都变得比i-vector等方法容易得多。此后,完全辑的不同;其二是训练过程中的损失函数的不同。3.4.3节与3.4.4节将对这两个方面的各若不考虑上述两方面的不同,大部分直接用于声纹识别的神经网络都可以用图3.10所示的通用架构进行概括。图3.10的左侧为长度不一的各个音频特征序列,这些序列可以自不同的说话人。每一段音频特征序列经过神经网络后,得到一个固定长度的嵌入码,或称为dvo。因此,该神经网络也常被称作声纹编码器(pkrnod)。运行时的推理逻辑,指的是从音频特征序列得到嵌入码的过程。根据这些嵌入码及每段音频特征列所对应的真实说话人,可以计算出某个用以衡量嵌入码性能的损失函数。在训练过程中,我们用随机梯度下降或dm 等算法75对损失函数进行优化,从而更新神经网络编码器的参数,直至其收敛为止。图3.10 合方法,便是取每一帧输出的平均向量作为最终的嵌入码,如图3.11所示。图3.11前面介绍过的串联深度特征76络。该网络单独用于声纹识别时性能不佳,只有将其与传统方法结合才能达到不错的性能。固定窗推理方法较早也较具代表性的工作,是谷歌于2014年发表的一篇论文[14]。该论文中的声纹识别系统被用于识别谷歌的唤醒词“OKGoogle”所对应的说话人。唤醒词检测算法[78]持续在长度为800毫秒的窗口上运行,一旦唤醒词被检测到,声纹识别网络便会触发,并在对应的800毫秒窗口上运行。3.12考文献[14]中的系统,每帧包含40维特征,帧间距为10毫秒,那么800毫秒的固定窗便会包含总共3200个特征。如果每帧特征或者固定窗的长度增加,则神经网络的输入维度也时候,引入了dropout[79]的方法(具体来说是maxout方法[80])。而后谷歌于2015年提出了图3.12序列推理(fullsequenceinference)的神经网络了。环神经网络会重置其状态(states,如式(3.38)中的ht)为初始状态(initialstates)。我池化(pooling)的全序列推理;另一种是基于末帧(lastframe)的全序列推理,分别如图3.13中的(a)与(b)所示。常见的做法,便是计算其输入序列的平均值向量,例如百度的dppkr声纹识别系统便采用了这种做法18。除了平均值向量,还可以计算出标准差向量,作为额外的统计量,与平均值向量进行拼接,得到更大的嵌入码,例如约翰斯·霍普金斯大学的声纹识别系统便采用了这种做法19,82。值得注意的是,无论是百度还是约翰斯·霍普金斯大学的声纹识别算的鲁棒性。图3.13基于池化的全序列推理,乍看上去与图3.11所示的逐帧推理十分相似,但两者却有着基于末帧的方法,通常取决于具体产品的要求。如果是离线推理(offlineinference),并来并避免各自的缺陷呢?谷歌于2018年的论文中提出的滑动窗推理(slidingwindow滑动窗推理神经网络的基本原理如图3.14输入,完成推理,并得到末帧的输出,类似于图3.13(b)中的全序列推理。最后,取所有滑动窗的末帧输出的向量平均值,作为最终的嵌入码,这一点类似于图3.11中的逐帧推理。图3.14如果相邻滑动窗的重叠度为N%,那么每一帧音频特征需要经过100/N次推理。如果我们考虑由M个说话人组成的闭集内的声纹辨认问题,那么该问题可以近似地看作一个M元的分类(classification)问题。对于用于多元分类的神经网络,机器学习领域已经存在一些非常成熟的标准做法,其中最常用的便是交叉熵(crossentropy)损失函列,y∈,·,}表示对应说话人在闭集中的身份标签。我们可以将y看成一个遵循概率分布p(p1,·,p)的随机变量。在训练数据中,y的值是已知的,因此在p第y位置的值为p,其他y的位置的值为p0。这里的向量p也被称作单热点(on-ho)向量,因为其始终只有一个值为1,其余值为0。单热点向量常被用来对类别进行编码,例如说话人、音素、语言等。若要使用交叉熵损失函数,神经网络的最后一层需要采用M (softmaxfunction),而该函数前一层的输出必须为M维的向量。假设该M维向量为z=(z,···,z),那么归一化指数函数的输出也是M维向量q=(q, 从式(3.42)中很容易得到0≤q≤1,并且 函数的输出q也可以看作一个概率分布。 此外,从式(3.42)中还能看出,如果在位置i=k处,z是所有z中的最大值,那么q也将是所有q中的最大值。通过指数函数的作用,最大值q与其他值之间的差距会被放大,导致q看起来更近似于一个单热点向量。例如,当z=(1,2,3)时,归一化指数函数的输出为q≈(0.09,0. 来区分隐马尔可夫模型(hiddenMarkovmodel,HMM)的状态[83];在计算机视觉中,大名鼎鼎的ImageNet任务也采用这种方法对图像进行分类[45]。尽管交叉熵损失函数在分类问题上大显神威,不过具体到声纹识别领域,却出现了个问题,那就是限定在某个闭集内的声纹辨认其实并不太实用。更多时候,我们希望将过交叉熵损失函数训练得到的神经网络,应用于闭集之外的说话人的声纹验证中。要实这一目的,常用的做法是,选取归一化指数函数的前面一层的输入向量作为嵌入码,如图3.15所示,然后对该嵌入码采用余弦相似度等方法进行声纹验证。通过这种方法得到嵌入码,其性能通常并不会太好,尤其是难以在闭集之外的说话人上取得较好的效果。过,随着训练数据所包含的说话人数量M 的增大,嵌入码的性能会有所提升。理论上当训练数据包含的说话人数量M 足够大,并覆盖足够多的变化形式时,嵌入码也应该备不错的性能。图3.15别通常是固定的,例如最庞大的图像数据库ImageNet[68],其最初发布时只有约5000别,直至2019年也才有约20000个类别;而后者的类别理论上几乎是无限多的(地球上现过的每一个人的声音),如谷歌的训练数据动辄数十万个说话人16。假设我们需要维度为K的嵌入码,训练数据包含M个说话人,那么归一化指数函数前面的一层网络则要将K维向量转换为M 维向量,也就是需要一个包含K ·M 个参数的矩阵。假25,M100000,那么该矩阵将包含两千多万个参数,这样的网络训练起来将会十分昂贵。因此,交叉熵损失函数一般只在早期的工作中比较常见,较为先进的声纹识别系一般不会采用这种训练方式。三元损失函数(tripletloss)便是基于这种思路设计出来的一种损失函数。在谷歌于2015年发表的一篇论文中,首次将该方法用于大规模人脸识别与聚类系统FaceNet上,并三元损失函数的基本原理示意图如图3.16所示。首先,从训练数据中选择一段音频作图3.16网络编码器为f(·),那么三元损失函数可以定义为这里α≥0 [x=max(x,0)表示取正数部分,ǁ·ǁ 式(3.44)所示的三元损失函数是FaceNet原论文中所使用的形式,一些声纹识别系在使用三元损失函数训练神经网络时,一个重要的问题是,应该如何选取由锚定样想应该是选择最困难的样本——至少也要使得操作符内为正数。也就是说,应该选择百度在其deepspeaker论文[18]中提出,可以先采用前面提到的基于归一化指数函数及近年来的许多基于神经网络的声纹识别系统都自称是端到端(ndond)的系统。征:需要注意的是,端到端的神经网络不同于端到端的损失函数。端到端损失函数最早由谷歌于2016年提出15,其设计思想是——训练时的损失函数应该尽可能地“模拟证系统运行时的性能指标。而这里的“模拟,主要涉及两个方面:端到端损失函数的示意图如图3.17所示。假如在实际运行阶段,我们事先要求用户提供M段录入音频,以构建用户的说话人模型,那么在训练过程中,同样要构建一个M+1元组,其中包含了M段录入音频,以及一段验证音频——这里的M段录入音频{x1,···,图3.17所有的M+1段音频先经过神经网络编码器f(·), 假如录入音频的嵌入码为e,··· ,e,验证音频的嵌入码为e′ 这一步对应图3.1最后,计算验证音频的嵌入码和录入音频聚合嵌入码之间的余弦相似度 式(3.48)中,y=1表示该M+1元组为正样本,y=0表示该M+1元组中,都涵盖了正样本与负样本;而端到端损失函数采用了M+1元组的形式,更好地约翰斯·霍普金斯大学发表于2016年的一篇论文中,对端到端损失函数做了一些小的改动[82],其将图3.17中的余弦相似度替换为受概率线性判别方法启发的如下距离函数:式(3.49)中的方阵S与常数b优化。此外,该论文的另一个改动是在式(3.48)中,对于负样本(即0)的情况,在损失函数前面乘以一个常数0<<1,这样即使在训练过程中负样本的数量远远多于正样本的数量,正负样本在损失函数中的比重也能得到较好的平衡。广义端到端损失函数是谷歌于 年提出的针对传统端到端损失函数的一种改[16]类似于3.3.4节介绍的支持向量机所采用的“最大间隔” 广义端到端损失函数的原理如图3.18所示。考虑一个批的数据中来自第j个说话人的第i段音频x,其对应的嵌入码表示为e。假如第j个说话人所有嵌入码的向量平均值,也就是该说话人在嵌入码空间的中心为c,那么首先,我们希望嵌入码e能够尽可能地接近c,从而保证每个说话人在嵌入码空间所对应的区域尽可能地“紧致 图3.18此外,我们还希望嵌入码eji尽量远离其他说话人在嵌入码空间所对应的中心。根据最大间隔原理,只需要找到距离该嵌入码最近的除说话人j之外的说话人(即最近冒名顶替者)中心即可。图3.18中说话人k与k′都为冒名顶替者,但因ck相较于ck′距离eji更近,所以我们希望eji尽可能地远离ck,而暂时忽略ck′。下面给出广义端到端损失函数的数学表述。首先,假设一个批的数据包含N×M频,也就是包含N个说话人,而每个说话人有M段音频,向量e表示第j个说话人的第i段音频的嵌入码,c表示第k个说话人的中心,这里1≤j,k≤N且1≤i≤M。构建一个NM×N的相似度矩阵S,其中表示嵌入码e与说话人k的相似度。这里w>0与b是两个可以通过可以看到,式(3.51)中如果将分子与分母都除以分子,那么分母中k=j对应的一项便成了常数1;而其他k/=j的诸项中,在归一化指数函数的作用下,最大的一项将得到最化。而最大项被保留的程度,则由前面提到的可训练的参数w与b决定。式(3.53)(3.51)Sji,j尽可能大,而最大的Sji,k,k/=j尽可能小。两者的差异在于求取最大Sji,k,k/=j的方法。对比度函数的实现是直接 入码中心c的计算。在计算嵌入码e的真实说话人中心时,最好的做法是将 过程中不会出现所有嵌入码e都收敛到同一点的平凡解(trivialsolution)。嵌入码{e}之后,可以统一地计算相似度矩阵S,然后利用该矩阵同时对所有嵌入码计算出”(garbagein,garbageout,GIGO)说话人数量对于声纹识别模型而言,最重要的一项指标便是,对于未出现在训每个说话人的语音数量在前面的章节中我们提到过,在声纹识别模型的训练中,文本的多样性对于文本相关的声纹识别而言,需要保证音频所对应的文本的准确·口音、语调、录制设备及环境的多样性除了文本的多样性,许多其他方面的多样数据的正确性看似最显而易见的一点,其实也是最重要的一点,那就是数据的正频特征时,我们通常需要利用事先训练好的语音检测(voiceactivitydetection,VAD)模们直接将其丢弃,不作为后续模块的输入。6.4节会对语音检测进行更多的介绍。体细节可参考第2章内容。在实现特征提取的时候,通常有两种做法:行分组。例如,我们希望每一个批包含8个说话人,而每个说话人有4段音频,那么在处理数据时,可以按照同样的方法存储——将每个说话人的音频分成4个一组,再把这些组结构,会产生不同的混响(vbon)效果。不同的录制场景也会含有不同的背景噪识别的性能便会有所下降。 VoxCeleb等免费数据集,而这类数据集通常很难满足环境的多样性要求。此外,即使是数据增强(dataaugmentation),是通过模拟算法增加数据多样性的一种技术。在计改变语音信号的采样率。考虑到传统的电话线路用8000Hz的采样率来传输信号,通即使只是简单地将每一份训练音频复制为0.9倍速、1倍速,以及1.1倍速共三份,也能有统的影响。因此,早在1987年,参考文献[87]便提出了多风格训练(multi-styletraining,能专门在汽车中录制每个说话人的语音,并且在汽车行驶的每一个档位都录制一遍。因此,通常利用数据增强的方法,人工生成噪声环境下的语音8890。这种方法的原理非常简单,那就是先用特定的房间模拟软件生成若干组房间冲击响应(oompuepon,)信号,用来表示特定信号源到麦克风的传输过程中会发生的混响效果。再将这些房间冲击响应与各个信号源和噪声源进行卷积并相加,便能得到最终增强后的音频信号。 为h(t);环境中存在M h(t),其中1≤i≤M;此外,环境中还存在加性噪声d(t)。那么,所有这些信号混合在一起,得到的增强信号x( 其中的*性。例如约翰斯·霍普金斯大学的x-vector方法论文中,就介绍了引入数据增强后对声纹识别性能带来的影响[19]。7.3.1节会对更多的数据增强方法进行介绍。动手实践:用pyroomacoustics我们以一个具体的实例介绍如何用Python工具库pyroomacoustics进行多风格训练的实践5给定一段 的单信道纯噪声音首先,用Python的软件包管理系统pip接下来,用pyroomacousticsShoeBox表示我们的房间为长方体(鞋盒形状),room_dim表示我们的房间长宽高都等于4米,rt60表示声音衰减60分贝需要0.3秒。mic_locs表示麦克风的位置。在设置信号源的delay参数时,假设噪声信号一直都在,而语音信号则从第2秒才开始。最后,调用simulate来。以噪声信号到麦克风为例,通过下面的程序可以绘制出如图3.19所示的房间冲击响
图3.19通过pyroomacoustics识别任务。例如,用同一个文本无关的模型支持多种语言下的声纹识别,以及用同一个文本相关的模型支持多个关键词。包含的音频是英文数据集的100倍,那么无论是轮流交替训练,还是将两个数据集乱序混 例如,如果较小的数据集D与较大数据集D所包含的音频数量比例为1:99。那么将数据乱序混合后,从中构建一个大小为n=32的数据批,批中每一段音频来自D的概率为p=0.01,来自D的概率为p=0.99。为了保证基于该批的训练能够有效覆盖 模型在D1类数据上必然准确率非常低。为解决以上几个问题,较具代表性的方法是谷歌于 年提出的多读取量,如图3.20所示。其中每个数据集的权重与数据集的大小无关,该权重仅表示该数据集图3.20 数据集D,在D 集D 支持“OKGoogle”和“HeyGoogle”两个唤醒词,这种方法相比直接将两个数据集混合在一其中方阵S与标量b其中方阵S在声纹验证流程中,利用3.6.2节介绍的验证方法得到余弦相似度等验证分数之后,Z-normZ-norm,或称为零正则化(zeronormalization),考虑在验证的过程中,除了将验证含N段来自不同说话人的音频集群(cohort)中,提取出N条嵌入码,并同样与目标说话人进行相似匹配,得到N个分数。从这N个分数中,计算出这些分数的均值与标准差,再对验证分数进行正则化,得到最终的分数。该过程如图3.21所示。在实际计算中,音频集图3.21Z-normT-normT-norm,或称为测试正则化(testnormalization),考虑在验证过程中,加入来自集群中的N个说话人模型,与验证音频的嵌入码计算验证分数,如图3.22所示。T-norm与Z-norm十分相似,但是T-norm采用的是说话人模型集群,而Z-norm采用的是音频嵌入码集图3.22T-normT-norm正则化还有一个自适应的变体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目成本对比分析表
- 辽宁省朝阳市2026年高三第四次模拟考试语文试卷含解析
- 医学26年:CKD电解质紊乱处理 查房课件
- 山东省德州市2025-2026学年高二下学期期中考试历史试卷
- 【2026】政治事务总监面试题(某大型国企)题库详解(年)
- 26年淋浴操作注意事项课件
- 下半年吉林省司法考试冲刺考试题
- 煤炭贸易合作协议2026年执行版
- 茶叶考试题及答案
- 剪纸艺术题库范例
- 辽宁省大连市2025年九年级下学期中考一模数学试卷(含详解)
- 焊工劳务人员管理办法
- 2025年机关事务管理局机关财务处招聘面试预测题
- GJB827B--2020军事设施建设费用定额
- 医院科研诚信课件
- 碳排放核算员模拟考试题及答案(五)
- soap病历培训课件
- 塔吊安装、顶升、附着及拆卸培训讲义培训课件
- JG/T 293-2010压铸铝合金散热器
- 健康中国培训课件
- 热力发电厂模拟试题+答案(附解析)
评论
0/150
提交评论