一个不小心,2018就过完了。上篇文章还是5个月前写的,实在是令人汗颜啊。不过让我意外的是,目前居然已经有107人关注这个专栏了。而且前一段时间有两位已经工作一两年的朋友打算转到语音识别这个行业,向我咨询如果著手准备。这更坚定了我要把这个专栏写下去的信念。前一段时间确实比较忙,而且近期工作上会有变动,所以今天,踩著2018年的尾巴,贴一篇之前给实验室师弟师妹和我上述两位朋友分享过的我入门阶段的学习资料。如果一切顺利,2019年我会有更多时间维护这个专栏,把我工作和学习中的收获持续输出并分享给大家。

  • Linux操作系统

跑脚本训模型,没别的选择,只能是Linux,千万别指望著在Windows上装个虚拟机或者Cygwin来凑合,把折腾这个的时间节省下来,去学更多性价比高的东西。

如果之前没用过Linux操作系统的话,个人推荐《鸟哥的Linux私房菜——基础学习篇》。需要著重看第一部分第三章「主机规划与磁碟分区」,第四章「安装Centos与多重引导小技巧」,学著怎么安装配置Linux操作系统;第二部分里面Linux的一些基本操作也要看;然后就是第三部分的shell编程。这些东西比较细节,不需要占用大面积时间,每天都看一些,重要的是要配合实践。做好反复重装机器10遍以上的准备。

这里先挖个坑,有机会我会写一下语音识别训练集群的搭建和配置,如果你不想用刀耕火种的方式去训练你的模型,调一个参数半个月后看结果,那我想集群你是肯定需要的。

  • 语音识别理论知识

Speech and Language Processing-An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition by Daniel Jurafsky, James H. Martin. 这本书我觉得很经典。可以作为语音识别导论来读,去了解语音识别需要解决哪些问题,前人提出的GMM-HMM框架是如何解决这些问题的。时间紧的话,可以直接看第九章,遇到什么概念不知道再回过头去其它章节里找。

  • Kaldi官方文档

Kaldi是工具,用工具当然要查手册,看使用说明了。一开始看肯定一头雾水,没关系,就为混个脸熟。念念不忘,必有回想。永远记住,在遇到问题想求助之前,先看看文档里面有没有相关的线索。

  • Kaldi脚本涉及到的Linux命令

kaldi的上层脚本,大部分是Shell脚本,还有一部分是Perl和Python。如果是刚开始用Kaldi,那大部分时间都是在写数据准备的Shell脚本,免不了会用到Linux下的各种工具。以下是出镜率最高的三个:

  1. awk
  2. grep
  3. sed

前面提到的《鸟哥的Linux私房菜——基础学习篇》对这三个工具的基本功能和使用参数都有介绍,但还不够。我这里推荐一本学习awk的书 The AWK Programming Language,这本书我只看了前两章,学到的知识已经够我使用awk解决我遇到的95%的问题了,剩下的5%,可能我就不得不去写一个Python脚本来解决了。Kaldi的好多常式里面,Shell脚本里有些awk语句,看这本书之前我不知道为什么那么写,看完这本书前两章之后,基本上全都理解了。总之,这是一本学习awk性价比超高的书,推荐你想办法找来看看。

  • 深度学习理论知识

Kaldi的神经网路训练工具,从最早的nnet一直更新到nnet3,现在大部分人都在用nnet3了。传统的GMM-HMM大部分场景都是用来提供一个对齐信息,也就是训练神经网路用的label,所以使用Kaldi的nnet3训练神经网路,是核心部分。想用Kaldi炼丹,没点儿老中医的方子傍身是不行的。不过好在现在网上深度学习公开课那么多,随便找一个口碑不错的跟著学下来就行,比如Andrew Ng有关Micheal Learning的一系列课程。我这里推荐一本我之前学过觉得不错的神经网路和深度学习入门书 Neural Networks and Deep Learning 。这是一本公开的电子书,作者用了很多例子和动画来试图解释神经网路背后的原理,很适合初学者入门,推荐大家找来看看。

  • 语音识别领域的深度学习理论知识

前面语音识别理论知识那部分提到的Speech and Language Processing-An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition这本书,由于成书时间太早,只能用来学习GMM-HMM框架。对于目前主流的DNN-HMM框架,需要俞栋和邓力两位老师的这本 Automatic Speech Recognition-A Deep Learning Approach 来作为补充。这样就能对传统的GMM-HMM和目前主流的DNN-HMM框架有个整体的了解,这时候再回过头去看Kaldi的官方文档,应该会有不一样的感受。

  • Kaldi邮件组

Last but not least. 一定要提一下kaldi的Google邮件组。Kaldi的一帮核心开发者,包括Daniel Povey自己,都在里面回答问题,几乎每个帖子都能得到回复。如果你无法打开链接,这里提到了解决办法。需要提醒一句:在提问之前,先搜下Kaldi官方文档有没有线索,然后搜索邮件组里是否已经有人问过相关的问题了;提问的时候把自己的问题描述清楚,自己已经做了哪些尝试,目前卡在什么地方了。

以上,就是我的入门学习资料汇总了。虽然是慌忙应付了一篇,但如果你是初学者,我相信应该能帮到你一些。再次感谢上篇文章留言区催更的朋友们。祝大家学得愉快,玩得开心,我们2019见。

推荐阅读:

相关文章