语音识别WFST核心算法讲解(1. WFST的基本概念)
本系列主要介绍语音识别WFST中的常用算法, Composition, Determinization, Minimization, Epsilon Removal, Weight Pushing 等。了解这些算法的前提是熟悉WFST基本概念,了解Semiring(半环代数理论), 对图中各类算法(深度优先搜索DFS,最大强连通域SCC)等。因此我们首先介绍WFST的基本概念。
伪代码和部分图片参考自书本《Speech Recognition Algorithms Using Weighted Finite-State Transducers》作者是TakaakiHori AtsushiNakamura.
半圆环的官方解释如下:
A semiring is similar to a ring, which is also an algebraic structure, but the existence of additive inverse is not required. A semiring is defined as (K, ⊕, ⊗, 0 ̄ , 1 ̄ ), where K is a set of elements, ⊕ and ⊗ are two formally defined binary operations, i.e., “addition” and “multiplication,” over K, 0 ̄ is an additive identity element, and 1 ̄ is a multiplicative identity element
语音识别WFST中的半圆环通常是Tropical Semiring。
A WFST over a set of weight elements K is formally defined by an 8-tuple (∑, ∆, Q, I, F, E, λ, ρ) where:
1. ∑ 是输入集合
2. ∆ 是输出集合
3. Q 是所有的状态集合
4. I ⊆ Q 是初始状态集合,Openfst中一般只有1个
5. F ⊆Q 是终止状态集合, 通常有1个或多个
6. E⊆Q×(∑∪{ε})×(∆∪{ε})×K×Q 代表所有状态之间的转移集合
7. λ : I → K 是初始状态的权重
8. ρ : F →K 是终止状态的权重
在此举个例子详细解释,如下图为某个WFST:
如上图,0是起始状态,λ(0) = 0.2, 3是终止状态,ρ(3) = 0.5,Q = {0, 1, 2, 3}, ∑={a, b, c, d}, ∆ = {A, B, C, D}.
对一些之后会用到的符号的意义解释如下,给定WFST =(∑,∆,Q,I,F,E,λ,ρ), 对任意状态q ∈Q, E[q]为从q出发的所有转移集合, 对于每个转移 e ∈ E, 输出label是 i[e], 输出label是o[e], 出发状态 p[e], 到达状态 n[e], 转移上的权重 w[e]. 一系列转移组成路径 π = e1, … , ek , 明显可以知道 n[ej−1] = p[ej ] 对于 j = 2,…,k. 用 n[·] 和p[·] 表示路径 n[π] = n[ek] and p[π] = p[e1].
如果路径中n[e1]∈I 并且n[ek ] ∈ F, 则这条路径叫做 successful path。
如果一个状态能通过一系列转移从起点到达并且能通过转移到达某个终点,这个状态是coaccessible的, 所有coaccessible的状态都在至少一条successful path上。 其他状态叫做dead states。去除所有dead states这一操作叫做trimming或者 connect,Openfst的中wfst的Connect的算法(仅一次遍历整个图)是使用Tarjan’s Algorithm寻找最大强连通域SCC,在此不做详细解释。
WFST基本的概念和一些表示符号介绍如上,其他一些概念会在介绍相应算法时引入。
语音识别WFST核心算法讲解(1. WFST的基本概念)相关推荐
- 【OCR】EAST算法讲解及实现
[OCR]EAST算法讲解及实现 一.概念介绍 OCR(Optical Character Recognition):光学字符识别: 基本流程: 输入图片 -- 预处理 -- 文字定位(采用EAST算 ...
- 阿里资深AI工程师教你逐个击破机器学习核心算法
01 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个 IT 界. 所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无 ...
- Learning to Rank 中Listwise关于ListNet算法讲解及实现
[学习排序] Learning to Rank 中Listwise关于ListNet算法讲解及实现 版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习, ...
- 【视频课】零基础免费38课时深度学习+超60小时CV核心算法+15大Pytorch CV实践案例助你攻略CV...
计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...
- TF-IDF算法讲解
什么是 TF-IDF 算法? TF(全称TermFrequency),中文含义词频,简单理解就是关键词出现在网页当中的频次. IDF(全称InverseDocumentFrequency),中文含义逆 ...
- BF、KMP、BM、Sunday算法讲解
原文地址: https://www.cnblogs.com/Syhawk/p/4077295.html BF.KMP.BM.Sunday算法讲解 字串的定位操作通常称作串的模式匹配,是各种串处理系统中 ...
- 机器学习核心算法各个击破
0. 前言 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个IT界.所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无 ...
- Visual C++实现推箱子游戏的核心算法设计与实现(附源码和和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 在前面的博客中已经讲解了推箱子游戏的菜单和各种对话框的实现,下面对推箱子游戏的核心算法设计和实现进行讲解 一.地图文件读取模块的设计与实现 地图文件 ...
- Python深度学习十大核心算法!
深度学习已经成为了一种热门的技术,它的应用领域正在不断扩大.在深度学习中,有一些核心的算法是非常重要的,这些算法为深度学习的应用提供了强大的基础.在本文中,我们将介绍基于Python深度学习的十大核心 ...
最新文章
- 简单两步,spring aop上手即用即会
- 吃西瓜 最大子矩阵 三维的。 rqnoj93
- 全球数十亿条用户记录被泄露,姓名住址全曝光,Oracle或已引发今年最大的数据安全事件...
- 视频会议专线部署不会?别急,我教你
- Linux环境下Protobuf完整安装和使用教程
- 硬盘序列号是唯一的吗_NANDrive 解决方案 微型固态硬盘设计方案
- iOS上传应用到AppStore出现Authenticating with the iTunes store
- 用Python2编译Python3.X的代码: __future__ 模块
- 国人不能再过度迷信开源软件
- 服务器上Jupyter notebook环境搭建
- 教你如何使用ip地址进行高精度定位
- XSS自动化工具——Beef
- Word中输入10以上带圈数字
- 最热BMS可直接下载!!
- 左程云中级提升班-9在有限时间内获得最大奖励以及需要的最少时长问题
- 【PS】怎么让一张模糊图片更清晰?
- win7网络不显示共享计算机,win7查找不到网络计算机怎么办_win7看不到网络计算机怎么解决-win7之家...
- 密码学技术背后的计算困难性理论
- linux源码编译安装apache( httpd-2.4.53)处理服务器支持 TLS Client-initiated 重协商攻击(CVE-2011-1473)
- c语言程序设计精髓 第13周练兵题