训练与解码

BW算法是对某一个HMM(一个音素)进行训练,需要该HMM对应的观察向量(一段音频),如何让一段文本中的某个音素找到对应一整段音频中的一小段音频?需要用到对齐来找到所有的[音素-音频]的配对。

   

训练时也需要解码

1,设训练的一句话有n个音素,即n个HMM,即3n个状态。将这句话对应的音频平均地切分为n个片段(无环回的HMM),每个片段有3个状态(无环回,否则一个HMM大于三个状态)

2,使用k-means算法,将每个状态对应的所有特征向量聚类为M个簇(这句话有3nM个簇)

3,为状态i中的每个簇计算均值、协方差矩阵和混合权重(即计算一个GMM,这句话有3nMGMM)

4,用3中计算好的所有GMMs(3nM个)将这一段音频解码(维特比解码)为多个状态,多个HMM

5,重复上述2-4步直至收敛

   

hmm_chinese.pdf p59

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

   

识别过程

不考虑句法时,识别过程很类似连接词识别中的一次通过算法

将词汇表中所有词对应的所有音素的所有状态排成一排,读入一个待识别句子的语音数据,由维特比算法可得到一个最佳状态序列。得到状态序列后,可通过类似编译原理中的文法来得到对应的HMM序列。

   

声学模型(HMMs)表示的是各词内状态之间的转移

语言模型(n-gram)表示的是词之间的转移概率关系

   

解码时需要用到状态Viterbi算法和词汇Viterbi算法

   

一句话的识别过程需要在状态层与词汇层之前不断切换,状态层:为当前状态选择概率最大的几个下一状态,直至词的最后状态处;词汇层:为当前词选择概率最大的几个下一词。这样直至这句话的结尾,就得到了多条路径,每条路径包含两个信息:累积概率和回溯路径,选择多条路径中累积概率最大的那条路径,使用其回溯路径进行回溯,就得到了该句子的识别结果。

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