《GMM-HMM语音识别原理详解》由会员分享,可在线阅读,更多相关《GMM-HMM语音识别原理详解(14页珍藏版)》请在金锄头文库上搜索。
1、 本文简明讲述 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:一个有隐节点( uno
2、bservable )和可见节点( visible)的马尔科夫过程(见详解)。 隐节点表示状态,可见节点表示我们听到的语音或者看到的时序信号。 最开始时,我们指定这个 HMM 的结构,训练 HMM 模型时:给定 n 个时序信号 y1.yT (训 练样本), 用 MLE(typically implemented in EM) 估计参数: 1. N 个状态的初始概率 2. 状态转移概率 a 3. 输出概率 b - 在语音处理中,一个 word 由若干 phoneme (音素)组成; 每个 HMM 对应于一个 word 或者音素( phoneme ) 一个 word 表示成若干 states ,每
3、个 state表示为一个音素 用 HMM 需要解决 3 个问题: 1) Likelihood: 一个 HMM 生成一串 observation序列 x 的概率 ANS:一个有隐节点( unobservable )和可见节点( visible)的马尔科夫过程(见详解)。 隐节点表示状态,可见节点表示我们听到的语音或者看到的时序信号。 最开始时,我们指定这个 HMM 的结构,训练 HMM 模型时:给定 n 个时序信号 y1.yT (训 练样本), 用 MLE(typically implemented in EM) 估计参数: 1. N 个状态的初始概率 2. 状态转移概率 a 3. 输出概率 b
4、 - 在语音处理中,一个 word 由若干 phoneme (音素)组成; 每个 HMM 对应于一个 word 或者音素( phoneme ) 一个 word 表示成若干 states ,每个 state表示为一个音素 用 HMM 需要解决 3 个问题: 1) Likelihood: 一个 HMM 生成一串 observation序列 x 的概率 然后根据记录的最可能转移状态序列 进行回溯: 然后根据记录的最可能转移状态序列 进行回溯: 然后根据记录的最可能转移状态序列 进行回溯: 其中 只要已知了这些参数,我们就可以在predict (识别)时在给定 input sequence 的情况下,
5、计 算出一串状态转移的概率。如上图要计算的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. comp
6、lete 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 下面的公式我们已经可
7、以看出来想求参数必须要知道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 )估计
8、P(j|x) M(maximization)-step: 根据当前 P(j|x) 计算 GMM 参数(根据 fig4 下面的公式:) 其中 Training the params of HMM 前面已经有了 GMM 的 training 过程。在这一步,我们的目标是:从observation序列中估 计 HMM 参数; 假设状态 -observation服从单核高斯概率分布: 则由两部分组成: fig8. bayesian formula of P ( j | x ) 根据上图 P(j | x), 我们需要求 P(x|j)和 P(j)去估计 P(j|x)。 这里由于 P(x|j)和 P(j)都
9、不知道,需要用 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 过程。在这一步,我们的目标是:从observatio
10、n序列中估 计 HMM 参数; 假设状态 -observation服从单核高斯概率分布: 则由两部分组成: 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 param
11、eters )估计 P(j|x) M(maximization)-step: 根据当前 P(j|x) 计算 GMM 参数(根据 fig4 下面的公式:) 其中 Training the params of HMM 前面已经有了 GMM 的 training 过程。在这一步,我们的目标是:从observation序列中估 计 HMM 参数; 假设状态 -observation服从单核高斯概率分布: 则由两部分组成: 对于中的状态转移概率 aij, 定义 C(Si-Sj)为从状态 Si 转到 Sj 的次数,有 实际计算时,定义每一时刻的转移概率 为时刻 t 从 si-sj 的概率: 那么就有: 把 HMM 的 EM 迭代过程和要求的参数写专业点,就是这样的: