WFST--学习笔记

  1. (Weighted Finite-State Transducer):加权有限状态转换机,由有限状态接收机(FSA)拓展而来,在ASR领域常被称为“解码器”。
  2. 是一个包含了声学模型(H)、上下文相关处理的FST(context-dependency transducer, C)、发音词典(L)、语言模型(G),这四个网络,通过一定“操作”结合,形成了解码网络。
  3. 只要复合的WFST构建完毕,解码器的工作就是对于给定的语音输入搜索最优的路径。如果模型没有发生变化,则WFST不需要更新(静态解码网络)。
  4. 确定有限自动机(DFA):
    1. 自动机(Automaton):就是一个代码块,只做一件事——接收输入值,和状态值,输出同为状态值的结果。
    2. 有限(Finite):是指自动机接收、输入的状态种类是有限的。
    3. 确定(Deterministic ):是指自动机的输出状态是单一的一个状态。
  5. 一个普通的FA可以通过加输入输出、加权,转化为WFST,而在语音识别领域,往往是由HCLG这四个小网络通过一定的“操作”组合在一起,成为了一个大的WFST网络的,也就是说WFST是网络的结构,而HCLG代表了网络的四部分“内容”:
    1. H(声学模型): 
      1. 把声学观察序列变成上下文相关因子序列的WFST。这个WFST代表声学模型,它的输入是观察序列,输出是上下文相关因子序列及其概率。(HMM)
      2. 在基于WFST的方法里,一个声学模型可以被看成一个转换机(transducer),其将输入的语音信号转化为一个上下文相关的phone序列(HMM)。
      3. 使用HMM的原因:
        1. 理论上:声学模型的建立是在给定因素序列下输出特定音频特征序列的似然P(X│S)。X:音频特征向量,S为音素,所以P(X│S)就是整个声学模型的表示。

        2. 实际上:我们仅知道音频特征序列,并不知道其对应的音素序列,因此要通过HMM构建音频特征与与背后每个音素的对应关系。

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

    3. L(发音词典):
      1. 输入(上下文无关的)因子序列,输出是词序列。
      2. 可以使用每一个词的转换机通过并与Kleene闭包运算来构造。对于每一个词,根据发音词典输入是一个(或者多个)子词单元的phone的序列,而输出是这个词。
      3. kleene闭包:此闭包是指集合上定义的运算使得运算结果对集合封闭,不是计算机语言里指的引用了自由变量的函数,甚至可以不适用克林闭包来构造,可以使用正则表达式来描述一个词的多个发音,毕竟正则表达式可以转化成为一个有穷自动机
      4. 在两个词之间插入一个短暂停的方法:再构造一个sp节点
    4. G(语言模型):
      1. 可以判断这个词序列是否符合语法以及它的概率。对于固定的文法来说,它只能识别符合文法的句子;而对于N-Gram来说,所有的句子都是可能的,只不过概率有高有低。
      2. 是一个WFSA,输入是一个词序列
      3. n-gram模型等价于(n-1)阶的马尔可夫模型,该模型有|V|^(n-1)个状态以及|V|^n个跳转,|V|表示词典大小,可能会出现内存爆炸的,通常使用back-off的方法进行平滑缓解。
      4. 操作:(wsy:感觉就是编译原理里的状态转移)
        1. “复合”操作:
          1. 复合就是用来把两个不同层级的WFST“整合”成一个WFST。用一个串联的WFST模型序列生成单一的WFST,使得新WFST的输入输出关系与原WFST序列相同。
          2. 前提:前一个WFST的输出属于后一个WFST的输入
          3. 具体:先遍历组合所有节点,然后算每个组合后的出弧T_A的output=T_B的input,是可以进行复合操作的前提条件 
        2. 转移消除(ε-removal):
          1. 作用,主要是去空弧,在WFST网络之中,ε是一个特殊的(输入和输出)符号,它代表空,没有输入/输出。输入符号为ε的跳转叫做ε-跳转,这个状态的跳转不需要任何输入符号就可以进行。
          2. WFST构建过程中,ε的状态转移对整体输入输出序列没有贡献,存在一个算法(ε-消除算法)把一个ε-NFA转换成与之等价的没有ε-跳转的NFA。
          3. 前期优化过程中留下、生成或引入空弧标记,最后进行去空弧操作减少整体复杂度。
        3. 确定化操作(Determinization):
          1. 如果从一个状态遇到一个字母会有两条及其以上的边,那么它就是非确定的
          2. 确定化的算法就是把一个非确定的WFST转换成等价的确定的WFST的算法,确定化后,网络将变为唯一输入和唯一输出。(与FSA相同)
          3. 在每个final state之中,输出必定被替换为ε。优点:提高计算效率
        4. weight-pushing操作:
          1. 前提:语音识别问题可以转化为搜索最小惩罚路径(minimal cost path);
          2. 优点:在一开始消除掉“绝路”(unPomising path)能够缩短搜索时间;
          3. 原因:最小化操作的必要条件,变换前后路径上的权重相等;
          4. 做法:重新分配WFST上的权重,使得权重尽可能提前。
          5. Weight Pushing运算的作用是把一个WFST所有路径的weight分布往初始状态push,但是不改变任何成功路径的weight。
        5. 最小化操作:对于两个状态P和Q,从这两个状态出发到达终止状态的所有路径,若这些路径上的所有字元和权重全部相同,则称P和Q等价。

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值