构建CTC语音识别解码网络

  本文介绍 kaldi-ctc 构建 CTC[1, 2, 3, 4] 语音识别加权有限状态机(WFST)解码网络的方式。

  示例相关资源 lifeiteng/codingmath/CTC-decoding-graph

  构建语言模型

  以 单句 “how are you are” 作为文本语料,训练 bi-gram(order=2)语言模型

  生成 G.fst [data/lang_2/G.pdf],如下图

  准备"发音" 词典

  不同单元 phone[1, 2] / character[3, 4],都可以抽象为“发音”词典的形式,以 phone 词典为例

  其中 !SIL SIL 为额外添加,作为 OOV 的替换符号使用,亦可使用其他记号 e.g. UNK NSN 。

  其中 --num-sil-states 1 --num-nonsil-states 1 用于构建单状态TransitionModel(HMM)。

  生成 L.fst [data/lang_2/L.pdf]

  Optinal 的 SIL( SIL : / 2_1 )使得发音词典与语言模型 Composition 之后的搜索空间允许单词间停顿而不影响语言模型概率计算。

  构建HCLG

  像 DNN-HMM hybrid 系统一样构建HCLG[5]:

  kaldi-ctc 可以方便构建CI[1] phone / CD[2] phone / character[3, 4] 的 CTC 系统,只需构建相应 CI-phone / CD-phone / character 的决策树和训练数据即可。

  HCLG [exp/mono_ctc_decoding_graph/HCLG.pdf] 网络:

  修改HCLG 构建CTC解码网络

  修改 HCLG 的 input label(即 TransitionId)并插入 blank loop 构建CTC解码网络。

  arc.ilabel++, 添加 blank loop

  最终 CTC 解码网络如下: [exp/mono_ctc_decoding_graph/CTC.pdf]

  解码时从解码网络获得TransitionId转为对应的PdfId做为 RNN 输出层索引获得

  log_likelihood = log(RNN output[pdf_id]) - log(prior[pdf_id])

  尖峰现象

  以 CTC 准则训练的 RNN 模型输出概率有明显的尖峰现象[1]: [images/pink.png]

  解码时跳过blank概率接近1的帧可以极大提升实时率。

时间: 2024-12-17 05:14:25

构建CTC语音识别解码网络的相关文章

利用OpenVSwitch构建多主机Docker网络

[编者的话]当你在一台主机上成功运行Docker容器后,信心满满地打算将其扩展到多台主机时,却发现前面的尝试只相当于写了个Hello World的入门程序,多主机的网络设置成了下一道门槛.在你尝试各种方案时不妨先看看本文,或许就会豁然开朗,发现原来也不复杂.嗯,是的,本文用到了OpenVSwitch. 运行Docker已经不是什么新鲜事,网上有很多入门教程来帮助你在一台主机上运行容器.这台主机可以是Linux服务器,也可以是Mac(借助类似boot2docker的项目). 在多台主机上运行却是另

IT设备的救命稻草-如何正确构建OOB带外网络

现实生活中,无论是传统的大型园区网络,运营商.或是现今流行的数据中心.虚拟化等技术,往往归根结底都是大量的网络设备以及服务器堆叠而成.自然而然,当网络或者服务器因为软件故障或者人为操作失误的原因导致系统宕机后,如何第一时间登陆到故障设备,并快速恢复业务已经成为考验运维人员的一大难题. 其实,试想如果网络中存在一个完善的OOB带外网络,在故障发生时,网络控制中心可通过此网络登录网络设备或者服务器的带外管理接口或者Console接口.从而第一时间获取故障信息并予以修正,或者收集log文件上报厂家.岂

java网络编程学习之——构建基于多线程的网络通信模型1

该例展示了多用户/服务器通信模型,包含三个文件:Server.java   ServerThread.java 和Client.java类.其中ServerThread类支持多线程,为客户提供的所有操作都封装到该类中,该类的构造方法ServerThread(Socket socket)接收一个套接字对象,用来与客户进行数据通信.Server类是一个应用程序,其main方法中通过一个无限的whlie循环,等待并监听多个用户连接请求(本例中只演示了一个客户请求),每个客户的连接都由服务器端的一个单独

构建调试Linux内核网络代码的环境MenuOS系统

构建MenuOS系统 1.将指定文件拷贝到本地: git clone https://github.com/mengning/linuxnet.git 此过程可能需要输入github账号和密码. 2.进入目录linuxnet,使用make命令编译根文件系统: cd linuxnet make rootfs 3.在Makefile文件中有一条指令用于开启menu系统(不需要自己输入): qmenu -kernel ../../linux-3.18.6/arch/x86/bzImage -initr

构建安全的园区网络

无状态包过滤防火墙技术 ?最基本的防火墙过滤方式 ?根据L3/L4信息进行过滤 ·源和目的IP ·协议 ·ICMP消息和类型 ·TCP/UDP源和目的端口 ?处理速度快 ?无法阻止应用层*** ?部署复杂,维护量大 ?部署方式 ·作为Internet边界的第一层防线 ·隐式拒绝,显示允许 ?示例 ·使用ACL过滤的路由器 有状态包过滤防火墙技术 ?与无状态包过滤防火墙执行相似的操作 ?保持对连接状态的跟踪,状态表 ·无需开放高端口访问权限 ·不属于现有会话的访问将被拒绝 ?检查更高级的信息 ·T

2019年,这8款自动语音识别方案你应该了解!

2019年,这8款自动语音识别方案你应该了解! 原创: AI前线小组 译 AI前线 1周前 作者 | Derrick Mwiti翻译 | 核子可乐编辑 | LindaAI 前线导读: 基于计算机的人类语音识别与处理能力,被统称为语音识别.目前,这项技术被广泛用于验证系统中的某些用户,以及面向谷歌智能助手.Siri 或者 Cortana 等智能设备下达指令. 从本质上讲,我们通过存储人声与训练自动语音识别系统以发现语音当中的词汇与表达模式.在本文中,我们将一同了解几篇旨在利用机器学习与深度学习技术

卷积神经网络(CNN)在语音识别中的应用

卷积神经网络(CNN)在语音识别中的应用 作者:侯艺馨 前言 总结目前语音识别的发展现状,dnn.rnn/lstm和cnn算是语音识别中几个比较主流的方向.2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(Feed Forward Deep Neural Network)引入到声学模型建模中,将FFDNN的输出层概率用于替换之前GMM-HMM中使用GMM计算的输出概率,引领了DNN-HMM混合系统的风潮.长短时记忆网络(LSTM,LongShort Term Memory)可以说是目前语音

语音识别技术简介

在人际交往中,言语是最自然并且最直接的方式之一.随着技术的进步,越来越多的人们也期望计算机能够具备与人进行言语沟通的能力,因此,语音识别这一技术也越来越受到关注.尤其,随着深度学习技术应用在语音识别技术中,使得语音识别的性能得到了显著提升,也使得语音识别技术的普及成为了现实. 以上是废话,下面开始正文. 自动语音识别技术,简单来说其实就是利用计算机将语音信号自动转换为文本的一项技术.这项技术同时也是机器理解人类言语的第一个也是很重要的一个过程. 为了进一步解释计算机如何实现语音到文字的转换这一过

Pytorch系列教程-使用Seq2Seq网络和注意力机制进行机器翻译

前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html 系列教程总目录传送门:我是一个传送门 本系列教程对应的 jupyter notebook 可以在我的Github仓库下载: 下载地址:https://github.com/Holy-Shine/Pytorch-notebook 本教程我们将会搭建一个网络来将法语翻译成英语. [KE