(Weighted Finite-State Transducer):加权有限状态转换机,由有限状态接收机(FSA)拓展而来,在ASR领域常被称为“解码器”。是一个包含了声学模型(H)、上下文相关处理的FST(context-dependency transducer, C)、发音词典(L)、语言模型(G),这四个网络,通过一定“操作”结合,形成了解码网络。只要复合的WFST构建完毕,解码器的工作就是对于给定的语音输入搜索最优的路径。如果模型没有发生变化,则WFST不需要更新(静态解码网络)。确定有限自动机(DFA):

自动机(Automaton):就是一个代码块,只做一件事——接收输入值,和状态值,输出同为状态值的结果。有限(Finite):是指自动机接收、输入的状态种类是有限的。确定(Deterministic ):是指自动机的输出状态是单一的一个状态。一个普通的FA可以通过加输入输出、加权,转化为WFST,而在语音识别领域,往往是由HCLG这四个小网络通过一定的“操作”组合在一起,成为了一个大的WFST网络的,也就是说WFST是网络的结构,而HCLG代表了网络的四部分“内容”:

H(声学模型): 

把声学观察序列变成上下文相关因子序列的WFST。这个WFST代表声学模型,它的输入是观察序列,输出是上下文相关因子序列及其概率。(HMM)在基于WFST的方法里,一个声学模型可以被看成一个转换机(transducer),其将输入的语音信号转化为一个上下文相关的phone序列(HMM)。使用HMM的原因:

理论上:声学模型的建立是在给定因素序列下输出特定音频特征序列的似然P(X│S)。X:音频特征向量,S为音素,所以P(X│S)就是整个声学模型的表示。 实际上:我们仅知道音频特征序列,并不知道其对应的音素序列,因此要通过HMM构建音频特征与与背后每个音素的对应关系。 C(跨词三音子模型) :

把上下文相关的因子序列转换成上下文无关的因子序列的WFST。 声学模型的输出是上下文相关的因子序列。但是,L要求的输入是上下文无关的因子序列。所以需要C来把上下文相关的因子序列转换成上下文无关的。 L(发音词典):

输入(上下文无关的)因子序列,输出是词序列。可以使用每一个词的转换机通过并与Kleene闭包运算来构造。对于每一个词,根据发音词典输入是一个(或者多个)子词单元的phone的序列,而输出是这个词。kleene闭包:此闭包是指集合上定义的运算使得运算结果对集合封闭,不是计算机语言里指的引用了自由变量的函数,甚至可以不适用克林闭包来构造,可以使用正则表达式来描述一个词的多个发音,毕竟正则表达式可以转化成为一个有穷自动机在两个词之间插入一个短暂停的方法:再构造一个sp节点G(语言模型):

可以判断这个词序列是否符合语法以及它的概率。对于固定的文法来说,它只能识别符合文法的句子;而对于N-Gram来说,所有的句子都是可能的,只不过概率有高有低。是一个WFSA,输入是一个词序列n-gram模型等价于(n-1)阶的马尔可夫模型,该模型有|V|^(n-1)个状态以及|V|^n个跳转,|V|表示词典大小,可能会出现内存爆炸的,通常使用back-off的方法进行平滑缓解。操作:(wsy:感觉就是编译原理里的状态转移)

“复合”操作:

复合就是用来把两个不同层级的WFST“整合”成一个WFST。用一个串联的WFST模型序列生成单一的WFST,使得新WFST的输入输出关系与原WFST序列相同。前提:前一个WFST的输出属于后一个WFST的输入具体:先遍历组合所有节点,然后算每个组合后的出弧T_A的output=T_B的input,是可以进行复合操作的前提条件 转移消除(ε-removal):

作用,主要是去空弧,在WFST网络之中,ε是一个特殊的(输入和输出)符号,它代表空,没有输入/输出。输入符号为ε的跳转叫做ε-跳转,这个状态的跳转不需要任何输入符号就可以进行。WFST构建过程中,ε的状态转移对整体输入输出序列没有贡献,存在一个算法(ε-消除算法)把一个ε-NFA转换成与之等价的没有ε-跳转的NFA。前期优化过程中留下、生成或引入空弧标记,最后进行去空弧操作减少整体复杂度。确定化操作(Determinization):

如果从一个状态遇到一个字母会有两条及其以上的边,那么它就是非确定的确定化的算法就是把一个非确定的WFST转换成等价的确定的WFST的算法,确定化后,网络将变为唯一输入和唯一输出。(与FSA相同)在每个final state之中,输出必定被替换为ε。优点:提高计算效率weight-pushing操作:

前提:语音识别问题可以转化为搜索最小惩罚路径(minimal cost path);优点:在一开始消除掉“绝路”(unPomising path)能够缩短搜索时间;原因:最小化操作的必要条件,变换前后路径上的权重相等;做法:重新分配WFST上的权重,使得权重尽可能提前。Weight Pushing运算的作用是把一个WFST所有路径的weight分布往初始状态push,但是不改变任何成功路径的weight。最小化操作:对于两个状态P和Q,从这两个状态出发到达终止状态的所有路径,若这些路径上的所有字元和权重全部相同,则称P和Q等价。

参考:语音识别之WFST的“操作”(炒鸡详细版本) - 知乎 (zhihu.com)

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。