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的概率
其中,αt(sj)表示hmm在时刻t处于状态j,且observation = {x1,。。.,xt}的概率

aij是状态i到状态j的转移概率,
bj(xt)表示在状态j的时候生成xt的概率,
2)decoding: 给定一串observation序列x,找出最可能从属的hmm状态序列
在实际计算中会做剪枝,不是计算每个可能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一起讲
---------------------------------------------------------------------
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
---------------------------------------------------------------------
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),即,x属于第j个高斯的概率。怎么求捏?
fig8. bayesian formula of p( j | x )
根据上图 p(j | x), 我们需要求p(x|j)和p(j)去估计p(j|x)。
这里由于p(x|j)和p(j)都不知道,需要用em算法迭代估计以最大化p(x) = p(x1)*p(x2)*.。.*p(xn):
a. 初始化(可以用kmeans)得到p(j)
b. 迭代
e(estimate)-step: 根据当前参数 (means, variances, mixing parameters)估计p(j|x)
m(maximization)-step: 根据当前p(j|x) 计算gmm参数(根据fig4 下面的公式:)
其中
②training the params of hmm
前面已经有了gmm的training过程。在这一步,我们的目标是:从observation序列中估计hmm参数λ;
假设状态->observation服从单核高斯概率分布:
则λ由两部分组成:
hmm训练过程:迭代
e(estimate)-step: 给定observation序列,估计时刻t处于状态sj的概率
m(maximization)-step: 根据重新估计hmm参数aij.
其中,
e-step: 给定observation序列,估计时刻t处于状态sj的概率
为了估计, 定义: t时刻处于状态sj的话,t时刻未来observation的概率。即
这个可以递归计算:β_t(si)=从状态 si 转移到其他状态 sj 的概率aij * 状态 i 下观测到x_{t+1}的概率bi(x_{t+1}) * t时刻处于状态sj的话{t+1}后observation概率β_{t+1}(sj)
即:
定义刚才的为state occupation probability,表示给定observation序列,时刻t处于状态sj的概率p(s(t)=sj | x,λ) 。根据贝叶斯公式p(a|b,c) = p(a,b|c)/p(b|c),有:
由于分子p(a,b|c)为
其中,αt(sj)表示hmm在时刻t处于状态j,且observation = {x1,。。.,xt}的概率;
: t时刻处于状态sj的话,t时刻未来observation的概率;

finally, 带入的定义式有:
好,终于搞定!对应上面的e-step目标,只要给定了observation和当前hmm参数 λ,我们就可以估计了对吧 (*^__^*)
m-step:根据重新估计hmm参数λ:
对于λ中高斯参数部分,和gmm的m-step是一样一样的(只不过这里写成向量形式):
对于λ中的状态转移概率aij, 定义c(si->sj)为从状态si转到sj的次数,有
实际计算时,定义每一时刻的转移概率为时刻t从si->sj的概率:
那么就有:
把hmm的em迭代过程和要求的参数写专业点,就是这样的:

用于架构探索和功能安全分析的虚拟样机平台
设计高效分布式智慧终端系统的关键要素
可穿戴技术是什么 有哪些特点
5G基带芯片的华山论剑
小米5C还会在小米6以前发?小米平板3还有吗?
GMM-HMM语音识别原理详解
OPPO Find X3 Pro国际版已通过FCC认证
无铅锡膏和有铅锡膏有什么区别?锡膏厂家告诉你
探究LG的LG Wing屏幕旋转技术
量子点电视原理是什么?量子点电视优缺点
运算放大器中功率排序不当:分析风险
中信重工研发多款疫情防控智能机器人 最大限度把疫情影响降到最低
《51单片机C语言编程》学习
SiC MOSFET在电源转换器设计中的优化方案
雷蛇2020年更新了Blade Stealth 13笔记本电脑
大功率变频电源对运行环境的要求是怎样的
机器视觉的不断发展带来了什么
HYV连接器可增加大电流连接时的安全性
综合布线工程竣工的检验要求
鸿湖万联启鸿开发板通过OpenHarmony兼容性测评