首页 > 代码库 > 简明GMM-HMM语音识别模型

简明GMM-HMM语音识别模型

本文简明讲述GMM-HMM在语音识别上的原理,建模和测试过程。这篇blog只回答三个问题:

1. 什么是Hidden Markov Model?

2. GMM是神马?怎样用GMM求某一音素(phoneme)的概率?

3. GMM+HMM大法解决语音识别



首先声明我是做视觉的不是做语音的,迫于**需要24小时速成语音。上网查GMM-HMM资料中文几乎为零,英文也大多是paper。苦苦追寻终于貌似搞懂了GMM-HMM,本文结合最简明的概括还有自己一些理解应运而生,如有错误望批评指正。


====================================================================



1. 什么是Hidden Markov Model?


ANS:一个有隐节点(unobservable)和可见节点(visible)的马尔科夫过程(见详解)。

隐节点表示状态,可见节点表示我们听到的语音或者看到的时序信号。

最开始时,我们指定这个HMM的结构,训练HMM模型时:给定n个时序信号y1...yT(训练样本), 用MLE(typically implemented in EM) 估计参数:

1. N个状态的初始概率

2. 状态转移概率a

3. 输出概率b

--------------

  • 在语音处理中,一个word由若干phoneme(音素)组成;
  • 每个HMM对应于一个word或者音素(phoneme)
  • 一个word表示成若干states,每个state表示为一个音素







---------------------------------------------------------------------


2. GMM是神马?怎样用GMM求某一音素(phoneme)的概率?

2.1 简单理解混合高斯模型就是几个高斯的叠加。。。e.g. k=3


2.2 GMM for state sequence 

每个state有一个GMM,包含k个高斯模型参数。如”hi“(k=3):

PS:sil表示silence(静音)

其中,每个GMM有一些参数,就是我们要train的输出概率参数


只要已知了这些参数,我们就可以在predict(识别)时在给定input sequence的情况下,计算出一串状态转移的概率。如上图要计算的state sequence 1->2->2概率:






3. GMM+HMM大法解决语音识别

我们获得observation是语音waveform, 以下是一个词识别全过程:

1. 将waveform切成等长frames,对每个frame提取特征(e.g. MFCC), 

2.对每个frame的特征跑GMM,得到每个frame(o_i)属于每个状态的概率b_state(o_i)




3. 根据每个单词的HMM状态转移概率a计算属于该词的概率(如上图最后一行);那个词的HMM跑出来概率最大,就判断这段语音属于该词


宏观图:


(from Encyclopedia of Information Systems, 2002)








本文太过简略,只为科普。欢迎关注Rachel____Zhang