天天看点

语音识别系统原理介绍----gmm-hmm

 从寒假前的博客:语音识别系统原理介绍---从gmm-hmm到dnn-hmm,最近有时间的时候我还是在不断的去理解gmm-hmm这个基准模型。下面我讲从提玩mfcc特征开始说起,希望可以让你有所收获吧。

     提完mfcc特征,就相当于剩下一个13维*帧数的矩阵。接下来,就是用混合高斯模型了。怎么用?就用多维的高斯模型区模拟我们得到的矩阵,相当于拟合。相当于我们假设其服从高斯分布,然后我们寻找均值和方差矩阵。可以理解为下图吧。

语音识别系统原理介绍----gmm-hmm

我们可以看到特征后用一个多维高斯函数去模拟。此外,这里还有个重要的东西,首先我们在训练阶段,我们是知道这段语音所表示的句子吧。我们通过句子,然后分词,然后分成每个音素,在隐马尔科夫(HMM)模型中一般用3-5个上述的单元表示一个音素。简单的理解就是我们每个音素的均值和方差矩阵知道,通过我们的句子我们也知道每个音素间的转移概率矩阵。当然,这些是HMM里的事情。提取特征后的第一步就完成了,简单的说就是为了拟合多维高斯函数。再贴两个图,便于理解:

语音识别系统原理介绍----gmm-hmm
语音识别系统原理介绍----gmm-hmm

    下面继续说,接下来就得说隐马尔科夫模型了。如果你不清楚,建议你去看《hmm最佳学习范例》。

一开始,我们设置每个音素的均值和方差分别为0和1,转移概率矩阵在htk里也是可以设置两头小中间大,这个对于5个状态的hmm,即每个音素分为5个状态。这步就是初始化hmm。

然后,生成各个音素的hmm。这个可以根据发音字典和原始的hmm来生成。

最后,我们根据训练数据来训练音素级的hmm。这里用到hmm的三大问题。通过训练,我们会得到三个参数:初始状态概率分布π、隐含状态序列的转移矩阵A(就是某个状态转移到另一个状态的概率观察序列中的这个均值或者方差的概率)和某个隐含状态下输出观察值的概率分布B(也就是某个隐含状态下对应于)。

有人总结了语音识别就分为三步:第一步,把帧识别成状态(难点)。第二步,把状态组合成音素。第三步,把音素组合成单词。第一步可以当做gmm做的,后面都是hmm做的。如果你能把单词识别出来,那句子也就很简单了。当然,识别句子就会有语言模型的作用。

今天先说这里吧,hmm具体的怎么操作,我想你应该可以理解了点。下次,希望我可以更加的详细的说……

此外,dnn的作用无非是为了更好的去拟合那个函数,但已经不是高斯函数了。