语音识别Viterbi解码

语音识别解码过程使用的是Viterbi算法,本质上是一种动态规划算法,能够得到全局最优解。为了进一步减少计算复杂度,引用了Beam Search 算法,可以在损失微小性能的条件下提高解码速度,Beam Search无法保证全局最优解。

Viterbi解码算法

Viterbi解码

如果从起点到终点有一条最终路径,那么这条路径子路径也是从起点到相应时刻点的最优路径。如上图,红线是一条从起点到终点的最优路径,那么从起点到时刻4的红线部分也是该时间段的最优路径。换句话说,任一时刻,只需记录到该时刻所有状态的最优路径即可,以时刻4为例,在时刻4,只需记录时刻4上经过三个状态S1,S2,S3的最优路径即可,也就是只需要记录三条路径,接着到时刻5,时刻5的S3状态有两条路径经过,取其中最优路径,时刻5的S2、S1状态类似,也就是说到了时刻5,仍然只需要记录三条路径即可
所以每一时刻需要做两次循环,外层循环现在时刻所有状态,内层循环现在时刻某一状态到下一时刻所有状态。时间复杂度N^2,所有时间段时间复杂度TN^2。上图中,N=3,实际大规模语音识别中任一时刻的状态可能很大,比如5000个,这样即使使用了维特比,时间复杂度还是太大,实际中为了解决这个问题,引入了Beam Search算法

Beam Search 算法

Viterbi解码中涉及到现在时刻state数目以及下一时刻state数目,如果我们想要提高解码速度,需要对这两个数值都做缩减。
实际做法是设置阈值,减少语音识别中现在时刻以及下一时刻状态数目,具体做法是:

  1. 对所有状态排序,最优状态放最前面,最优状态得分=best_weight
  2. 设置一个beam,设置阈值1=cur_cutoff,cur_cutoff=best_weight+beam,所有得分在cur_cutoff以内的,保留,反之丢弃,现在时刻的state数目减少。
  3. 计算到下一时刻的最优路径得分new_weight。
  4. 设置一个adaptive_beam, 设置阈值2=next_cutoff,next_cutoff=new_weight+adaptive_beam,所有得分在next_cutoff以内的,保留,反之丢弃,下一时刻的state数目减少。

kaldi实际解码过程中,cur_cutoff、next_cutoff这两个阈值是计算出来,涉及到的传入参数包括:config_.beam,config_.beam_delta,config_.max_active,config_.min_active。之所以引入max_active,min_active是为了保证任意时刻的state数目在[min_active,max_active]之间,单纯的只用beam,有可能会导致某一时刻state数目过大或者过小。

具体Kaldi代码解析见Kaldi 解码代码解析

Reference

http://kaldi-asr.org/doc/index.html

注1: 安德鲁·维特比(Andrew J. Viterbi),CDMA之父,IEEE Fellow ,高通公司创始人之一,高通首席科学家。他开发了卷积码编码的最大似然算法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

  • 隐马尔可夫模型(Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表...
    vlnk2012阅读 6,623评论 3 47
  • Beam Search 简介 一、概要 传统的广度优先策略能够找到最优的路径,但是在搜索空间非常大的情况下,内存...
    MiracleJQ阅读 9,715评论 0 6
  • 真理藏在反常出
    金蟾云世界阅读 99评论 0 0
  • 一、 细节是什么? 细节是在群里弱弱地问了个问题,然后居然接到虞潇君的好友请求,是在他的微信名中“yxjcxf-5...
    小晓真儿阅读 980评论 2 2
  • 有一天一个女生冲进校长办公室 对校长说: 【有个男子一直在骚扰我给我写信】 并把所有信件倒在了桌子上 校长阅读后 ...
    Toptatoo阅读 173评论 0 0