1 前言
语音是人的自然属性之一,由于各个说话人发音器官的生理差异以及后天形成的发音习惯等行为差异,每个人的语音中都蕴含着与众不同的个人特征[1]。说话人识别着眼于提取包含在语音信号中的个人特征,以达到识别说话人的目的。
自动说话人识别按其被输入的测试语音来分,可以分为与文本(Text)无关的说话人识别和与文本有关的说话人识别。前者是不规定说话内容的说话人识别,后者是规定内容的说话人识别。对于与文本无关的说话人识别,一般采用混合高斯模型(Gaussian mixture model:GMM) [2,3,4,5,6,7]来建立识别模型。识别时通过GMM计算出各模型的帧似然概率,然后相加后将总得分进行比较后做出识别判断。
在训练GMM模型时,常常采用EM算法来估计模型参数。然而,在针对说话人识别的GMM模型训练中,由于训练数据有限,因此,EM算法存在着会出现奇异阵的重大缺陷。本文研究了用GMM进行说话人识别的方法。针对EM算法的奇异阵问题,提出了说话人识别的GMM模型训练的新方法,实验结果表明,与GMM常用的EM算法相比,提出的新算法能使系统提高识别率。
2 基于GMM的说话人识别方法
GMM是M个成员的高斯概率密度的加权和,可以用下式表示[1]:
(1)
这里 是 维随机向量; 是每个成员的高斯概率密度函数; 是混合权值。完整的GMM可表示为: 。每个成员密度函数是一个 维变量的高斯分布函数,形式如下:
(2)
对于一个长度为 的测试语音时间序列 ,它的GMM似然概率可以写作:
(3)
或用对数域表示为:
(4)
识别时运用贝叶斯定理,在N个未知话者的模型中,得到的似然概率最大的模型对应的话者即为识别结果:
(5)
3 GMM的模型参数估计的改进方法
GMM模型的训练就是给定一组训练数据,依据某种准则确定模型的参数 。最常用的参数估计方法是 估计。对于一个长度为 的训练序列 ,GMM的似然概率可以通过公式(3)取得。由于公式(3)是参数 的非线性函数,很难直接求上式的最大值。因此,常常用EM算法估计参数 。EM是最大期望算法,它的基本思想是从模型参数 的一个初值开始,估计出一个新的参数 ,使得新的模型参数下的似然概率 。新的模型参数再作为当前参数进行训练,这样迭代运算直到模型收敛。每一次迭代运算,下面的重估公式保证了模型似然概率的单调递增。
混合权值参数的重估公式:
(6)
均值矢量的重估公式:
(7)
方差矩阵的重估公式:
(8)
其中, 为第 帧的观测矢量; 为密度成员序号;
(9)
由于说话人识别系统的训练数据有限,所以实际在GMM模型训练中,EM算法存在着会出现奇异阵的重大缺陷。针对这个问题本文提出了相应的改进方法。根据最大似然估计(ML)不会出现奇异阵的特点,我们采用最大似然估计(ML)所得的模型作为初始模型,然后在EM算法中的每步的迭代过程中,,通过给定的参数 值来控制修正比例对其进行修正,我们称为改进的EM算法,其具体的修正方法如下:
混合权值参数的修正(仍然按照传统EM算法重估):
(10)
均值矢量重估公式的修正:
(11)
方差矩阵重估公式的修正:
(12)
其中: 为修正因子可通过在试验中获得; 为第 帧的观测矢量; 为密度成员序号;
4 实验结果与分析
实验中采用的语音数据取自在实验室环境下录取10个人(5男、5女)的语音,其中每人说30个不同的字词,每词说6遍共1800个语音。用每个字词的前3个即用900个语音进行训练,得到每个人的模型参数。然后用每个字词的后3个即900个语音进行测试。
输入语音信号经12kHz采样, 的预加重,窗长21.33ms(256点),窗移10ms的汉明窗后,进行14阶LPC分析,然后从14阶LPC系数中求出10阶的倒谱系数和倒谱的10阶线性回归1次系数(为了考虑说话人的动态特性),这些语音参数用于说话人识别实验。
在修正的EM算法中,当 值为0时相当于传统的EM算法,而 值为1时相当于最大似然估计(ML)。实际操作过程,当 值较小时训练会出项奇异阵。比如成员函数混合总数为3、4和8时,当 值分别小于0.71、0.75和0.79时训练便会出现奇异阵。所以EM算法存在着出现奇异阵的重大缺陷。而最大似然估计(ML),识别率又比较低,如成员函数总数为3、4和8时,识别率仅分别为0.683、0.692和0.782。因此我采用最大似然估计(ML)所得模型为初始模型,然后在EM算法中的每步的模型训练中,通过 值控制修正比例对其进行修正。
为了找到最优的GMM成员函数的总数,并且尽量减少计算量。我采用在 值一定的条件下(即取 为1),简要测量不同的成员函数总数的识别结果。实验结果如表(1)所示:
表1:不同成员函数总数的说话人平均辨识率( 值为1)
成员函数总数 3 4 8 12 16 20 24 30
识别率 0.683 0.692 0.782 0.794 0.823 0.856 0.849 0.811
从表(1)中可以发现,成员函数为20时识别结果比较好。然后在成员函数为20时,我们就不同的 值进行了测量,实验结果如表(2)所示:
表2:不同 值时的说话人平均辨识率(成员函数总数为20)
值 0.969 0.97 0.971 0.972 0.973 0.974 0.975 0.976 0.977 0.978 0.979
识别率 0.907 0.910 0.914 0.917 0.920 0.917 0.922 0.920 0.925 0.923 0.922
值 0.98 0.981 0.982 0.983 0.984 0.985 0.986 0.987 0.988 1
识别率 0.918 0.917 0.918 0.920 0.917 0.916 0.913 0.911 0.909 0.866
从表(2)中可以看出最优结果出现在 值为0.977的情况下:识别率为92.5%。本实验中所采用的GMM模型的协方差矩阵均采用对角协方差矩阵,也就是说,假定特征矢量的各维之间是不相关的,这主要是出于运算量的考虑以及识别速度的关系。事实上,当混和数不断增加时,可以认为各个分量之间是不相关的,一般当混和数大于16时,使用对角协方差矩阵也能获得相当高的识别率。
5 结论
本文研究了用GMM进行说话人识别的方法。针对传统EM算法的奇异阵问题,提出了说话人识别的GMM模型训练的新方法,实验结果表明,与GMM常用的EM算法相比,提出的新算法能使系统提高识别率。