GMM-HMM语音识别原理详解
本文简明讲述GMM-HMM在语音识别上的原理,建模和测试过程。
1. 什么是Hidden Markov Model?
HMM要解决的三个问题:
1) Likelihood
2) Decoding
3) Training
2. GMM是什么?怎样用GMM求某一音素(phoneme)的概率?
3. GMM+HMM大法解决语音识别
3.1 识别
3.2 训练
3.2.1 Training the params of GMM
3.2.2 Training the params of 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表示为一个音素
用HMM需要解决3个问题:
1) Likelihood: 一个HMM生成一串observation序列x的概率< the Forward algorithm>
其中,αt(sj)表示HMM在时刻t处于状态j,且observation = {x1,。。.,xt}的概率
,
aij是状态i到状态j的转移概率,
bj(xt)表示在状态j的时候生成xt的概率,
2)Decoding: 给定一串observation序列x,找出最可能从属的HMM状态序列< the Viterbi algorithm>
在实际计算中会做剪枝,不是计算每个可能state序列的probability,而是用Viterbi approximation:
从时刻1:t,只记录转移概率最大的state和概率。
记Vt(si)为从时刻t-1的所有状态转移到时刻t时状态为j的最大概率:
记为:从时刻t-1的哪个状态转移到时刻t时状态为j的概率最大;
进行Viterbi approximation过程如下:
然后根据记录的最可能转移状态序列进行回溯:
3)Training: 给定一个observation序列x,训练出HMM参数λ = {aij, bij} the EM (Forward-Backward) algorithm
这部分我们放到"3. GMM+HMM大法解决语音识别"中和GMM的training一起讲
---------------------------------------------------------------------
GMM是什么?#e#
2. GMM是什么?怎样用GMM求某一音素(phoneme)的概率?
2.1 简单理解混合高斯模型就是几个高斯的叠加...e.g. k=3
fig2. GMM illustration and the probability of x
2.2 GMM for state sequence
每个state有一个GMM,包含k个高斯模型参数。如"hi"(k=3):
PS:sil表示silence(静音)
fig3. use GMM to estimate the probability of a state sequence given observation {o1, o2, o3}
其中,每个GMM有一些参数,就是我们要train的输出概率参数
fig4. parameters of a GMM
怎么求呢?和KMeans类似,如果已知每个点x^n属于某每类 j 的概率p(j|x^n),则可以估计其参数:
其中
只要已知了这些参数,我们就可以在predict(识别)时在给定input sequence的情况下,计算出一串状态转移的概率。如上图要计算的state sequence 1->2->2概率:
fig5. probability of S1->S2->S3 given o1->o2->o3
---------------------------------------------------------------------
GMM+HMM大法解决语音识别#e#
3. GMM+HMM大法解决语音识别
我们获得observation是语音waveform, 以下是一个词识别全过程:
1)将waveform切成等长frames,对每个frame提取特征(e.g. MFCC),
2)对每个frame的特征跑GMM,得到每个frame(o_i)属于每个状态的概率b_state(o_i)
fig6. complete process from speech frames to a state sequence
3)根据每个单词的HMM状态转移概率a计算每个状态sequence生成该frame的概率; 哪个词的HMM 序列跑出来概率最大,就判断这段语音属于该词
宏观图:
fig7. Speech recognition, a big framework
好了,上面说了怎么做识别。那么我们怎样训练这个模型以得到每个GMM的参数和HMM的转移概率什么的呢?
①Training the params of GMM
GMM参数:高斯分布参数:
从上面fig4下面的公式我们已经可以看出来想求参数必须要知道P(j|x)
- 基于DSP和机器人的声控系统设计与实现(02-21)
- CEVA携Sensory力推先进的语音识别解决方案(02-12)
- NEC开发出在噪声环境下进行语音操作智能机的技术(04-10)
- 基于语音的终端映射技术如何实现智能交互?(04-30)
- 解析语音识别技术在手机中的应用(06-16)
- Nuance语音识别技术及解决方案(11-16)