kaldi
算法工程师000001
生命不息,奋斗不止。
展开
-
kaldi001 -- 树的内部结构
决策树内部结构该页面描述了语音决策树聚类代码的内部结构,代码实现为非常通用的结构和算法。有关解释整个实现算法以及工具包如何使用,请参阅“如何在Kaldi中使用决策树”一节。EventMap类构建决策树代码的主要概念是“事件映射”,由EventMap类型表示。不要被“事件”这个术语误导,而错误地认为是特定时间发生的事情。事件只是一组(键,值)对,没有重复键。概念上,它可以由类型std翻译 2017-06-03 13:02:28 · 1324 阅读 · 0 评论 -
语音识别系列3--KALDI解码器(SimpleDecoder)
Kaldi简单解码器(SimpleDecoder)总述本节我们讲述kaldi中一个最简单的解码器,实现这个解码器的类是SimpleDecoder,理解了这个解码器,也就打下了解码搜索的基础,其他的解码器方法也与其类似,目录在kaldi/src/decoder/simple-decoder.h。解码图数据结构依赖于openfst,基本上可以通过名称猜到表达的含义。分析上一节已经知道,解码...原创 2019-05-17 11:40:57 · 3224 阅读 · 3 评论 -
语音识别系列2--基于WFST解码器
一、总述解码器是ASR重要的组件之一,在传统的基于GMM-HMM/DNN-HMM混合系统中,解码器架起语言模型、声学模型、发音词典等知识源的桥梁,得到最终的识别结果,如图1所示。随着深度学习技术的盛行,一系列ASR端到端系统、ASR-NLP端到端系统甚至ASR-NLP-TTS端到端系统被相继提出,解码器的作用在被一步步弱化,但是笔者认为,抛弃解码器,实现完全的端到端系统还有相当长的...原创 2019-05-17 11:29:47 · 3312 阅读 · 2 评论 -
语音识别系列1--语音识别CTC之数据准备
语音识别CTC之数据准备一、简介CTC是一种端到端的神经网络训练方法,在语音识别领域应用非常广泛,和传统的语音识别HMM相比,CTC省略了数据对齐,特征选取的过程。传统的HMM在训练神经网络之前需要选择特定的语音特征,比如FBANK、MFCC。而CTC则直接将语音转到频域即可使用,传统的HMM在训练之前需要对数据进行帧对齐,对齐的过程首先要进行HMM-GMM的聚类,并且较小的建模粒度需要做...原创 2019-05-17 11:15:25 · 1983 阅读 · 2 评论 -
语音识别系列5-语音活动端点检测(VAD)
语音识别系列7-语音活动端点检测(VAD)一、介绍语音活动端点检测(VAD)已经是一个古老的话题,用于分离信号中语音信号和非语音信号,首先我们讲述VAD的三种做法:1,通过分帧,判断一帧的能量,过零率等简单的方法来判断是否是语音段;2,通过检测一帧是否有基音周期来判断是否是语音段;3,通过DNN的方法训练模型来分类是否是语音帧。相对来说,通过DNN的方法来做VAD准确率会更好一些,本节我们...原创 2019-05-21 09:13:59 · 6148 阅读 · 4 评论 -
kaldi007 -- hmm1
HMM拓扑和转移模型 介绍 在本页中,我们将介绍HMM拓扑在Kaldi中是如何表示的,以及我们如何建模和训练HMM转移。我们简要提到这与决策树如何互动; 决策树的充分介绍在How decision trees are used in Kaldi和Decision tree internals。有关此组中的类和函数的列表,请参阅Classes and functions翻译 2017-06-11 23:14:22 · 1467 阅读 · 0 评论 -
kaldi006 -- 构图
解码图构建方法(实验部分) 这里我们一步一步地解释图的构建方法,以及与之相关的某些数据准备阶段。这种方法的大部分细节不会硬编码到我们的工具中; 我们正在解释它目前是如何做的。如果这个部分很混乱,那么最好的补救办法可能就是阅读Mohri等人的“Speech Recognition with Weighted Finite-State Transducers”。 要注意:这张纸是相翻译 2017-06-11 14:03:49 · 2258 阅读 · 0 评论 -
kaldi005 -- 构图
Kaldi中的构图 首先,我们不能希望引入有限状态转换器以及它们如何用于语音识别。为此,参见Mohri,Pereira和Riley的"Speech Recognition with Weighted Finite-State Transducers"(Springer Handbook on SpeechProcessing and Speech Communication,200翻译 2017-06-10 20:26:22 · 1836 阅读 · 0 评论 -
kaldi004 -- 配置文件
配置文件的文件是simple-option.hsimple-option.ccsimple-options-test.ccoptions-itf.h其中optionsItf 是基类,simpleOptions是子类。通过接口Register注册程序可以接受哪些参数,并把相应的变量绑定到相应的参数上;通过SetOption 和GetOption 设置和过去原创 2017-06-09 20:04:11 · 353 阅读 · 0 评论 -
kaldi003 -- log机制
kaldi中log的输出代码在 kaldi/src/base 中的kaldi-error.h ,kaldi-error.cc, kaldi-error-test.cc其中,kaldi-error-test.cc 是测试demokaldi-error.h log头文件kaldi-errorcc log源码log默认输出到标准错误中,同时也支持向自定义和第三方库来打印l原创 2017-06-09 19:55:21 · 705 阅读 · 0 评论 -
kaldi008 -- pdf id and phone
最近需要解决一个问题:在Kaldi下做完DNN训练之后,要怎么得到一段录音feature的后验概率,以及在有了这个后验概率之后怎么知道每一帧对应的是哪个状态,同时又是对应哪个phone。首先,如何得到一段录音feature的后验概率。由于DNN训练已经做完,已经得到了训练后的网络,那么只要把feature放进这个网络里面进行一遍从头到尾的运算,就可以得到这个后验概率。在Ka转载 2017-06-20 19:09:31 · 1543 阅读 · 2 评论 -
kaldi002 -- kaldi是如何使用决策树的
Kaldi 是如何使用决策树的 介绍本页概述了Kaldi中如何构建和使用语音决策树,以及如何与训练和构建图相互作用。有关内部构造的代码描述,请参见决策树内部结构;有关我们构建解码图的方法的更多细节,请参阅解释Kaldi中的解码图的构建。基本算法是自上而下的贪婪拆分来实现,我们可以通过询问左音素,右音素,中间音素,我们所在的状态等方式来分解数据,等等。我们实现的算法类似于标准翻译 2017-06-03 20:07:26 · 1510 阅读 · 0 评论 -
语音识别系列7-chain model 之分子部分
一、简介现在有越来越多的公司和团体开始使用chain model了,得益于kaldi社区日益活跃和kaldi作者povey的大力推荐,chain model的优越性在于:1,使用了单状态的biphone,建模粒度更大,有些类似于CTC;2,采用的低帧率策略,DNN每三帧输出一次,解码速度更快;3,使用了区分性训练,准确率更高;4,改进了MMI,提出了Lattice free MMI,训练速度更...原创 2019-06-01 14:31:21 · 1358 阅读 · 0 评论