上篇语音识别原理通俗地介绍了ASR,这一篇将会简单介绍一下前一篇提到的FST。
Ref
Kaldi HMM http://kaldi-asr.org/doc/hmm.html
Triphone三音素
Ref:语音的基本概念 http://blog.csdn.net/zouxy09/article/details/7941055
一个单词的发声(波形)实际上取决于很多因素,而不仅仅是音素,例如音素上下文、说话者、语音风格等;
协同发音(指的是一个音受前后相邻音的影响而发生变化,从发声机理上看就是人的发声器官在一个音转向另一个音时其特性只能渐变,从而使得后一个音的频谱与其他条件下的频谱产生差异。)的存在使得音素的感知与标准不一样,所以我们需要根据上下文来辨别音素。将一个音素划分为几个亚音素单元。如:数字“three”,音素的第一部分与在它之前的音素存在关联,中间部分是稳定的部分,而最后一部分则与下一个音素存在关联,这就是为什么在用HMM模型做语音识别时,选择音素的三状态HMM模型。
准确是够准确了,复杂的地方也来了,原来的Monophone单音素变成了Triphone三音素,原本只需一个HMM描述,现在由于上下文的关系需要用许多HMM-GMM参数来描述,由此导致了训练的数据不够用,该怎么办呢?
Ref:Tree-Based State Tying for High Acoustic Accuracy Modelling由于有些音素对其后音素的影响是相似的,因而可以通过音素解码状态的聚类进行模型参数的共享。如上图所示。聚类的结果称为senone。决策树用来实现高效的triphone对senone的对应,通过回答一系列前后音所属类别(元/辅音、清/浊音等等)的问题,最终确定其HMM状态应使用哪个senone。
Kaldi中的HMM
Ref :kaldi yesno example http://blog.csdn.net/shichaog/article/details/73264152?locationNum=9&fps=1
下面来看Kaldi中的初始的拓扑结构是如何描述的。
2 3
这两个音素来说,有4个状态,状态0~2
都是有转移概率的,状态3
用来表示这个音素的结束,所以没有转移概率(nonemitting)。1
表示SIL,有5个状态,其余和2 3
音素类似。对应的结构如下图(上图中的
0.75 0.25
等转移概率还有状态3,5
等在下图中没有画出来),它告诉我们音素包括SIL
Y
N
三个椭圆,每个音素下面的状态为1~4
5~7
8~10
等双圆圈。phone&pdfclass
从这张图中引出一个疑问:PdfClass是啥?
PdfClass
PDF(probability density function)
指的是概率密度函数,也就是最开始图里的一条条曲线啦。而从上图中,我们大概会想,pdfclass和每个音素下面的状态是一一对应的。不过如上一节所说,不同的triphone可能会有类似的pdf,所以在Kaldi中,不同状态可以分享同一个pdfclass
,而决策树也是根据pdfclass
来进行聚类的。
转移模型Transition Model
转移概率
关于一个转移的过程,有以下几个问题需要思考:
- 这个状态在哪个音素下面?
phone
- 这个状态是这个音素下面的第几个?(0,1,2?)
hmm-state
- 转移到下一个状态的pdf是什么? 自旋的pdf是什么?
pdf-id(forward-pdf-id及self-loop-pdf-id)
由以上四个参数"tuple"(phone,hmm-state,forward-pdf-id,self-loop-pdf,id)
可以确定唯一一个transtion-state
,这就是我们在图中看到的各个双圆圈了。 - 这个状态转移的下一个状态是什么?(或者说进行的是哪个转移过程)
transition-index
于是由"pair"(transition-state,transition-index)
便可以确定唯一一个在HMM中的转移过程——transition-id
为什么引入transition-id
Kaldi对各种路径的整合是通过FST实现的,这个FST大概理解成输入一串序列就能输出与之对应的另一串序列就好。然而刚才我们提到,pdfclass
和状态不是一一对应的,这就不便于把pdfclass
的序列串转换为状态再转为音素,所以Kaldi里面引入了这个transition-id
,可以映射为pdf-id
、音素phone
以及对应的transition
是哪个。
解码
由此,HMM结构的各个部分可以完全被描述出来了。输入特征序列,根据model文件里的声学模型找到对应的transition-id
,将transition-id串
输入到FST图中即可转换为对应的音素以及单词了。
总结
将特征输入声学模型后得到了一个该特征属于HMM中哪个位置的信息,这个位置可以在FST中找到对应于哪个单词,综合句子的一串特征就能识别出整个句子。下一篇文章将搭建一个可以直观的看到结果的识别项目——Online Decoder。
网友评论