微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > GMM-HMM语音识别原理详解

GMM-HMM语音识别原理详解

时间:11-15 来源:CSDN 点击:

  本文简明讲述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)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top