HMM && GMM

转载:

http://www.inf.ed.ac.uk/teaching/courses/asr/2012-13/asr03-hmmgmm-4up.pdf

http://blog.chinaunix.net/uid-26715658-id-3453274.html

花了一天时间想要搞明白HMM&&GMM在语音识别中的原理,每次觉得明白了之后,仔细一想又不明白了,现在大体捋一捋顺序,好记性不如烂笔头嘛~

上面链接的第一个为英文PPT,从HMM到GMM识别和训练都有详细推导过程,下一篇为中文博客,主要讲的是HMM,大体意思都相似。

先说HMM要解决的三个问题:

1、给定观察序列,求出某个HMM模型产生此观察序列的概率,产生此序列的最大概率的HMM作为识别输出值。涉及前向算法

如在语音中,创建了K个word的模型,来了一个单词“yes",把”yes“得到的特征值分别作为K个word的输入,最后得到K个输出概率,概率最大的就是识别结果。

2、给定观察序列,找到一条状态转移路径,使当前观察序列得到最大的概率。涉及后向算法

3、训练一个HMM模型,给定一系列训练样本,得到HMM各个参数,代表一个模型。涉及前向-后向算法(EM算法的特例)

如要训练一个单词”yes"的HMM 模型,那么我选择标记的N个yes发音的样本,由此可以得到yes这个单词的HMM模型,下次来个单词yes就可以按照1得出识别结果概率。

HMM的两个定量:一个是隐藏状态(隐藏状态的个数由经验给定),一个是观察序列(隐藏状态不可观测,观察序列是由隐藏状态观察到的,所以一定程度上可以反映隐藏状态,但是二者数量不一定相同)。

相应的产生三个参数,各个状态初始概率pi,一个是A(i, j)表示由状态i转移到j的概率;一个是Bj(Ok),表示在状态j产生观察值k的概率(在这一部分,用到的是GMM模型)。

在语音中,一般为每个word创建一个HMM模型,每个状态表示一个音素(具体是什么不用费心,可以使1 2 3也可以使a b c表示)。观测值就是每个语音的特征值,对于一个单词,先对语音进行分帧,比如得到一帧的MFCC特征(大概39维,用Ok表示),这样分为n帧,就得到了n个时间状态的观察序列(O1,O2, .......On)。

那么语音识别过程如下:

给定了一个“yes”的HMM模型,模型参数Aij,Bj(Ok)都以给出,设状态数为4,。应用前向算法,具体是啥可见链接。可以求出此模型产生观测序列(O1,O2, .......On)的概率

P(O1,O2, .......On) = SUM(j){ALFAj(t+1) = SUM(i)(ALFAi(t)AijBj(Ot+1))}      1<= t <= n    1<= i, j <=4;其实就是在On时刻,各个状态j输出概率之和。

模型训练过程

模型由两部分组成,一个是HMM,一个是GMM,每个HMM状态对应一个GMM模型。那么一共的参数为(pi,Aij, Bj(Ok))再进行细化,Bj(Ok)由GMM模型给出,GMM模型(假设由M个高斯组成),三个参数(c, u, 6)其中c代表每个高斯的权重,u代表每个高斯的均值,6表示协方差矩阵。则要训练的参数变为(pi,Aij,ck, uk, rk);

给出训练样本,即很多组观测值。

那么模型训练过程遵循EM过程:

E-step:先初始化各个参数pi,Aij,ck, uk, rk,输入一个观测值序列,得到中间变量e(i,j),r(j)。

M-step:根据中间变量更新各个pi,Aij,ck, uk, rk变量,具体公式见链接,那么得到了新的参数。

重复EM部,经过所有样本训练后,即可得到相应的训练模型,即可进行上面的识别过程了,^_^

公式啥的实在不容易打,如果想详细了解,还是见链接吧。这样看来HMM&&GMM模型确实挺复杂,想要完全懂,还要多摸索。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值