GMM-HMM语音识别建模
截图来自台大《數位語音處理概論》课程课件
電機系 李琳山
Hidden Markov Model
观测是状态的概率函数(离散或连续)
该模型是一个随机过程,其底层随机过程是不可直接观测(隐藏)的。(状态是不可直接观测到的)
根据观测序列,我们永远不知道是哪个状态序列产生了它
Elements of an HMM {S,A,B,π}
S: 可能的状态的集合。
A:N*N 矩阵,状态转移矩阵。
B:是一组N个概率函数,每个函数描述相对于一个状态产生某观测的概率。
π:起始状态的概率矩阵。
在GMM-HMM语音建模中,观测值一般为加窗计算MFCC特征后的的一个一个39维的向量。
HMM三个基本问题:
1.如何高效的计算P(O| λ) ------Evaluation problem
2.给定观测序列,求最可能对应的状态序列q=(q1,q2,……, qT)------ Decoding Problem
3.已知观测序列,估计模型参数 λ =(A,B,π) ,使得 在该模型下观测序列P(O| λ)最大------ Learning /Training Problem
求解问题1:前向算法/后向算法
前向算法:
后向算法:
问题二:使用维特比算法:用动态规划的方法解隐马尔科夫模型的预测问题,即用动态规划求概率最大路径(最优路径)。这时一条路径对应着一个状态序列。
在解码中的每一步中,我们要记录下当前状态是由哪一个状态转换过来的(即上一状态),等解码结束后,就可以从最后一个状态一直找当前状态的前一状态,最后得到最佳路径。
用于语音识别中时,假如有现在有10个训练好的语音模型,
分别对应0~9的发音。现给定一段语音,即观测值
求是属于哪一个。
几率最大的路径通常比其他的路径几率大很多,所以两个式子会近似相等。
问题3:如何训练模型—Baum-welch算法
如何求新的a ij。
比如我们有一个现在效果很不好的语音9的模型,我们有一大堆9的训练数据,有了这些我们就可以把εt(i, j)和
γt(i, j)求出来,然后更新a ij。即数据会告诉我们在HMM模型里面的状态是如何跳转的。
GMM的参数更新公式:
GMM-HMM训练注意事项: