语音识别笔记(4)-GMM-HMM模型
框架
基于GMM-HMM模型的语音识别的框架如下图所示:

- 在数据准备阶段,需要获得的数据包括:音频、文本,以及词典、音素集、问题集等
- 在特征提取阶段,根据前文所述的方法,对原始音频数据进行分帧等操作,提取MFCC特征
- 在单音素GMM-HMM建模阶段,使用单音素作为基本的识别单元,进行模型训练
- 在三音素GMM-HMM建模阶段,使用三音素作为基本的识别单元,进行模型训练
- 在解码阶段,根据训练得到的模型参数,从wav推出txt
几种模型
根据识别单元的不同,可将GMM-HMM模型划分为几种类型
基于孤立词的GMM-HMM
目标
为词表中的每个词建立一个GMM-HMM模型,对于待识别音频,找出使该观测值概率最大的模型,识别结果就是该模型对应的单词。用公式表示如下:
其中,表示音频特征,是词w的概率模型,vocab是词表
可以是GMM-HMM模型、DNN等。当是GMM-HMM模型时,其状态数通常为3状态,如下图所示:

训练
使用训练数据,训练对应词的模型,即估计GMM-HMM模型参数。可使用前面介绍过的Viterbi学习算法或者Baum-Welch学习算法。
解码
方法1
解码时,系统输入的是各个词的HMM-GMM模型以及待识别的语音信号特征,需要输出是哪个单词。

具体计算时,对所有的w,计算,取概率最大的值所对应的w作为识别结果。
计算方法上,可以选用前面介绍的前向算法(求总体出现概率)或Viterbi算法(求最优路径概率)
方法2
除了对每个单词分别构建GMM-HMM模型以外,还可以对所有待识别的单词(词表中的词)统一构建一个GMM-HMM模型,如下图所示

在这种方法中,解码过程只能使用Viterbi算法,求出最优路径所对应的单词,作为解码结果。
在结束状态与起始状态之间连接一条边,即可将该模型用于连续的孤立词识别(如上图蓝色箭头所示,可识别连续数字one-two)
基于单音素的GMM-HMM
孤立词系统的缺点
- 建模单元数、计算量和词典大小成正比
- 词的状态数(a/accomplishment)对每个词应该不同,长词应该使用更多的状态
- OOV(Out of Vocabulary)问题
- 词并不是一个语言的基本发音单元,以词为建模单元无法共享这些发音的基本单元。
音素(Phone)
音素是发音的基本单元,如
英文音素(CMU phone,39)
AA AE AH AO AW AX AXR AY
B BD CH D DD DH DX EH ER EY
F G GD HH IH IX IY JH K
KD L M N NG OW OY P PD
R S SH T TD TH TS UH UW
V W X Y Z ZH 静音Silence(SIL)
中文音素(可以认为声韵母就是音素)
a o e i u v
b p m f d t n l g k h j q x
zh ch sh z c s y w
ai ei ui ao ou iu ie ue er
an en in un vn
ang eng ing ong 静音Silence(SIL)
词典
词典是词到音素序列的映射, 0~9 10个数字的英文词典如下:
| 词 | 音素 |
|---|---|
| one | W AA N |
| two | T UW |
| three | TH R IY |
| four | F AO R |
| five | F AY V |
| six | S IH K S |
| seven | S EH V AX N |
| eight | EY T |
| nine | N AY N |
| zero | Z IY R OW |
模型结构
在GMM-HMM模型中,每个音素使用经典的3状态结构,同一单词的不同音素依次相连,构成完整的HMM图,如下图所示:

解码
解码时,根据训练好的GMM-HMM模型,使用Viterbi算法确定最优路径,从而确定解码的单词。
基于三音素的GMM-HMM
单音素的缺点
- 建模单元数少,一般英文系统的音素数量在30~60个,中文系统的音素数量在100个左右
- 音素的发音受其所在上下文的影响(协同发音),如
1)连读: Not at all,He is
2)吞音:first time
三音素
考虑音素的上下文(Context),通常考虑音素的前一个和后一个音素,称为三音素,表示为A-B+C
例如:KEEP K IY P => #-K+YI, K-IY+P, YI-P+#
绑定
为了解决三音素数量过大、某些三音素没有或只有较少的训练数据的问题,可以将多个三音素单元“绑定”,使上下文发音相近的三音素共享参数,从而缓解上述问题。绑定方法主要有自底向上的聚类方法和自顶向下的决策树方法。
聚类
自底向上的方法,但是对于测试集中没有遇到过的三音素,无法解决。
决策树
自顶而下的方法,是三音素绑定的实际解决方案。决策树是一颗二叉树,每个非叶子节点上都有一个问题,每个叶子节点上是一个集合,每个集合中包含同一类(绑定)的三音素。
绑定的粒度是状态,即A-B+C和A-B+D的第1个状态绑定在一起,
并不代表其第2、3个状态也要在一起,B的每个状态都有一颗小的决策树

常见问题集
- 元音(Vowel): AA AE AH AO AW AX AXR AY EH ER …
- 爆破音(Stop): B D G P T K
- 鼻音(Nasal): M N NG
- 摩擦音(Fricative): CH DH F JH S SH TH V Z ZH
- 流音(Liquid): L R W Y
决策树的生成过程
- 初始状态(一个结点)
- 选择一个结点
- 从问题集中选择似然增益最大的问题作为该节点问题
- 建立该节点左右子节点,并将该节点上的统计量分为两部分
- 重复2 ,直至
- 达到一定数量的叶子结点
- 似然增益小于某个阈值
算法流程
基于三音素的GMM-HMM语音识别系统,总体流程如下:
- 数据准备:音素列表、词典、训练数据(音频/文本)
- 特征提取:MFCC特征
- 单音素GMM-HMM:Viterbi训练
- 三音素GMM-HMM:决策树和三音素,Viterbi训练
- 解码




