有效提高语音识别速度的策略.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
有效提高语音识别速度的策略

有效提高连续语音识别速度的策略 李军,刘晓明,刘贤梅 (大庆石油学院 计算机与信息技术学院,黑龙江 大庆,163318) 摘: 关 键 词:SCHMM;语音识别;码本;剪枝 中图分类号:TN912.34 文献标识码:文章编号: HMM)[1]的统一框架,采用时间同步的Viterbi算法[2]进行解码。在实际应用中,Viterbi解码算法的计算代价相当可观,为此,有效提高其搜索速度显得非常重要。文中从改进算法的角度讨论了几种提高声学层搜索速度的方法,这些方法是基于半连续HMM框架的,类似的思想也可以应用到其它类型的HMM。 1 Viterbi搜索算法分析 对于一个语音识别系统,首先要采用B-W算法训练语音样本数据,得到语音模型参数,然后进行语音解码,解码的过程主要是利用已知语音模型参数计算一段特定语音的最大似然概率,以求得该语音样本属于哪些语音识别单位。Viterbi算法就是语音识别中常用的解码方法,其主要思想描述为 假设识别系统的词汇表容量为V,其中每个词条表示为。设每一词条中包含个状态,记为。采用由左向右无跨越型SCHMM,转移概率记为,,词条内的状态产生输出矢量的概率密度记为:。现在假设一段连续语音所对应的特征矢量序列是,其所经历的状态序列是。要根据给定的参数,和以及Y,求最佳的X,由X即可求得相应之词序列。求此X的步骤为 ⑴ 为每一帧的每个状态设置寄存器,和,用来保存当前帧所处状态的最大似然值,用来保存当前帧所处状态的转移路径,用来保存跳入当前帧所处状态的音节序号,在时序时,将按照下式计算所得的参数存入相应寄存器: (1) ⑵ 在时序时,对于所有状态,用下列递推计算式来计算: ⑶ 在递推过程中按如下方法计算和, ② 如果 并且,发生间跳转。 并且发生跳转。 。由其中最大者可以得到最优状态路径的终点状态,然后利用,由求,由求等,这样在时间序列上可求得一条最优路径,将这条状态路径代入即可求出相应的词序列,从而完成解码任务。 当把⑴~⑶步的Viterbi搜索算法用于SCHMM模型时,它的时间消耗是相当大的。这主要是:SCHMM模型使用了一组全局共享的码本,在计算某个状态在当前帧下产生的概率密度P时,要对相当多的高斯函数求值,这是导致Viterbi搜索算法速度较慢的主要原因。针对这个原因分析解决方法。 2 提高搜索速度的几个策略 2.1码本剪枝策略 在基于SCHMM的连续语音识别中,码本模型和所有状态共享,这样用来描述每个模型及状态的码本就相当多,实际上,对于一个状态而言,只要少量的码本就可以较精确地描述该状态的特性,去掉那些对状态贡献小的码本并不会造成大的精度损失,相反,由于减少了状态描述的码本,大大减少计算状态概率的复杂提高搜索速度。1中的10号码本的权重可以看出,不同码本的权重差距相当大,例如:号码本,它的权重码本码本。2中是对当前状态贡献最大的前0个码本按权重从大到小的排序,可以看出,这些码本的权重同表1某些码本相很大,在指数上相差几十到上百的数量级,因此忽略那些贡献小的码本不会对识别精度造成大的影响。Q个码本表示,对于有M个码本的状态,设权重为权重。kQ的那些码本,为了保证剩余的Q个码本权重Q个码本权重 (3) 经过这样的处理后,每个状态的码本组合数由原来的M减少到Q,大大减少了计算量。 码本剪枝策略的测试结果见表3。从表3中可以看出,采用不同的码本组合数,所花费的计算代价显著不同,当状态的码本数从1024降到64时,搜索速度提高了近10倍,而识别率却没有降低。这说明码本剪枝策略对提高搜索速度的贡献是相当大的。 2.2 Beam剪枝策略 在Viterbi搜索过程中,为找到基于最大似然得分的状态序列,在当前时刻,要计算状态空间中所有状态对当前帧产生的似然值。实际上,有些状态从前一时刻获得的累计似然得分足够小,对这些状态的当前似然值可以直接置极小值[4],从而减少状态计算的数量,提高了搜索速度。 为此可以计算出所有状态从前一状态继承来的似然得分并从中选择最大者作为基准,设为,另外定义一个阈值T,如果成立,则抛弃状态,不计算它在当前帧的概率。否则计算它在当前帧的概率并和n-1时刻继承来的得分相乘(对数域相加)作为本状态新的似然得分。 Beam剪枝的实验结果见表4,由表4可看出,Beam的宽度由300降到50,当Beam的宽度大于200时,花费的时间基本相当,说明没有剪枝或剪枝很少。当Beam的宽度小于200时,所花费的时间也随之降低,说明剪枝可提高系统的搜索速度。 Beam剪枝是有一定风险的,如果Beam的宽度设置不合适,一些最优或次优的路径有可能在搜索的早期即被截断,且无法补救。因此在采用Beam剪枝时,Beam宽度不宜选得过小,通常对数域的值为150左右较合适。

文档评论(0)

zhanghc + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档