WFST--学习笔记

news2024/11/25 6:31:58

  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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手画图解 | 关于死锁,面试的一切都在这里了

什么是死锁(Deadlock) 死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,它们都将无法推进下去。 产生死锁的四个必要条件得烂熟于心: 互斥条件:进程要求对…

艾美捷QuickTiter 逆转录病毒定量试剂盒测定原理

逆转录病毒基因转移是一种有效地将稳定的、可遗传的遗传物质导入大肠杆菌的技术任何分裂细胞类型的基因组。不能复制的逆转录病毒通常通过将逆转录病毒载体转染到包装细胞系中。逆转录病毒根据用于进入宿主细胞的受体。亲嗜性病毒可以识别仅在小鼠身上发现的受体和大鼠细胞。兼…

【信息融合】基于matlab BP神经网络和DS证据理论不确定性信息融合问题【含Matlab源码 2204期】

⛄一、 D-S证据理论及解释 证据理论由Dempster在1967年最初提出,并由他的学生Shafer改进推广使之成为符合有限离散领域中推理的形式,因此称为D-S理论。证据理论讨论一个“辨识框架”(Frame of Discernment)Θ,它是关于命题的相互独立的可能答案或假设的一个有限集合。按传统方…

Qml中的那些坑(三)---MouseArea上的ListView滚轮事件穿透

【写在前面】 最近在 Qml 中使用 MouseArea 时发现了一个奇怪的现象: 位于 MouseArea 上的 ListView 在处理了滚轮事件的情况下进行滚轮,下面的 MouseArea 却在某些情况下接收到了这个事件。 按照直觉,ListView 明明有内部的滚轮事件处理&…

Cesium中的DataSource和Entity关系

本章主要探讨一下Cesium中的DataSource和Entity。 介绍 首先简单说一下Entity与Primitive。 Cesium为开发者提供了丰富的图形绘制和空间数据管理的API,可以分为两类,一类是面向图形开发人员的低层次API,通常被称为Primitive API&#xff0…

Java基础知识点整理

一、Java概述 1、何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机&#xff…

助力工业物联网,工业大数据项目介绍及环境构建【一】

文章目录工业大数据项目介绍及环境构建01:专栏目标02:项目背景03:项目需求04:业务流程05:技术选型06:Docker的介绍07:Docker的网络08:Docker的使用09:Oracle的介绍10&…

关于SQL的返回行数top

第一节.知识点三:关键字wlth tles 我要讲的是关于SQL的3个限制返回行数top: 1.使用具有恒定值的top; 2.关键字percent(%)返回行的百分比; 3.理解关键字wlth tles 上一次已经讲了前两个了,现在我要讲的是第三个 3.理解关键字wlth t…

【计算机毕业设计】69.助残志愿者系统源码

一、系统截图(需要演示视频可以私聊) 摘 要 本课题要求实现一套助残助残志愿者系统设计与开发,系统主要包括系统用户信息、志愿者信息、服务项目、志愿项目,志愿者培训、志愿项目、公益活动等功能模块。 基于上述分析&#xff0…

助力教育信创快速发展,统信软件与山东四所高校建立信创应用重点实验室

国家在“十三五”、“十四五”规划中重点强调了信息安全在国家战略中的重要地位,而大力发展教育信创有助于我国信息安全的快速落地。同时,教育部等六部门印发《关于推进教育新型基础设施建设构建高质量教育支撑体系的指导意见》也提到:推广可…

E+H浊度仪维修CUE22-A1A浊度分析仪维修概述

CUE21/22浊度仪参数如下: 测量参数:浊度 测量原理:散射光原理 应用场合:饮用水;生产用水 处理后的过程水 测量范围:0…100NTU;0…1000NTU 信号输出:4 ... 20 mA 通讯协议&…

多线程同步,信号,生产者消费者模型

目录1.线程互斥它是对的吗?合理吗?(任何场景)2.怎么解决饥饿问题?3.条件编译1.生产者和消费者模型2.编写代码实现一个基于堵塞队列的生产者消费者模型4.POSIX信号量5.环形队列1.线程互斥它是对的吗?合理吗?(任何场景) …

【JavaSE】多态

目录 1、多态 1.1、多态的概念 1.2、多态的实现条件 1.3、向上转型和向下转型 1.3.1、向上转型 1.3.2、向下转型 1.3.3、instanceof关键字 2、重写 2.1、重写的使用 2.2、动态绑定和静态绑定 2.2.1、动态绑定 2.2.2、静态绑定 2.3、再谈重写 3、多态的优缺点 4、…

LabVIEW浮点型和双精度数据类型之间的精度差异是什么 为什么 在LabVIEW 中, 浮点 数 会 失去 精度?

LabVIEW浮点型和双精度数据类型之间的精度差异是什么 为什么 在LabVIEW 中, 浮点 数 会 失去 精度? 程序中使用浮点数据类型或双精度数据类型。这些数据类型之间有什么区别? 浮点型的变量只有 7 位精度,而双精度类型的变量有 15…

算法竞赛入门【码蹄集进阶塔335题】(MT2296-2300)

算法竞赛入门【码蹄集进阶塔335题】(MT2296-2300) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2296-2300)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2296 找朋友2. MT2297 盒子与球3. MT2298 点餐4. MT…

第二章Java概述

第二章Java概述 2.1 Java技术体系平台 Java SE:标准版 Java EE:企业版 Java ME:小型版 2.2Java重要特点(四个) 1)java语言是面向对象的(oop) 2)java语言是健壮的。java的强类型机制、异常处理、垃圾的自动…

Kamiya丨Kamiya艾美捷人CP ELISA说明书

Kamiya艾美捷人CP ELISA预期用途: 人CP ELISA是一种高灵敏度的双位点酶联免疫分析(ELISA)人体生物样品中CP的测定。仅供研究使用。不用于诊断程序。 引言 铜蓝蛋白是参与铜转运的多功能蛋白,也是重要的血清抗氧化剂。在此期间炎…

【Canvas】js用Canvas绘制漩涡螺旋图动画效果

学习JavaScript编程,会用Canvas画图吗,学会它,能画很多有趣的事物,可自由发挥想象,会发现图形学的美,收获很多,这里有一个例子,如何用canvas画漩涡螺旋图动图效果,接下来…

c语言tips-结构体

1. 结构体定义和使用 #include <stdio.h>struct stu {int age;int height;int weight; };int main(int argc, char *argv[]) {struct stu stu1;stu1.age 18;stu1.height 172;stu1.weight 62;printf("年龄为&#xff1a;%d, 身高为&#xff1a;%d, 体重为&#x…

Self-attention自注意力机制——李宏毅机器学习笔记

self-attention想要解决的问题 复杂的输入 每次输入的length不同时&#xff0c;即Vector Set大小不同&#xff0c;该如何处理&#xff1f; one-hot encoding&#xff0c;缺点&#xff1a;所有的词汇之间没有语义资讯。 word embedding&#xff0c;会给每一个词汇一个向量&…