Kaldi(A2)语音识别术语、HMM拓扑与转移模型

上篇语音识别原理通俗地介绍了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中的初始的拓扑结构是如何描述的。

topo

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 承接前面的《浅谈机器学习基础》、《浅谈深度学习基础》和《浅谈自然语言处理基础》,主要参考了《解析深度学习:语音识别...
    我偏笑_NSNirvana阅读 23,825评论 6 66
  • 数据准备 local/timit_data_prep.sh 生成的内容放在data/local/data中。对于t...
    kaituoxu阅读 12,928评论 0 10
  • 隐马尔可夫模型(Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表...
    vlnk2012阅读 11,863评论 3 47
  • 偶然发现这么一个网站,简洁的页面,简洁的编辑文字。我不是一个专业作家,只是想写着文字,记录生活的点点滴滴。那么,简...
    安好天涯阅读 1,573评论 0 0