我目前使用kaldi分成两块: hmm-gmm和神经网络。

学习kaldi的话,先从hmm-gmm入手比较好,像steps/train_delta.sh, steps/train_fmllr.sh, steps/decode.sh这些脚本都是基于hmm-gmm模型。kaldi官网上没有多少关于hmm-gmm的资料,没有hmm-gmm基础知识的初学者可能对于decision tree,alignment, lattice这些概念一头雾水。若要搞清楚这些概念,可以看语音识别另一开原工具htk的文档htk book,htk book是学习hmm-gmm很好的一部著作,将hmm-gmm从训练到解码的过程讲解的很透彻。只要知道决策树,训练/识别网络扩展,viterbi解码,EM算法,区分训练这几个概念的原理hmm-gmm也就理解透彻了。htk book对于这些都有讲解,部分内容如EM算法,区分训练需要看一些文献。htk book第二,八,十,十二,十三章需要重点看;在学习htkbook的过程中,可以结合着kaldi的脚本对照理解;比如steps/train_delta.sh中build-tree命令那部分的代码对应htk book第十章tree-based clustering, gmm-est命令那部分的代码对应htk book第八章的Parameter Re-Estimation Formulae;

搞清楚hmm-gmm之后对语音识别就有了一个清晰的理解,接下来就可以上手神经网络。kaldi支持很多神经网路,如MLP, RNN, CNN, LSTM,如果对神经网路了解不多还是从MLP入手较好,MLP是神经网路中最基础的模型。

神经网路kaldi有3个工具nnet1, nnet2, nnet3,初学者可以从nnet1开始。nnet1使用的是hmm-dnn架构,相关的知识可以查阅微软俞栋2009-2013期间发表的论文。

nnet2的架构和nnet1同样是hmm-dnn架构,但是使用的是dan povey团队设计的NSGD算法,支持多线程并行训练,学习nnet2可以追dan povey从2012年之后的论文

至于nnet3,chain model,以及其他的神经网路结构(rn,cnn,lstm)的学习,当完成我上面的说的学习内容后自然对语音识别有一个大体的认识,后面要做的就是看相关的文献。微软,dan povey,google, 多伦多大学来自这些地方的论文不断的追就行了。

最后总结,语音识别是对理论要求很高的方向,学习过程中一定要注重理论知识的学习,很多公式还是有必要自己去推导下才能有深刻的理解。

文献:

HMM-GMM部分

此文献详细讲解了hmm-gmm训练算法的推导过程

此文献详细讲解了EM算法的基本原理

此文献详细讲解了区分训练的基本原理

神经网络部分:

kaldi作者Dan Povey的个人主页,学习nnet2, nnet3, chain model看Povey的论文会很有帮助;

dnn部分:

微软俞栋和多伦多大学合作,逐层训练rbm,将训练得到的rbm连接起来作为dnn训练的初始模型. 并将dnn与hmm结合用于语音识别,kaldi的nnet1工具使用的就是上述2篇论文的架构;

lstm部分:

kaldi例程中使用的lstm架构便出自于google的这两篇论文

kaldi中lstm的训练算法便出自微软的这篇论文

cnn部分:

kaldi中cnn的例程较少,而且其最新的cnn实现单元TimeHeightConvolutionComponent 与机器视觉那边的cnn实现有着很大的区别, 如果按照机器视觉中的cnn实现去做语音识别,那么训练的计算复杂度太高;kaldi最初的cnn实现单元ConvolutionComponent的设计思路和机器视觉cnn实现的思路是一致的,但是由于计算复杂度太高,现在已经打算废弃;上述两篇文章出自IBM,我在学习kaldi cnn的过程中发现kaldi TimeHeightConvolutionComponent设计的思路应该是出自这两篇论文,这种cnn架构学界称为dilated cnn,非常适合语音识别的模型训练,能够大幅度降低训练时间;

《语音识别实践》:微软研究院俞栋对HMM-DNN架构在语音识别中的相关理论讲解;内容主要是2009~2014期间学术界关于HMM-DNN架构的论文;

《模式识别》: 这本书第四章的非线性分类器作为神经网络的入门还是很合适的,理论讲解很详细;

