本文参考:https://blog.csdn.net/twinkle_star1314/article/details/55050138
https://wenku.baidu.com/view/c6e257d576eeaeaad1f33020.html
https://blog.csdn.net/xmu_jupiter/article/details/47209961
论文:话者确认中信道和时长失配补偿研究_胡群威
本来今天是要学习i-vector的,但是在学习过程中,发现缺乏了关于声纹识别的一个重要前置条件,所以先讲一下GMM-UBM系统框架。
这篇内容干货不多,主要是对声纹识别中i-vector理解的一个前置补充,大家可以选看。
声纹识别,也称做说话人识别,是一种通过声音来判别说话人身份的技术(pretty cool, right?)。根据研究表明,声纹虽然不如指纹、人脸这样,个体差异明显,但是由于每个人的声道、口腔和鼻腔(发音要用到的器官)也具有个体差异性。因为反映到声音上,也是具有差异性的。就比如说,当我们在接电话的时候,通过一声"喂",我们就能准确的分辨出接电话的是谁,我们人耳作为身体的接收器生来就具有分辨声音的能力,那么我们也可以通过技术的手段,使声纹也可以向人脸、指纹那样作为“个人身份认证”的重要信息。
首先,我们来看一个典型的说话人确认系统流程图。为了让计算机认识一个用户,我们需要将目标用户的声音提取特征,训练为一个或多个模型,存储在我们的模型库中。当我们在测试或实际使用中,实际上就是提取当前接收到的语音中的特征,将其与我们模型库中的模型进行对比判断,最终确认谁是当前语音的说话人。因此,识别性能好坏的关键在于对语音中身份信息的建模能力与区分能力,同时对于身份无关的其余信息具有充分的抗干扰能力和鲁棒性。
在之前的文章中,我曾向大家介绍过GMM(高斯混合模型)。它将空间分布的概率密度用多个高斯概率密度函数的加权来拟合,可以平滑的逼近任意形状的概率密度函数,并且是一个易于处理的参数模型,具备对实际数据极强的表征力。但反过来,GMM规模越庞大,表征力越强,其负面效应也会越明显:参数规模也会等比例的膨胀,需要更多的数据来驱动GMM的参数训练才能得到一个更加通用(或称泛化)的GMM模型。
在实际中每一个说话人的语音数据很少,这将导致无法训练出高效的GMM模型。并且由于多通道的问题,训练GMM模型的语音与测试语音存在失配的情况,这些因素都会降低声纹识别系统的性能。所以机器学习的前辈们(DA Reynolds的团队)提出了一个通用背景模型(Universal Background Model, 简称UBM)。我们可以用UBM和少量的说话人数据,通过自适应算法(如最大后验概率MAP、最大似然线性回归MLLR等,本文选择阐述MAP算法)来得到目标说话人模型。
GMM-UBM实际上是一种对GMM的改进方法,我们既然没法从目标用户那里收集到足够的语音,那就换一种思路,可以从其他地方收集到大量非目标用户的声音,我们将这些非目标用户数据(声纹识别领域称为背景数据)混合起来充分训练出一个GMM,这个GMM可以看作是对语音的表征,但是又由于它是从大量身份的混杂数据中训练而成,它又不具备表征具体身份的能力。我们可以把这种模型看作是某一个具体说话人模型的先验模型。形象的比方就是说你准备去相亲,媒人给你看了小莉的照片,你耳边浮现的肯定是小莉各种可能的温柔的声音,而不是你家旺财的叫声。这种GMM-UBM就是起到类似的作用,它对语音特征在空间分布的概率模型给出一个良好的预先估计,让我们可以提前训练GMM。然后将目标用户的数据在这个模型上进行参数的微调即可。GMM-UBM模型最重要的优势就是通过MAP算法对模型参数进行估计,避免了过拟合的发生,同时我们不必调整目标用户GMM的所有参数(权重,均值,方差)只需要对各个高斯成分的均值参数进行估计,就能实现最好的识别性能。 根据实验表明,这可以让待估的参数减少超过一半,越少的参数也意味着更快的收敛,不需要那么多的目标用户数据即可模型的良好训练。
通过上图我们可以大致的了解GMM-UBM模型的大致逻辑。用大白话讲就是,用其他用户的数据来进行“预训练”,减少对真正目标用户的训练时间和参数调整。
在GMM-UBM系统框架中,UBM拟合出大量说话人的特征分布,目标用户的数据散落在UBM某些高斯分布的附近。其中自适应的过程就是将UBM的每个高斯分布向目标用户数据偏移。极大后验概率(MAP)算法就是解决这种问题的算法之一。
我们对目标用户的GMM模型自适应的过程分为两个步骤:
1、首先,使用目标说话人的训练数据计算出UBM模型的新参数(高斯权重、均值和方差);
2、将得到的新参数与UBM模型的原参数进行融合,从而得到目标说话人的模型。
字不如图,一起来看图把吧
具体的计算方法如下:
1、给定GMM模型和目标说话人的训练矢量集X = (X1, X2...XT)。计算新的参数。
计算Xi和UBM中中第i个高斯分布的相似度:
然后计算新的权重、均值和方差参数:
2、由第一步得到的新参数和UBM原参数融合,得到最终的目标说话人模型:
其中,自适应参数用于调节新参数和UBM参数对最终模型的影响。归一化因子(可以理解为权重值的权重)γ可以保证各混合度的权重满足:
具体自适应参数的取值与具体模型有关,具体信息可以参考论文:话者确认中信道和时长失配补偿研究_胡群威
GMM-UBM系统框架,是GMM模型的一个推广,是用于解决当前目标说话人数据量不够的问题的一种方式。通过收集其他说话人数据来进行一个预先的训练。通过MAP算法的自适应,将预先训练过的模型向目标说话人模型进行微调。这种方式可以大大减少训练所需要的样本量和训练时间(通过减少训练参数)。