ASR解码器详解

解码本质上是使用声学模型 p(O,S|W) 和语言模型 P(W) 在搜索空间里寻找最可能的词序列 W^

假设句子 WMW 个词组成,W=w1...wMW。那么

W^=argmaxWWall{SSWp(O,S|W)P(W)}=argmaxWWall{SSWm=1MWp(otm1+1tm,stm1+1tm|wm)P(wm|w1m1)}=argmaxWWall{TTWm=1MWp^(otm1+1tm|wm)P(wm|w1m1)}

Wall 为所有的合法词序列

SW 表示词序列 W 可以对应的所有合法状态序列。

p(oab,sab|w) 表示词 w 沿着状态序列 sa,...,sb 生成语音片段 oa,...,ob 的概率。

tm1+1 为词 wm 对应的观察的第一帧下标, tm 为词 wm 对应的观察的最后一帧下标,即 tm1+1,...,tmwm 对应 wm 观察序列。

TW 代表词序列 W 所有可能的结束帧的序列(间接表示了一种对齐方式),即 TTW 是一个时间序列 t1,...,tMW,表示了词序列 w1,...,wMW 每个词最后一帧的时间。

在这里我们将整个模型转换为可以用 Viterbi 算法求解的 HMM 最佳状态序列的问题。这个 HMM 大约有 |S||Q| 个状态。|S| 为每个词 HMM 平均状态数,|Q| 为 FSQ 状态数(有限状态文法,表示语言模型)。可以认为 FSG 里每个状态就是一个词,状态之间的边表示可以从一个词跳转到另外一个词,把每个状态展开成这个词对应的 HMM,就得到了大的 HMM。一个例子如下