HTK Book 第二篇 HTK深度探索.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HTK Book 第二篇 HTK深度探索.doc

第一章 HTK基础 1.5 识别和Viterbi解码 前面介绍了HMM参数估计所使用的BW算法。在前向算法中, 表示的是对于特定模型M,观察到向量o1到ot,并且在时刻t处于状态j的概率。这是一个确定的值,通过累加所有的前一个状态到状态j的转移,可以得到前向概率的计算方式 这里介绍Viterbi算法。 识别,基于最大似然的状态序列,这种方法可以很好地用于连续语音,如果使用总概率就很难做到。这个概率的计算,本质上和前向概率的计算一样,只不过,前向概率在每一步都是求和操作,这里每一步都是一次最大化操作。 对于给定的模型M,假定表示给定模型M,观察到向量o1到ot,并且在时刻t处于状态j的概率最大,就是这个最大概率。这个概率可以使用下面的迭代公式计算。 也许要问了,难道这个值不是固定的吗?怎么还存在一个最大概率?难道还有其它值吗? 答:在前向概率计算中,每个观察向量都对每个状态作出某种程度的贡献,这个程度,也就是该观察向量,处于状态i的概率。假设有N个状态,那么每个时间点t的观察向量,都对N个状态有所贡献,因此对每一个状态,需要将每个时间点的贡献累积起来,计算均值和协方差。 但是,每个时间点t的观察向量,对每个状态的贡献程度是不同的,肯定有一个最大的概率,也就是说,最可能对应的是哪个状态?这样,就认为这个观察向量只属于此状态,只用于此状态的参数计算。这就是Viterbi算法的思想。 上面公式的含义,是对于所有的状态i∈N,求时间t处观察向量概率最大的状态j。在时间t处,观察到o1到ot,并且处于某状态的概率是所有状态中的最大值。 这么理解也不完全正确。对于任何状态j∈N,在每个时间t处,都可以计算的值,也就是说,每个状态都有这个值。 最大化操作,实际上是针对前一个时间点t-1的,要找一个t-1时刻使得最大的状态i,使用这个状态i的和aij的乘积,作为比较依据,取一个最大值得i。这里的最大化操作,是针对状态i的,也就是说,从一个唯一的t-1时刻的状态i,来得到状态j的值。 以上理解错误,最大化操作还是针对时间t的,也就是当前步骤的。 其中 那么,对于模型M,观察的数据O的最大似然概率则是 这种形式的迭代就是Viterbi算法的基础。如下图所示,这个算法可以看做是寻找最佳路径的过程。矩阵中的Y轴表示模型的各状态,X轴表示语音帧(即时间)。图中的每个原点表示在时间t处观察到该语音帧的概率,点之间的弧表示一个转移概率。 那么,任何路径的概率都可以通过简单地将路径上的各点和弧的概率相乘(log运算则为相加)得到。路径从左向右,逐列发展。在时间点t,每个路径的对所有的状态i都是已知的,那么就可以使用上面的公式来向右扩展一个时间帧,路径增长一步。 “路径”的概念非常重要,下面会将它通用化,用于连续语音识别。 没有HTK工具直接实现了上面的Viterbi算法。但有一个HVite工具,以及它的支撑库HRec和HNet,用于连续语音识别。 问题:即使对于待识别数据O,对于给定的模型M,可以计算出,也没有办法确定O对应的到底是否M,无法进行识别? 答:对于每个模型Mi,都可以计算出在该模型下,观察到数据O的最大可能性P(O|Mi),也就是每个模型,都能找到一条最大可能对应O的状态序列路径,进而得到观察到O的最大可能性。那么对所有模型进行取最大值,就能得到O所对应的模型了。即 M = argmax{ P(O|Mi) } 问题:对于连续语音识别,假设有50个模型,那么对于观察到的数据O,求其对应的模型序列。如果按照上面的算法,就要首先把50个模型所组成的模型序列都排列出来,共有50的50次方个,比宇宙中所有物质的原子数目还要多!!根本无法为每个模型序列计算上面的最大似然概率,进而无法在这50的50次方个模型序列中寻找具有最大似然概率的那个序列。那么怎样将上述的Viterbi算法引用到多个模型连续识别中呢? 答:看下面。 如果知道观察数据O的每个音素的边界,即可以将O分成一段段的,每一段对应50个模型中的一个,那么上述问题很好解决,对每一段进行单独识别即可,每一段是孤立词识别,为该段数据计算50个模型的最大似然概率,取最大者即可。 1.6 连续词语音识别 现在回到图1.1所示意的语音识别模型,可以清楚地知道,连续语音识别仅仅需要将多个HMM连接起来,而这个连接而成的HMM模型序列中的每个模型,都对应了其隐藏的符号,这个符号可能是一个单词,那么这称为“连接词语音识别”,这个符号也可能是一个音素,那么这称为“连续语音识别”。另外,在每个模型中包括首尾两个不可观察的状态的原因,现在应该也清楚了,这是多个HMM模型连接在一起的粘合剂。 然而,依然有一些难点。由孤立词过渡到连续词,对于模型训练算法Baum-Welch算法来说,所作的修改很小,只需要把所有模型连接成一个大

文档评论(0)

xx88606 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档