三音素

三音素,音素的一种,与单音素(如t, iy, n)不同,三音素表示为如t-iy+n,即由三个单音素组成,与单音素iy类似,但其考虑了上下文的关系,即,上文为t,下文为n。

三音素和单音素都是一个隐马尔科夫模型(HMM)

三音素是为了考虑上下文的信息(协同发音)

倒谱特征提取时,汉宁窗向左、向右包含了冗余的频谱,因此,用三音素代替单音素是合理的

单音素复制为三音素后,状态的个数成指数增加,但复制后的状态。为了解决数据稀疏,而需要训练的数量庞大,因此需要降低参数的数量。

聚类是为了降低所有三音素参数的数量,即降低三音素的状态的个数。

决策树的作用就是给三音素的状态做聚类。

聚类后,所有的三音素的状态被聚类为多个簇,为每个簇内的所有三音素状态进行绑定(即多个状态共享一个状态。

的参数)。

单音素训练完成后(train_mono.sh),三音素的训练(train_deltas.sh)

   

   

   

需要用到exp/mono0a_ali的对齐结果,将对齐结果使用Cross word方法映射到(复制为)三音素:

sil s p iy ch t ae s k sil

sil sil-s+p s-p+iy p-iy+ch iy-ch+t ch-t+ae t-ae+s ae-s+k s-k+sil sil

   

维特比解码是对一段音频进行解码,生成的是状态序列,这个状态序列对应多个音素(HMMs)。维特比解码的解码范围是什么?是FST?但FST是对训练的一句话生成的。是latticelatticeFST的一个实例,与FST类似。是所有的状态(单高斯或混合高斯)?那么A=[aij]从何得来?

   

Baum-Welch算法是为了确定一个HMM=λ=(π,Α,Β),使P(O/λ)最大

   

维特比算法中需要的A=[aij]就是单个HMM中的A

维特比算法的定义:这个算法解决了给定一个观察值序列O=O1,O2,…,OT和一个模型λ=(π,Α,Β),在最佳的意义上确定一个状态序列Q*=q1*,q2*,…,qT*的问题

   

训练中使用维特比算法时,某个HMM及其对应的特征序列(音频序列)是给定的,这时,是满足维特比算法的定义的。

解码时使用维特比算法时,有一段较长的特征序列,但不知道其对应的HMMs。不过,这时已经有了一个声学模型(如final.mdl),猜测其中定义了所有HMM的转移和所有聚类状态的参数,或许可以用前向后向算法计算mdl中每个HMM

   

hmm_chinese.pdf p55 3.1.2 音素HMM连续语音识别

hmm_chinese.pdf p59

在训练时用的是Viterbi算法,在识别时则用状态Viterbi算法处理状态级数据,用词汇Viterbi算法处理词汇级数据

识别时,采用了时间帧同步Viterbi(beam)搜索算法

原文地址:https://www.cnblogs.com/JarvanWang/p/7499568.html