基于HMM的语音识别(一)

利用业余时间写一下自己看书的感受,就当作随笔把,这样也能帮助自己记忆,同时关于kaldi的章节我选择先停一停,我感觉把这个问题理解透再去查看kaldi可能会事半功倍。我选取的章节来源于"The Application of Hidden Markov Models in Speech Recognition",英文版的,有兴趣的可以去看看。废话不多说,我们直接进入主题。

下图显示了大型连续语音词汇识别的主要部分:

基于HMM的语音识别(一)_第1张图片

说实话看这图要不是我会语音增强的部分知识的话,我会认为很简单,的确,图看上去确实很简单,不过任何一个细节拿出来都足以让我们翻阅无数资料。如图,输入的波形(语音)被转化固定长度的语音响亮序列:

这个过程称之为特征提取,也就是著名的Feature Extraction(不要看到公式就害怕,就是有序的向量的排列)。那么解码器(Decoder)就会尝试去寻找最可能产生如上Y的字:w1:L=w1,....wL 的序列,假如decoder尝试寻找

(PS:哇,看到这里我突然想到了为什么要训练模型了)。然而,由于P(w|Y)直接建模是十分困难的,我们对上述式子使用贝叶斯准则就会得到如下的相等式子:

这里其实有朋友会像我刚开始一样迷惑:这TM是瞎说呀,当我们不会贝叶斯准则吗,朋友,在打死我之前,我是这么说服我自己的:

基于HMM的语音识别(一)_第2张图片

大爷你细想一下是不是这个道理。其中p(Y|w)的概率是由声学模型(acoustic model )来决定的,而后者P(w)是由语言模型来决定的【仔细品这两句话呀,越品越感觉有点意思】。声音的基本单位是音素(Phone,别像我似的记成手机,唉)。比如单词bat由三个音素组成:/b/,/ae/,/t/。大约40个这样的音素能组成英文【其实我的老师一直讲元音20个,辅音28个,我不知道作者这里是不是想说48,所以用了大约这个词】。

对于任何给我们的w,其对应的声学模型都是通过串联音素模型来拼成我们预先定义好字典中的单词(仔细品味,反问自己一句,声学模型是用来干什么的?)。其中音素模型的参数都是通过由语音和其带有标签的数据训练而得到的。语言模型通常是一个N-gram模型,每个词的概率仅在他的N-1个词上进行调整【我的理解就是换个角度:他的下个词的概率仅仅与本词相关,与马尔可夫的状态改变相互联系一下,是不是感觉有点意思,错了当我没说。。。】。通过在合适的语料库中计数N元组来估计N元参数【这句话我理解不了,日后分析】。decoder通过搜索所有可能的单词来修建那些低概率的可能从而保证了搜索易于处理【这句前半句很明白,后半句保证了搜索易于处理什么意思,我的想法是随着剪掉的可能越来越多,搜索也就越来越快,处理起来越容易】。当话语结束时,输出最可能的序列。另外,现代解码器可以生成包含最可能假设的紧凑形式。

由于时间关系,今天到此结束,明天晚上回来继续。

你可能感兴趣的:(语音识别)