HTK语音识别中的决策树

1.为什么需要决策树


我们在使用HTK进行语音识别模型训练的过程中,首先进行的是单音素、单个高斯的模型训练。抛开单个高斯不说,单音素模型本身有很大缺点:没有考虑到本音素前后音素的发音对本音素的影响。比如,同样是一个音素iy,如果它前面的音素分别是h和p,那么iy这个音素在这两种情况下的发音会有所不同,那么模型参数也就会受到其影响,此时,如果用同一个模型来描述音素iy,那么就会不合理。


为了解决这个问题,采用三音素(triphones)模型,典型的三音素模型如下 [t-iy+n],这表示iy音素前一个音素是t,后一个因素是n,模型[t-iy+n] 用来表示这种情况下的音素iy模型,那么此时,这个三音素模型和 [t-iy+ng] 不再表示同一个模型了,虽然他们都是表示音素 iy的模型,但是因为中心音素(此处为iy)的上下文音素不同了,所以此时它们其实是两个不同的模型。


如此以来,模型的数量会剧增。单因素模型时,假如我们只有40个音素需要建模,每个音素有3个HMM状态。但是在三因素模型中,最坏的情况是需要给40×40×40 个模型进行建模,当然这其中有很多是不可能或者不会在训练数据中出现的。但是相对于单音素模型来说,这个数目已经增加了很多倍,这就导致了一个问题:训练数据不足!那么如何解决因为模型数量增加而导致训练数据不足的问题呢?HTK使用了模型状态绑定的方法。所谓的模型状态绑定,就是让一些具有某些相似特征的模型的一些状态来共享一组模型参数,这样就能够有效的减少模型参数的数量从而解决训练数据不足的问题。
2.如何使用决策树进行模型的状态绑定


在进行状态绑定时,我们首先要做的就是使用决策树进行聚类。具有相同类别的模型,他们的某一个状态可以共享一组参数。例如:对于音素iy,如果它的前一个音素分别是m和n,由于m和n发音比较像,所以模型[m-iy+*]和[n-iy+*]的第一个状态的参数就应该比较相似,那么我们就把这两个模型的第一个状态的参数进行绑定,也就是说这两个模型的第一个状态参数是相同的。那么到底如何确定那些模型的哪些状态可以共用一组参数也就是可以进行绑定参数?这就用到了决策树进行聚类,具有相同类别的状态就可以共用一组参数。


在这里,一定要注意,我们在建立决策树时,是对每个音素的每个状态都建立一个决策树,而不是只对某一个音素来建立。这里,我们以音素ih的首状态为例,详细说明决策树的建立过程。
HTK语音识别中的决策树_第1张图片

HTK语音识别中的决策树
在上图中的每一个类中,A、B……E,每一个类中的第一个状态都被绑定在一起,如此进行,把所有的音素的所有状态都进行决策树的建立,就能完成参数的绑定。


3.决策树中的问题集
在上图中,我们看到一些问题集,类似与“左边是清音吗?”等等,这些问题集都是根据声学和语音学特征提出来的。


http://blog.sina.com.cn/s/blog_6df8f2620102v0gb.html 

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