语音识别kaldi该如何学习?相关推荐

  1. 我们基于kaldi开发的嵌入式语音识别系统升级成深度学习啦

    先前的文章<三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的 >说我们花了不到三个月的时间搭了一个基于kaldi的嵌入式语音识别系统,不过它是基于传统的GMM-HMM ...

  2. 语音识别的前世今生 | 深度学习彻底改变对话式人工智能

    在过去几年中,人们在人工智能和深度学习领域的突破,让语音识别的探索跨了一大步.市面上玲琅满目的产品也反映了这种飞跃式发展,例如亚马逊Echo.苹果Siri 等等.本文将回顾语音识别技术领域的最新进展, ...

  3. 声学模型(语音识别中的)--学习笔记

    前置知识: 语音识别: 系统主要有四部分组成:信号处理和特征提取.声学模型.语言模型(Language Model, LM)和解码器(Decoder). 信号处理和特征提取部分以音频信号为输入,通过消 ...

  4. 语音识别原理与应用学习笔记

    第12章 端到端(E2E)语音识别 CTC的前向后向算法可以引导输出序列与输入序列按时间顺序对齐,而Attention模型的对齐关系没有 先后顺序的限制,完全靠数据驱动得到,难以训练.因此CTC和At ...

  5. 语音识别——kaldi - Online Audio Server(服务器客户端建立方法-旧版在线解码)

    文章目录 一.服务器客户端识别系统建立方法 1. Command line to start the **server**(服务器端启动方式): 1.1 Arguments are as follow ...

  6. 语音识别的技术路线学习笔记

    0 语音识别技术路线大致框图 如上图所示,语音识别的大致过程可以分为以下几步: 1.语音输入--这个过程可以通过电脑上的声卡来获取麦克风中输入的音频信号,或者直接读取电脑中已经存在的音频文件: 2.音 ...

  7. bp语音识别matlab,【Matlab学习手记】基于带动量项的BP神经网络语音识别

    正确率 0.7699    1.0000    0.9275    0.9760 代码 clear; clc; % 加载四类语音信号 load data1 c1 load data2 c2 load ...

  8. 语音识别Kaldi开源

    https://blog.csdn.net/broadview2006/article/details/105441066?depth_1-utm_source=distribute.pc_relev ...

  9. [语音识别] kaldi -- aidatatang_200zh脚本解析:词典准备

    输入:text(所有录音的分词文本信息- 如果是自己的数据没有人工分词可能要提前jieba等工具分词一下) 输出:data/local/dict文件夹(含extra_questions.txt.lex ...

最新文章

  1. Python 中最黑魔法、最难懂的概念
  2. tableview的reloadData 产生的问题
  3. Java笔记-使用BindingResult把表单错误传出来
  4. 【Unity Shader】(六) ------ 复杂的光照(上)
  5. 如何从数据框的单元格获取值?
  6. Springer期刊LaTeX模板的一些问题
  7. java http远程调用接口下载文件
  8. 第5章 Stata非参数检验
  9. 在网络上面下载ts文件并且转换为mp4
  10. 浪潮服务器管理口IPMI安装系统(浪潮服务器NF5280m5 配置,raid和系统 安装纪录)
  11. 超详细linux手动配置单网卡和双网卡(bond0和team)以及DNS,linux网络配置详细说明,ps:使用命令配置
  12. Vue系列——通过moke进行数据模拟
  13. sql执行顺序及性能优化
  14. JVM内存结构和垃圾回收算法
  15. Key Points on Innovation from Peter Drucker
  16. 暗黑破坏神3 --野蛮人 防御装备选择篇
  17. Windows命令行关闭IE代理
  18. 分布式文件系统及其部署
  19. 那些年,我们一起写的设计模式(一)——单例模式(Singleton Pattern)
  20. 转 ROS:解决Error:cannot launch node of type [map_server/map_server]: can't locate node [map_server]

热门文章

  1. computed 计算选项
  2. 从volume表的host字段开始学习RPC
  3. Bailian2945 导弹拦截【最长上升子序列+DP】
  4. NUC1090 Goldbach's Conjecture【哥德巴赫猜想 】
  5. CCF NOI100002 取数游戏
  6. UVA1585 UVALive3354 Score【水题】
  7. Python 标准库 csv —— csv 文件的读写
  8. markdownpad 2 的使用
  9. 一题多解(六)—— 一个数二进制形式 1 的个数
  10. 【笔试/面试】—— 网络