Categories
程式開發

Kaldi之父Daniel Povey:我为什么选择在小米开发下一代Kaldi?


在2019年小米开发者大会上,Kaldi之父Daniel Povey以小米首席语音科学家的身份第一次和国内开发者见面,并表示将继续在小米进行Kaldi的版本开发,业界开发者对Daniel Povey加入小米后的动向高度关注,但却鲜有消息传出。在AICon 2020全球人工智能与机器学习技术大会(上海站)召开前期,InfoQ有幸采访到了Daniel Povey,听他分享对语音识别领域技术发展的想法。

在语音识别技术领域,Daniel Povey (以下简称:Daniel)的名字家喻户晓。他是语音识别开源工具 Kaldi 的主要开发者和维护者,被称为 Kaldi 之父。

过往,Daniel在技术领域的发展轨迹始终没有离开“语音识别”。年少时,Daniel 在剑桥大学获得语音识别博士学位。工作初期,Daniel 在IBM研究院负责计算机语音识别的工作,并成为Research Staff Member 的一员。随后,他又进入微软研究院继续深耕语音识别技术,2012年,Daniel 加入约翰霍普金斯大学,担任语言和语音处理中心系主任。2019年12月初,Daniel正式加入小米成为小米首席语音科学家,主要负责下一代Kaldi的开发。

Kaldi的意外诞生

当今不少广为流传的科学或技术研究成果都诞生于偶然,例如Guido van Rossum在开发Python时只是因为他在圣诞节期间觉得很无聊,所以决定开发一种新的脚本解释语言。Kaldi的诞生与之类似。

在采访中,Dainel表示,最初开发Kaldi主要是为了一个特殊的项目——子空间高斯混合模型(SGMM)发布代码。虽然现在这项技术已经不重要了,但Kaldi这个工具为其他很多技术提供了支持,也变得越来越受欢迎。

Kaldi工具包自 2011 年发布以来,下载量超过了两万多次,合著的论文目前也已经被引用三千多次,Kaldi 集成了多种语音识别模型,包括隐马尔可夫和最新的深度学习神经网络,被认为是业界语音识别框架的基石。

与许多早期的机器学习框架类似,Kaldi本身也是用C/C++语言编写的,虽然当下Python是更为机器学习开发者所追捧的,但早期的大部分框架都选择了稳定的C/C++语言。对此,Daniel认为,高性能的代码通常在内部用C或者C++实现,后上层来进行调用,或者是由上层来调用其他C或者C++的第三方库。但由于设计时间较早,Kaldi并没有Python接口(或编译成其他语言的接口),要编写唤起C++程序的shell脚本来使用Kaldi。

下一代Kaldi版本规划

在加入小米之前,国内外许多互联网头部公司都向Daniel抛出了橄榄枝,包括Facebook、美团、滴滴、快手等,但在提及为什么会选择加入小米时,Daniel表示:

我想加入一家规模比较大的公司,能有足够优秀的开发者来进行下一代Kaldi的研发。中国(尤其是北京)大公司云集,人才济济,所以这里自然而然成为了我的选择。我也面试了北京的一些其他公司,给我的感觉都很好,我之所以加入小米,是因为我认为小米是孵化开源软件的沃土,我觉得这里也愿意支持一项长期的开源项目,而且,小米的产品在市场上也有着良好的口碑。在我看来,小米是一家充满活力的企业,同事们都很友好且乐于助人。

Kaldi的目标用户是那些了解语音识别技术的开发者,Kaldi对于该领域的入门者来说并不容易。因此Daniel也表示接下来会研究如何简化Kaldi。但为了避免项目的体量过大,Daniel团队现阶段并未对Kaldi进行大幅度地简化,但已经在基于PyTorch来开发下一代Kaldi,该项目还没有完成,也没有对外公开发布。过去几个月,Daniel对Kaldi所做的最大调整就是和快速解码相关的一些变动(解码是部署语音识别系统时的图搜索程序)。

下一代Kaldi完成后,Daniel希望能将其融入到小米的产品和服务中。

“和中国公司一起打造健康的社区,走向世界。”这是小米集团副总裁、集团技术委员会主席崔宝秋一直向 Daniel 重点表达的开源愿景,这也正是Daniel所欣赏的开源社区环境。

Kaldi商业化落地

2017年之前,小米没有自己的语音技术团队,但是却已经有了自己的云、大数据和AI平台。从过去的互联互通到未来的整体互联服务中,语音交互扮演着越来越重要的角色,小米也意识到,要想在激烈的市场竞争中占得一席之地,首先就要“自强”。

