分享

GMM

 oskycar 2016-02-18

GMM-UBM系统框架

最初用的特征是声学特征MFCC,这个东西我不太熟,只知道它是从wav或者其它格式语音文件直接提出。

有了特征就可以建立模型了,这里我们的模型叫做“高斯混合模型”。不同说话人的差异主要表现在其短时语音谱的差异,而这又可以用每个说话人的短时谱特征所具有的概率密度函数来衡量。高斯混合模型GMM将空间分布的概率密度用多个高斯概率密度函数的加权和来拟合,可以平滑地逼近任意形状的概率密度函数,并且是一个易于处理的参数模型。在具体表示上,这个模型实际上就是把高斯混合模型的每个高斯分量的均值向量排列在一起组成一个超向量作为某一个说话人的模型,称为均值超矢量。

可是,通常在实际中每一个说话人的语音数据很少,而训练高斯混合模型又需要大量的训练数据,怎么办呢?于是,UBM通用背景模型被提了出来。在训练说话人模型的时候,由于注册时说话人的数据稀疏,通常利用一个通用背景模型(Universal Background Model,UBM)和少量的说话人数据,通过自适应算法(如最大后验概率MAP,最大似然线性回归MLLR等)得到目标说话人模型。

OK,特征和模型都建立好了,我们怎么测试呢?这里用到一个对数似然比的评价指标。用测试数据分别与模型和UBM进行似然度比较,然后将这两个似然相除再取对数,用得到的值作为打分来评价一条测试数据是否和模型匹配。

怎么理解这个打分标准呢?由于UBM代表了最最普遍的平凡的语音特征,而模型代表了属于这一个说话人的特征。用对数似然比来表示,就是评价测试数据到底和模型更接近还是和UBM最接近。最后设定一个阀值,用来进行最后的分类判断。

联合因子分析

上面的GMM-UBM系统非常经典,之前一般作为说话人识别的基线系统。但是,这个系统不能够很好解决说话人识别领域中的一个最令人头疼的问题,那就是信道鲁棒。关于信道鲁棒的复杂性问题可以查阅资料。于是,就有人提出了将因子分析应用到说话人领域。

联合因子分析认为,在GMM-UBM系统中的高斯模型均值超矢量,大体上可以分为跟说话人本身有关的矢量特征和跟信道以及其他变化有关的矢量特征的线性叠加。也就是,将说话人GMM均值超矢量所在的空间划分为本征空间,信道空间,最后还有一个残差空间。这样,如果我们能抽取出跟说话人本身相关的特征而去掉和信道相关的特征,就能很好地克服信道影响进行识别了。事实证明这种思路是对的,采用联合因子分析后,系统的性能明显提高。

基于I-vector特征的说话人识别

传统的联合因子分析建模过程主要是基于两个不同的空间:由本征音空间矩阵定义的说话人空间,由本征信道空间矩阵定义的信道空间。受联合因子分析理论的启发,Dehak提出了从GMM均值超矢量中提取一个更紧凑的矢量,称为I-Vector。这里的I是身份(Identity)的意思,出于自然的理解,I-Vector相当于说话人的身份标识。

I-vector方法采用一个空间来代替这两个空间,这个新的空间可以成为全局差异空间,它即包含了说话者之间的差异又包含了信道间的差异。所以I-Vector的建模过程在GMM均值超矢量中不严格区分话者的影响和信道的影响。这一建模方法的动机来源于Dehak的又一研究: JFA建模后的信道因子不仅包含了信道效应也夹杂着说话人的信息。

所以到现在,我们主要用的特征是i-vector。这玩意是通过高斯超向量基于因子分析而得到的。这玩意是基于单一空间的跨信道算法,该空间既包含了说话人空间的信息也包含了信道空间信息。相当于用因子分析方法将语音从高位空间投影到低维。

你可以把I-vector看做是一种特征,也可以看做是简单的模型。最后,在测试阶段,我们只要计算测试语音I-vector和模型的I-vector之间的consine距离,就可以作为最后的得分。这种方法也通常被作为基于I-vector说话人识别系统的基线系统。

信道补偿算法

其实,信道补偿相关的工作从有说话人识别领域以来就一直有研究,包括上面的GMM-UBM系统和联合因子分析系统。信道补偿主要分三个层次:基于特征的补偿,基于模型的补偿和基于得分的补偿。由于我所研究的方面都是在I-vector特征的基础上的,所以这里重点说一下基于I-vector特征的信道补偿算法。

为啥要信道补偿呢?前面说I-vector的时候说了,I-vector特征中既包含说话者信息又包含信道信息,而我们只关心说话者信息。也就是说,由于信道信息的存在,对我们做说话人识别产生了干扰,甚至严重影响系统的识别准确率。于是,我们就要想办法尽量减小这种影响。这就是所谓的信道补偿。

线性鉴别分析LDA

信道补偿算法有很多,先说一下LDA。关于LDA的资料很多,这里简单说一下为什么LDA能够用在说话人识别而且是如何进行信道补偿的。

当一个说话人有很多语音时,表现为这些语音在说话人空间中聚集为一簇。如果这些语音收到信道的影响,那么就表现为这个说话人的语音的方差很大。然后,LDA尝试着找到一个新的空间,将原来的所有数据投影到这个空间,使得在这里空间中同一说话人的数据具有最小的类内方差,同时不同说话人之间的距离尽量大。这样,就达到减小信道差异的影响了。

LDA其实也是一种降维方法。它尽量去移除不需要的方向,最小化类内的方差信息量。也就是,LDA寻找一个新的空间去更好地对不同的类做出分类。可见,LDA非常适合作为说话人识别系统的信道补偿算法。

当使用LDA对测试数据和模型的I-vector进行重新投影后,然后计算它们之间的cosine距离,就可以作为最后的得分。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多