2 Kaldi概要介绍
2.1 发展历史
本节将介绍Kaldi语音识别工具包的发展历史。了解一个工具包的发展历史,能够更好地帮助我们理解一个工具包将来的发展。
2.1.1 名字的由来
关于Kaldi名字的由来,Kaldi的官方文档是这么解释的:根据传说,Kaldi是埃塞俄比亚的牧羊人,他发现了咖啡树这种植物。
其实,Kaldi名字的由来有着更有趣的故事。在2009年约翰霍普金斯大学的夏季研讨会期间,Kaldi还只是一个轻量级的语音识别解码器,由布尔诺理工大学的Ondřej Glembek写成。当时参加夏季研讨会的研究人员里面,有很多是来自布尔诺理工大学的研究人员,他们大多数都是咖啡的重度爱好者,喜欢时不时地组织咖啡品尝活动。于是Ondřej Glembek就用发现咖啡树的牧羊人的名字Kaldi命名了这个解码器。这个解码器也就是后来Kaldi语音识别工具包的前身。有趣的是,Kaldi后期的主要维护者Daniel Povey是茶的重度爱好者,几乎不怎么喝咖啡。
2.1.2 约翰霍普金斯大学夏季研讨会
Kaldi起源于2009年的约翰霍普金斯大学的夏季研讨会(The Johns Hopkins University Summer Workshop),因此有必要给读者介绍一下在语音领域赫赫有名的约翰霍普金斯大学夏季研讨会。
约翰霍普金斯大学夏季研讨会由约翰霍普金斯大学语言和语音处理中心(The Johns Hopkins University Center for Language and Speech Processing,CLSP)发起和组织。吴军在《数学之美》第7章中介绍基于概率模型的语音识别领域开山鼻祖Frederick Jelinek的时候,曾经提到过Jelinek在离开IBM以后,去了约翰霍普金斯大学,建立了专注于语言和语音处理的实验室,这个实验室便是CLSP。从1992年建立实验室开始,Jelinek逐渐将CLSP发展成世界上最有名的语言和语音处理中心之一。
Jelinek自从建立了CLSP之后,每年夏天都会邀请20~30名世界顶级的科学家和学生到CLSP一起工作,解决一些特定的问题,这个邀请活动后来就演变成了赫赫有名的约翰霍普金斯大学夏季研讨会。从1995年开始,约翰霍普金斯大学夏季研讨会每年夏天举办一次,从未间断。夏季研讨会一般会由3~4个研究小组组成,其中一个专注于语音识别方向,一个专注于自然语言处理方向,剩余的研究小组专注于计算机视觉等其他方向。早期的夏季研讨会都在约翰霍普金斯大学Homewood小区举办,从2014年开始,为了缅怀2010年去世的Jelinek,约翰霍普金斯大学夏季研讨会更名为贾里尼克纪念研讨会(Jelinek Memorial Workshop on Speech and Language Technology,JSALT),从此开始交替在约翰霍普金斯大学和其他世界知名的语音和语言处理中心举办。后期的夏季研讨会主要由CLSP的Sanjeev Khudanpur博士组织举办。
约翰霍普金斯大学夏季研讨会可谓是开源工具的摇篮,除完成在语音和语言处理领域举足轻重的研究工作外,在研讨会期间还开发了一批对语音和语言处理领域影响非凡的开源工具。比如,在语言模型建模领域具有统治地位的开源工具包SRILM,在机器翻译领域举足轻重的开源工具包Moses,当然也包括本书的主角,在语音识别领域最受欢迎的开源工具包Kaldi。
2.1.3 Kaldi发展简史
Kaldi起源于2009年约翰霍普金斯大学夏季研讨会。2009年的约翰霍普金斯夏季研讨会的其中一个主题是Low Development Cost,High Quality Speech Recognition for New Languages and Domains,而研究的重心则是Subspace Gaussian Mixture Model(SGMM)。为了方便实验验证效果,研究人员开发了一个简陋的基于有限状态转录机的语音识别解码器,以及一些基于语音识别工具包HTK的训练脚本,这些就是Kaldi的前身。
2010年,一部分参加了2009年约翰霍普金斯大学夏季研讨会的研究人员重新聚集在一起,在布尔诺理工大学举办了一场后续的研讨会,来完善Kaldi作为一个语音识别工具包的功能,同时开发一系列基于Kaldi自有工具的训练脚本。但是在这一年,依旧没有形成一个完整的系统。
Kaldi初版代码库的正式发布是在2011年5月14日。随后在5月27日,Kaldi的开发者们在布拉格举办的ICASSP期间为Kaldi正式举行了一场发布会。发布会当天会议厅座无虚席,很多参会者甚至都坐在了地上。
Kaldi初版代码发布之后,代码库的开发和维护主要由知名的语音识别领域研究人员Daniel Povey来主导。Povey从2013年开始成为约翰霍普金斯大学语言和语音处理中心的研究人员,自此,Kaldi的研发中心又回到了约翰霍普金斯大学。
在Kaldi的发展过程中,夏季研讨会起到了不可磨灭的作用,因此笔者也根据研讨会的时间节点整理了Kaldi的发展历程。
· 2009年的约翰霍普金斯大学夏季研讨会,语音识别工具包Kaldi正式开始开发,完成了早期的系统,包括轻量级的解码器和基于HTK的训练脚本。
· 2010年的布尔诺理工大学Kaldi研讨会,Kaldi作为语音识别工具包的功能被完善,同时研究人员开发了独立于HTK的训练脚本。大量的代码在2010年被开发。
· 2011年5月14日,Kaldi初版代码库正式发布。
· 2011年的布尔诺理工大学Kaldi研讨会,基于GMM和SGMM的区分性训练被开发。
· 2012年的布尔诺理工大学Kaldi研讨会,基于nnet1的区分性训练和Stacked-bottleneck网络被开发。
· 2013年的布尔诺理工大学Kaldi研讨会,补充并完善Kaldi。
· 2014年的布拉格首届JSALT研讨会,研究了神经网络的内部结构和语音识别置信度分析等。
· 2015年的华盛顿大学第二届JSALT研讨会,Daniel Povey开始了Kaldi中nnet3的开发。