基于GMM+HMM的语音识别实现原理(以孤立词识别为例)

本文梳理了最近学习的基于GMM+HMM的语音识别实现原理,以便日后翻阅。文章分为三部分,第一部分对语音识别的整体流程进行介绍,第二部分介绍GMM+HMM的结构以及建模过程,第三部分简要介绍大词汇量语音识别的过程。

1、语音识别流程

(1)语音识别基本公式

传统的语音识别,通俗来讲就是在众多语音模型中找到与待识别语音相似度最高的模型,并以此作为识别结果,用公式可表示为:

(2)语音识别流程图

基于GMM+HMM的语音识别实现原理(以孤立词识别为例)_第1张图片
上图是传统语音识别的基本流程图,训练的过程为语音经过前端处理后得到帧级别的特征(例如MFCC、FBK、LPC等),再将特征训练成音素级别的声学模型,然后参考字典将音素拼接成单词,最后用语言模型将单词复合成句子。识别的过程是将经过特征提取的语音利用模型进行解码,最后得到相匹配的模型作为输出结果。

2、GMM+HMM建模过程及结构

GMM和HMM的原理在此略过。

(1)GMM模型

首先来看下图,图中每一条竖线代表一个特征向量,每一行都是由同一个孤立词的发音所提取出来的特征序列,即训练数据,由于每次发音都略有区别,因此序列的长度有所不同。首先,我们需要将序列进行拆分,拆分的原则是将相似特征放在一起组成一个状态,拆分的方法就是Balm_welch算法。如下图中,就可以将这一个孤立词的所有训练数据分成五个状态(实际一个孤立词有十几个状态,每三个状态连接成一个音素),然后对每一个状态用通过EM算法用GMM进行建模,这样其实就完成了对HMM每个状态的模型的建立。
基于GMM+HMM的语音识别实现原理(以孤立词识别为例)_第2张图片

(2)HMM模型

在上一步的基础上,再计算状态间的转移概率,就构成了完整的HMM模型,转移到自身的箭头表示下一帧的状态仍然停留在原状态的概率,向后的箭头表示下一帧转移到下一个状态的概率,由此也可以得到,转移到自身概率值越大,说明语音在该状态的持续时间越长。
基于GMM+HMM的语音识别实现原理(以孤立词识别为例)_第3张图片

(3)识别过程

如下图所示,最下方为一个待识别语音,在模型建立之后,用viterbi算法对序列进行强制对齐(实际上就是找到与当前特征最相似的状态),然后将特征向量带入所对应状态的GMM计算该特征的观测概率,将整条语音的所有观测概率乘以转移概率,即得到了该模型产生待测语音的概率值,图示中的后验概率计算:0.016+0.80.028+0.7
基于GMM+HMM的语音识别实现原理(以孤立词识别为例)_第4张图片

3、大词汇量语音识别

大词汇量语音识别和孤立词语音识别最大的差别在于,大词汇量语音识别在解码过程中还需要词典和语言模型的参与。

(1)训练

这里我们不再对每个单词进行建模,而是对更小的单位–音素进行建模。给定许多语音和对应的音素串,由于每个音素的HMM是单向的,因此依然可以用BALM算法进行模型参数的求解(此处不需要语言模型和字典的参与)

(2)解码

音素的HMM按词典拼接成单词的HMM,单词的HMM与语言模型复合成网状结构的语言HMM,然后将待识别语音的特征与网络中的音素进行对比,接着用字典将音素拼接成字,用viterbi算法选择最佳路径作为识别结果,。

你可能感兴趣的:(语音识别)