->语音识别(Speech Recognition)综述 上一篇文章重点介绍了基于深度学习的语音识别模型,这篇文章将介绍传统的GMM+HMM语音识别模型

不了解HMM模型的同学可以阅读一下此文章->通俗理解隐马尔可夫模型(HMM)


文章目录

  • 1. 识别过程:
  • 2.训练过程:

1. 识别过程:

识别过程属于HMM模型中的预测问题,识别一段语音(特征帧序列)的过程如下:

  1. 穷举当前帧序列对应的所有可能状态序列
  2. 根据转移概率和发射概率,得到特征帧序列由每种状态序列产生的概率
  3. 一段特征帧序列远多于单词对应的状态数,同一单词序列细化成状态序列后,需要将序列中的状态数目扩展到特征帧的数量,拓展后的状态序列会有多种可能,我们将每种可能的状态序列的概率求和,作为特征帧序列被识别成这个单词序列的似然概率
  4. 计算特征帧序列所有可能单词序列在语音模型中的概率作为单词序列的先验概率;然后将上一步计算得到的单词序列的似然概率语言模型中的单词序列先验概率相乘作为单词序列的后验概率
  5. 找到后验概率最大的单词序列作为特征帧序列的识别结果

语音识别 声学训练 语言训练 语音识别训练模型_HMM
上式中,语音识别 声学训练 语言训练 语音识别训练模型_语音识别_02为单词序列的先验概率,来自语言模型,语音识别 声学训练 语言训练 语音识别训练模型_GMM_03是似然概率,来自声学模型(GMM+HMM), 语音识别 声学训练 语言训练 语音识别训练模型_EM_04

注:

  1. 三音素表示用:[ 前一个音素、当前音素、下一个音素 ] 三个音素来表示一个音素,因为同一个音素的相邻音素不同,音素的发音也会不同
  2. 每个音素由N个状态组成,N个状态用于表示音素开始阶段->稳定->结束的整个过程
  3. 一段特征帧序列往往有很多帧,远远多于状态数(比如一个三音素的状态数:一般英文为3,中文为5),我们的做法就是按顺序重复输出每个状态,然后计算每种状态序列概率的和;

比如三音素的状态依次为:a、b、c、特征帧的数目为10,那么可能的状态序列为 aaabbbcccc、aaaabbbccc
等,我们会将所有状态序列的概率求和并作为这个特征帧序列由这个三音素产生的概率

2.训练过程:

GMM+HMM 的训练过程,每次输入模型的是一个帧序列和对应的单词序列,训练过程属于HMM模型中的学习问题,使用EM算法迭代求解,关于EM算法的详细解析请参考此文章->#通俗理解# 从极大似然估计(MLE)到最大期望(EM)算法 训练步骤:

  1. 将单词序列细化为三音素序列
  2. 穷举当前三音素序列所有可能的状态序列(将状态序列维度拓展到特征帧维度之后所有可能的状态序列)
  3. 初始化转移矩阵A,发射矩阵B,初始状态概率矩阵 语音识别 声学训练 语言训练 语音识别训练模型_语音识别 声学训练 语言训练_05,(出初始化时均分概率)
  4. 根据上一步得到的模型参数(A,B,π),通过前向或后向算法得到每种状态序列的概率(先验)
  5. 计算每种状态序列得到当前三音素序列的似然函数(A,B,π为变量)
  6. 求三音素序列在每种状态序列(先验)上的期望(按概率求和)(E-step),并最大化这个期望(M-step),求得对应更新后的:转移矩阵A,发射矩阵B,初始状态概率矩阵 π(求导并令导数为零)
  7. 重复执行 3、4、5、6 步,直至模型收敛

上述步骤中得到的期望概率公式为:
语音识别 声学训练 语言训练 语音识别训练模型_GMM_06
其中语音识别 声学训练 语言训练 语音识别训练模型_语音识别 声学训练 语言训练_07为观测数据在隐状态序列上的条件概率,语音识别 声学训练 语言训练 语音识别训练模型_GMM_08为隐状态序列的概率

当我们发射矩阵用GMM表示时,我们有多出了n个混合高斯参数,因此还要在不同的GMM参数上进行求和,公式如下:
语音识别 声学训练 语言训练 语音识别训练模型_GMM_09
其中,语音识别 声学训练 语言训练 语音识别训练模型_HMM_10为n个混合高斯参数取值(语音识别 声学训练 语言训练 语音识别训练模型_语音识别_11表示第一个隐状态属于第1个隐状态混合高斯分布的第二个高斯分布),语音识别 声学训练 语言训练 语音识别训练模型_语音识别_12表示在当前HMM模型中,语音识别 声学训练 语言训练 语音识别训练模型_语音识别 声学训练 语言训练_13取某一值的概率

注:最大化期望并使导数为零等价于:使用t时刻 语音识别 声学训练 语言训练 语音识别训练模型_EM_14 的值最大化期望后,统计t+1时刻 语音识别 声学训练 语言训练 语音识别训练模型_EM_14

这里我们能够更深刻的理解EM算法的思想,EM算法通过旧参数估计得到隐变量(q,z)的概率分布,然后最大化似然函数在隐变量的的期望从而得到新参数,然后再用新参数估计隐变量的概率分布…以此迭代直至模型收敛,本质上是将参数分成两组A,B,固定A的值优化B,在用新的B去估计A…