- (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等价。
- “复合”操作:
- H(声学模型):
参考:语音识别之WFST的“操作”(炒鸡详细版本) - 知乎 (zhihu.com)