->语音识别(Speech Recognition)综述
上一篇文章重点介绍了基于深度学习的语音识别模型,这篇文章将介绍传统的GMM+HMM语音识别模型
不了解HMM模型的同学可以阅读一下此文章->通俗理解隐马尔可夫模型(HMM)
文章目录
- 1.训练过程:
- 2. 识别过程:
1.训练过程:
GMM+HMM 的训练过程,每次输入模型的是一个帧序列和对应的单词序列,训练过程属于HMM模型中的学习问题,使用EM算法迭代求解,关于EM算法的详细解析请参考此文章->#通俗理解# 从极大似然估计(MLE)到最大期望(EM)算法
训练步骤:
- 将单词序列细化为三音素序列
- 穷举当前三音素序列所有可能的状态序列
- 初始化转移矩阵A,发射矩阵B,初始状态概率矩阵 π \pi π,(出初始化时均分概率)
- 通过前向或后向算法得到每种状态序列的概率
- 计算每种状态序列得到当前三音素序列的概率
- 求三音素序列在每种状态序列上的期望(概率求和)(E-step),并最大化这个期望(M-step),求得对应转移矩阵A,发射矩阵B,初始状态概率矩阵 π \pi π(求导并令导数为零)
- 重复执行 3、4、5、6 步,直至模型收敛
上述步骤中得到的期望概率公式为:
∑ q 1 = 1 k . . . ∑ q n = 1 k P ( Y ∣ q 1 , . . . q n , A , B , π ) P ( q 1 , . . . q n ∣ Y , A , B , π ) \sum_{q_1=1}^{k}...\sum_{q_n=1}^{k}P(Y|q_1,...q_n,A,B,\pi)P(q_1,...q_n|Y,A,B,\pi) q1=1∑k...qn=1∑kP(Y∣q1,...qn,A,B,π)P(q1,...qn∣Y,A,B,π)
其中 P ( Y ∣ q 1 , . . . q n , A , B , π ) P(Y|q_1,...q_n,A,B,\pi) P(Y∣q1,...qn,A,B,π)为观测数据在隐状态序列上的条件概率, P ( q 1 , . . . q n ∣ Y , A , B , π ) P(q_1,...q_n|Y,A,B,\pi) P(q1,...qn∣Y,A,B,π)为隐状态序列的概率
当我们发射矩阵用GMM表示时,我们有多出了n个混合高斯参数,因此还要在不同的GMM参数上进行求和,公式如下:
∑ z 1 = 1 m . . . ∑ z n = 1 m ∑ q 1 = 1 k . . . ∑ q n = 1 k P ( Y ∣ q 1 , . . . q n , z , A , B , π ) P ( q 1 , . . . q n , z 1 , . . . , z n ∣ Y , A , B , π ) \sum_{z_1=1}^{m}...\sum_{z_n=1}^{m}\sum_{q_1=1}^{k}...\sum_{q_n=1}^{k}P(Y|q_1,...q_n,z,A,B,\pi)P(q_1,...q_n,z_1,...,z_n|Y,A,B,\pi) z1=1∑m...zn=1∑mq1=1∑k...qn=1∑kP(Y∣q1,...qn,z,A,B,π)P(q1,...qn,z1,...,zn∣Y,A,B,π)
其中, z 1 . . . z n z_1...z_n z1...zn为n个混合高斯参数取值( z i = 2 z_i=2 zi=2表示第一个隐状态属于第1个隐状态混合高斯分布的第二个高斯分布), P ( q 1 , . . . q n , z 1 , . . . , z n ∣ Y , A , B , π ) P(q_1,...q_n,z_1,...,z_n|Y,A,B,\pi) P(q1,...qn,z1,...,zn∣Y,A,B,π)表示在当前HMM模型中, q 1 , . . . q n , z 1 , . . . , z n q_1,...q_n,z_1,...,z_n q1,...qn,z1,...,zn取某一值的概率
注:最大化期望并使导数为零等价于:使用t时刻 A , B , π A,B,\pi A,B,π 的值最大化期望后,统计t+1时刻 A , B , π A,B,\pi A,B,π 的值,本质上是使用旧参数在模型上最大化期望的到新参数
这里我们能够更深刻的理解EM算法的思想,EM算法通过旧参数估计得到隐变量(q,z)的概率分布,然后最大化似然函数在隐变量的的期望从而得到新参数,然后再用新参数估计隐变量的概率分布…以此迭代直至模型收敛,本质上是将参数分成两组A,B,固定A的值优化B,在用新的B去估计A…
2. 识别过程:
识别过程属于HMM模型中的预测问题,识别一段语音(特征帧序列)的过程如下:
- 穷举当前帧序列对应的所有可能状态序列
- 根据转移概率和发射概率,得到特征帧序列由每种状态序列产生的概率
- 不同的状态通过
组合后,可能得到相同的单词序列,因此我们将产生相同单词序列的所有状态序列的概率求和,作为特征帧序列被识别成这个单词序列的似然概率状态->三音素序列->单词序列
- 计算特征帧序列所有可能单词序列在语音模型中的概率作为单词序列的先验概率;然后将上一步计算得到的单词序列的似然概率和语言模型中的单词序列先验概率 相乘作为单词序列的后验概率
- 找到后验概率最大的单词序列作为特征帧序列的识别结果
Y ∗ = arg max Y P ( Y ∣ X ) = arg max Y P ( X ∣ Y ) P ( Y ) P ( X ) = arg max Y P ( X ∣ Y ) P ( Y ) Y^*=\argmax\limits_{Y} P(Y|X)=\argmax\limits_Y\frac{P(X|Y)P(Y)} {P(X)}=\argmax\limits_YP(X|Y)P(Y) Y∗=YargmaxP(Y∣X)=YargmaxP(X)P(X∣Y)P(Y)=YargmaxP(X∣Y)P(Y)
上式中, P ( X ) P(X) P(X)为单词序列的先验概率,来自语言模型, P ( X ∣ Y ) P(X|Y) P(X∣Y)是似然概率,来自声学模型(GMM+HMM)
注:
- 三音素表示用:[ 前一个音素、当前音素、下一个音素 ] 三个音素来表示一个音素,因为同一个音素的相邻音素不同,音素的发音也会不同
- 每个音素由N个状态组成,N个状态用于表示音素开始阶段->稳定->结束的整个过程
- 一段特征帧序列往往有很多帧,远远多于状态数(比如一个三音素的状态数:一般英文为3,中文为5),我们的做法就是按顺序重复输出每个状态,然后计算每种状态序列概率的和;
比如三音素的状态依次为:a、b、c、特征帧的数目为10,那么可能的状态序列为 aaabbbcccc、aaaabbbccc
等,我们会将所有状态序列的概率求和并作为这个特征帧序列由这个三音素产生的概率