目前开源世界里存在多种不同的语音识别工具包,它们为开发者构建应用提供了很大帮助。这些工具各有哪些优劣?数据科学公司 Silicon Valley Data Science 为我们带来了 5 种流行工具包的深度横向对比。此前,他们曾为我们带来过流行深度学习框架的对比:《从 TensorFlow 到 Theano:横向对比七大深度学习框架》。
作为深度学习研发团队的一员,我们对于循环神经网络(RNN)和其他语音识别需要用到的方法都有所涉及。在几年之前,业内最佳的语音识别系统还是基于语音分析的方法,包含发音、声学和语言模型。通常,这些方法包含 n-gram 语言模型,以及隐马尔科夫模型(HMM)。在此,我们以这种模型作为基准,试图对比目前流行的一些语音识别方法。迄今为止,我们很难看到有人对开源语音识别模型进行过真正对比,希望本文可以抛砖引玉,为大家带来一些帮助。
本文回顾了使用传统 HMM&n-gram 语言模型的开源语音识别工具包。对于用户而言,大多数人都会知道 Siri 或 Cortana 这样的消费产品。而对于研发工程师来说,更灵活、更具专注性的解决方案则更符合需求,很多公司都会研发自己的语音识别通路。以下是目前开源世界上出现的流行工具包,以及我们对它们的各项评价。
开源免费语音识别工具包横向对比
本次分析基于 svds 开发者的主观经验和开源社区的已有消息。上表列出了目前大部分流行的语音识别软件(但略微超出开源的范畴)。2014 年 Gaida 等人的一篇论文评估了 CMU Sphinx、Kaldi 和 HTK。其中 HTK 严格意义上来说并不是开源的,因为其代码并不能重用或作为商业用途使用。
编程语言
因为用户使用语言的情况各不相同,你可能会对特定的工具包有自己的偏好。以上工具除了 ISIP 以外都有 Python 的封装,虽然在一些情况下,Python 封装并不包括核心代码的全部功能。CMU Sphinx 也包含了其他几种编程语言,如 Java 和 C。
开发工作
在学术研究中,所有列出的项目都包含它们的来源。CMU Sphinix,显而易见,从它的名字就能看出来是卡内基梅隆大学的产物。它已经以某些形式存在了 20 年了,现在它在 Github(C (https://github.com/cmusphinx/pocketsphinx) 版本和 Java (https://github.com/cmusphinx/sphinx4) 版本)和 SourceForge (https://sourceforge.net/projects/cmusphinx/) 上都开源了,而且两个平台上都有最新活动。Github 上的 Java 版本和 C 版本都只有一个贡献者,但是这并不影响此项目的历史真实性(在 SourceForge repo 上有 9 个管理人员还有很多开发者)。
Kaldi 从 2009 年的研讨会起就有它的学术根基了,现在已经在 GitHub (https://github.com/kaldi-asr/kaldi) 上开源,有 121 名贡献者。HTK 始于 1989 年的剑桥大学,已经商用一段时间了,但是现在它的版权又回到了剑桥大学并且已经不是开源软件了。它的最新版本更新于 2015 年 12 月,先前发布于 2009 年。Julius (http://julius.osdn.jp/en_index.php) 起源于 1997 年,最后一个主要版本发布于 2016 年 9 月,有些活跃的 Github repo 包含三个贡献者,现在已经不大可能反应真实情况了。ISIP 是第一个最新型的开源语音识别系统,源于密西西比州立大学。它主要发展于 1996 到 1999 年间,最后版本发布于 2011 年,但是这个项目在 Github 出现前就已经不复存在了。
社区
这里我们关注一下邮件、讨论群还有开发者团体的情况。CMU Sphinx 在它的 repos 上有着在线交流论坛和积极的关注。然而,我们想知道复制 SourceForge 和 GitHub 的 repo 是否阻碍了更多的投稿。相比之下,Kaldi 不仅有着论坛和讨论群,还有一个活跃的 GitHub repo。HTK 也有讨论群但是没有开放资源库。Julius 网站上的用户论坛坏掉了,但是在日本站里可能有更多的信息。ISIP 主要用于教育目的,而且邮件清单档案现在已经不再实用。
教程和例子
CMU Sphinx 的教程非常具有可读性,易于学习,Kaldi 的文档也很全面,但似乎更难理解。不过 Kaldi 的内容覆盖了语音识别中的语音和深度学习方法。如果你缺乏语音识别的知识,HTK 的教程文档(注册用户可看)对这一领域有详尽的描述。Julius 项目聚焦于日语,最新的资料就是 Japanese2 (https://www.svds.com/open-source-toolkits-speech-recognition/#fn2),但是他们也主动地译成英文,并且也提供相关资料;这里列有一些运行语音识别的实例(https://github.com/julius-speech/dictation-kit)。ISIP 也有一些资料,但是有些难以浏览。
训练模型
即使你使用这些开源工具的最大理由是训练特定的识别模型,其他语音功能也会是它们吸引人的地方。CMU Sphinx 包含英语和很多其他即开即用的模型,在该项目 GitHub 的 redme 上,我们可以很容易地找到它们。而 Kaldi 对现有模型进行解码的指令深深地隐藏在文档中,我们最终在 egs/voxforge 子目录的 repo 下发现了一个英语 VoxForge 数据集训练后的模型,而识别功能在 online-data 子目录下。其他三个软件包没有容易找到的功能,但它们至少都有适配 VoxForge 格式的简单模型,后者是一个语音识别数据和训练模型的著名众包网站。
目前,这项研究还没有加入神经网络语音识别的内容,以上的对比还处于初步阶段,欢迎大家的讨论。
原文链接:http://www.kdnuggets.com/2017/03/open-source-toolkits-speech-recognition.html