2018年3月,雷军在两会的媒体沟通会上表示,“2017年年初,小米设立了探索实验室,不久将有重磅级的人工智能产品发布。”而到了2018年7月,传闻已久的小米AI产品——小米 AI 音箱终于现身。在发布会上,小米联合创始人王川特意提到了小米的 NLP 团队,也就是说小米已经用上了自家的 NLP 技术。

两年间,小米不仅组建了自己的语音技术团队,还在智能产品中应用了自家的NLP技术,更重要的是,2019年年初,小米创始人雷军确定了小米“手机+AIoT”双引擎战略发展模式,为小米在语音技术领域的发展指明了方向,Daniel带着Kaldi的加入则会为小米的“AIoT”战略添砖加瓦。

作为一个开源项目,Kaldi要用于商业落地还要在很多地方进行调整,例如场景优化、跨平台兼容、对内对外赋能等。加入小米之后,Daniel负责的主要工作就是将Kaldi应用于现有应用,在实践中检验技术的可用性。

目前,业界已有不少企业基于Kaldi进行产品研发,针对这一现状,Daniel在接受InfoQ记者采访时给出的建议是:

如果用于基于服务器的、没有内存限制的识别,Kaldi已经足够优化了,不需要做其他改进。如果用于基于设备的、有内存限制的识别,有时候使用(如RNN-T)这类端到端的模型,以及Tensorflow工具包可能会比仅使用Kaldi更有成效。

语音识别技术发展

语音识别是计算机处理和识别人类语音的能力,其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或字符序列。语音识别涉及信号处理、概率论和信息论、模式识别、声学、语言学和认知科学、人工智能等许多学科领域。

过往,工业界取得的许多技术突破是依赖学术界的研究结果,例如,语音识别技术在上世纪50年代就已经诞生,而到了2012年才在深度神经网络的助力下达到实用化,在没有应用DNN之前的六十年里,语音识别技术的发展极为缓慢。2015年以前,业界更多使用的是传统的 DNN-HMM 混合模型,需要借助对齐信息和上下文相关音素才能达到比较好的识别准确率。2015 年以后,CTC 算法简化了训练过程,于是语音界纷纷投入大量资源训练更深、更复杂的神经网络,利用端到端技术进一步大幅提升语音识别的性能。2017 年 12 月,谷歌提出“使用序列到序列模型的当前最佳语音识别系统”(State-of-the-art Speech Recognition With Sequence-to-Sequence Models),将词错率降低至 5.6%,业界又开始基于此进行探索…

可以说,工业界的每一次突破背后都是学术界的研究成果在支撑,这种模式在人工智能领域最为明显。对此,Daniel认为:

有时产品开发有助于推进研究,因为它强制我们去解决一些主流研究无法解决的问题,当研究遇到天花板时,就迫使人们要做出改变来解决问题。

语音识别技术发展至今,已经在工业、医疗、教育、金融等各行业进行了落地,而语音识别产品供应商们也表示其产品的识别准确率达到了95%甚至97%,针对当下语音识别技术的发展现状,Daniel认为:

现在业内许多人士认为,语音识别系统的准确度已经很高了,但实际上这种高精准度仅仅针对的是某些特定的语音类型。现阶段,让机器来识别人们日常交流还是比较困难的,尤其是当周围环境掺杂着噪声、音乐且多人同时发声时。也就是说,我们还需要对现有的语音识别技术进行认真打磨。

结语

过去几年,我们看到了各类算法不断出现并应用在实际的业务系统中,进而提升语音识别的效果。同时,语音识别技术的应用领域越来越广,基于语音识别技术的人机交互系统开始大规模应用,并且在限定场景下已经有比较好的表现,比如机器人电话客服系统、智能手机助手、智能音箱等。从火爆渐趋冷静,从学术突破到工业落地,接下来,语音识别领域的技术突破值得期待。

嘉宾介绍:

Daniel Povey是著名的语音识别开源工具 Kaldi 的主要开发者和维护者,被称为 Kaldi 之父。Kaldi 集成了多种语音识别模型,包括隐马尔可夫和最新的深度学习神经网络,公认是业界语音识别框架的基石。1993 年至 2003年,Daniel 在剑桥大学度过了自己的高等教育经历,获得语音识别的博士学位。2003 年至 2008年,Daniel 在IBM研究院负责计算机语音识别的工作,成为 Research Staff Member 的一员。2008 年至 2012年, Daniel 在微软研究院参与计算机语音识别方面的工作。2012年,Daniel 加入约翰霍普金斯大学,担任语言和语音处理中心系主任。2019年12月,Daniel 正式加入小米公司,担任小米首席语音科学家,开发下一代 Kaldi。