兼容PyTorch!语音识别大牛Daniel Povey发布新一代框架Kaldi大数据文摘关注共 4233字,需浏览 9分钟 ·2021-09-02 17:59 大数据文摘授权转载自AI科技评论作者:琰琰8月31日,Daniel Povey以小米集团首席语音科学家的身份,正式推出了新一代Kaldi。Daniel Povey是语音识别领域的执牛耳者,他主要开发和维护的开源工具Kaldi,是业界公认的语音识别框架的基石,他也被称为Kaldi之父。2019年Daniel 离任约翰霍普金斯大学语言和语音处理中心教职,在 Facebook、美团、滴滴、快手等一众互联网巨头抛来的橄榄枝中选择了小米,开始带领小米语音技术团队开发新一代Kaldi。 加入小米后,业界开发者对Daniel的研究动向一直高度关注。昨日Daniel亮相发布会现场,宣布新一代Kaldi完成了所有子项目的布局。他表示,“新一代Kaldi的目标不仅仅是赶上或者稍微领先现有语音识别库,而是要从根本上改变语音识别的实现方式。”据悉,经过近一年多的技术研发,Daniel团队完成了所有模块的研发和更新,新一代Kaldi在Librispeech数据集上的词错率降到了2.57%;通过全新代码库解决了Kaldi灵活性不足、体量过大等问题;作为核心部件的k2,不仅可以用来做语音识别,也可以用来做手写文字识别等其他任务。 兼容PyTorch,提高识别精度Kaldi集成了多种语音识别模型,包括隐马尔可夫和最新的深度学习神经网络,自 2011 年发布以来下载量超过了两万多次。无论是工业界还是学术界,几乎所有的语音团队都在使用Kaldi引擎来开发智能解决方案,包括MIT、哈佛、清华、微软、谷歌、Facebook等等。作为语音识别领域的“老前辈”,Kaldi也急需更新迭代。Daniel在媒体见面会上坦言,初版Kaldi的旧代码库已经难以满足机器学习发展的需求,用户需要更轻便、更灵活的源代码,也需要兼容 PyTorch 等主流框架的工具包。新一代Kaldi的研发工作从2019开始启动,去年已经完成了k2和Lhotse模块的研发工作。Daniel还在2020 MIDC大会上进行了展示,不过当时 Icefall模块还只是一个初步概念。今年研发团队进一步完善了k2和Lhotse模块, 并基于二者正式发布Icefall项目。Daniel介绍说,与初代Kaldi相比,新一代Kaldi是一个全新的代码库,主要是由C++、CUDA写就;支持Python调用;后端也由 PyTorch取代了此前的自定义代码。发布会现场,Daniel团队不仅展示了如何使用k2和Lhotse来实现现有的各种不同的语音识别模型,如基于Transformer/Conformer的CTC和LF-MMI等,更着重展示了k2何以能从根本上改变人们实现语音识别的方式。“我们实现了多轮解码(mutiple pass decoding)的示例,以及我们称之为‘双向建模’(bidirectional modeling)的模型”。Daniel兴奋地表示,基于这种多层模型的优势,新一代Kaldi可以大大提高语音识别模型的建模能力,从而降低词错误率。目前,新一代Kaldi在LibriSpeech数据集上的词错误率为2.57%。值得一提的是,Daniel团队在k2中实现了所有的FSA操作的可导性,用户仅使用几十行代码就可以完成复杂的多层模型结构。同时,他们还为用户提供了极大的“自定义”空间,诸如在网络中加入phone的embedding信息,支持带置信度的识别等用户自己的各种想法都能够基于k2来实现。Daniel表示,希望通过新一代Kaldi,能为语音识别领域打开一扇崭新的大门。 引入Python,改善灵活性新一代Kaldi分为Lhotse、Icefall和k2三个部分,Daniel Povey博士在发布会上表示,新一代Kaldi的独立设计是为了降低耦合性,方便用户使用。更重要的是,这样有助于扩展了组件使用的灵活性。例如,用作数据准备的Lhotse,既可以用在Icefall项目里,也可以用在任意其他语音识别库里来处理音频和文本数据。Daniel团队在发布会上介绍了Lhotse、Icefall和k2三个部分的更新细节。Lhotse抛弃了传统的shell脚本,采用了更加方便易用的Python语言。通过通用且不失灵活性的接口设计,满足了包括语音识别,语音合成等多种语音任务的需求,方便用户基于Lhotse可以方便地实现针对自己特定任务的接口,操纵各种不同的音频元数据和文本。Lhotse引入了Audio Cuts的概念,将训练数据自动地组织为一组组Cuts,并基于这种表示,提供了on-the-fly的数据混合,裁剪,增强和特征提取等操作,从而在不影响数据处理效率的前提下,降低了数据存储所需空间。 此外,Lhotse还提供了很多公开数据集的数据处理脚本,用户可以直接使用这些脚本,来进行相关语音任务的数据处理工作,大大降低了用户在某个数据集上进行实验的前期成本。“相信在不久的将来,随着新一代Kaldi的推广和普及,Lhotse甚至有可能成为语音领域使用最为广泛的数据准备工具。”Daniel期待地表示。作为训练脚本的集合,同Lhotse一样,Icefall也是一个纯Python项目。用过Kaldi的人都知道,Kaldi里有大量的基于不同数据集的示例脚本,显著降低了用户的学习成本。但这同时也带来一个缺点:示例脚本集合太过庞大,代码耦合过于紧密,导致维护成本较高。考虑到这一点,Daniel表示Icefall并不是对大量脚本的盲目集合,而是在提取公共组件的同时将不同数据集的示例脚本进行独立组织,以方便用户的学习和使用。此外,由于将数据准备部分单独放在Lhotse项目中,核心计算部分单独放在k2中,Icefall项目只需要关注语音识别模型的结构定义部分,降低了整个语音识别过程的耦合性,方便了网络结构的复用。k2是新一代Kaldi的核心。它的贡献在于,将加权有限状态转换器(Weighted Finite State Transducers, WFST)和相关算法无缝地集成到基于Autograd的机器学习工具包中,如PyTorch(已完成支持)和TensorFlow。WFST是语音识别领域最为核心的数据结构,可以用来构建诸如“音标->词->句子”的状态转换概率图。支持WFST可导意味着我们可以做很多以前很难做到,甚至做不到的事情,如消除以往语音识别任务中训练跟解码过程不匹配的问题、多轮(可求导)的语音识别过程、在声学网络中嵌入任意辅助信息等。同时,k2也支持很多现有的语音识别模型,如CTC、LF-MMI、RNN-T等。值得一提的是,去年Facebook发布了类似于k2的图网络建模GTN框架。与之相比,k2实现了更多的WFST相关算法,并且能够高效地支持GPU(GTN目前只支持CPU)。GPU实现,意味着语音识别模型的训练速度更快,解码速度更高效。新一代kaldi的解码速度已经是实时的300倍左右。此外,k2在语音识别的基础上,还可以应用于手写文字识别等其他seq-to-seq的任务。 全面赋能小米语音产品在万物互联的时代,智能语音交互扮演者越来越重要的角色。嗅觉敏锐的小米早在2017年已经注意到到这片蓝海市场。在Daniel加盟之前,小米已经逐步搭建了自己的语音技术团队,并推出了智能语音产品-小爱音箱。2019 年年初,小米创始人雷军提出“手机 +AIoT"双引擎发展战略,为小米在语音识别领域的发展指明了一条可行路径。“新一代Kaldi或将在明年之前将全部应用到小米所有的智能语音产品中”,Daniel向媒体表示。他说,新一代Kaldi能够适用各种场景的不同语音模型,如远近场语音唤醒、离在线语音识别、说话人识别等通用模型,以及口语评测、语种识别、语音情绪识别等。以小米小爱为例,“通过它,用户可以连接到各种各样的 AIoT 设备并与它们产生互动:智能音箱、手机、电视、智能手表、儿童故事机、车载后视镜等。”不仅是小米,所有企业、开发者和普通用户都可以继续享受新一代Kaldi的核心技术。Daniel表示,当初之选择加盟小米,也是因为小米承诺Kaldi可以继续作为开源项目。“小米是一家稳定的公司,重视开源开放,而且允诺我一直做开源项目,这对于我来说是最好的选择”。Kaldi从诞生之日起,就是一款开源语音识别工具包。Daniel一直坚持开源工作,鼓励更广泛的用户自由使用、复制以及修改源代码,并推动智能语音技术的发展。新一代Kaldi依旧采用了高效的C++代码实现。由于将 k2 的C++代码都包装到了Python, 模型的训练迭代都可以使用纯Python代码完成。Daniel表示,基于Icefall中的示例脚本,开发者们可以很容易地基于自己公司产品的数据集进行修改,进而快速地搭建线上数据反馈和模型自动迭代更新的流程,这将大大缩短模型更新的周期。随着新一代Kaldi 的发布和其在小米产品线的逐步落地,相信在不久的将来,小米将和其他公司一起,为普通用户带来更加完善的AIoT产品体验。正如崔宝秋博士在去年举行的Kaldi线下交流会中所讲,这将是围绕Kaldi的“四赢”局面:Kaldi项目赢,小米语音赢,全球的Kaldi社区赢,所有跟Kaldi相关的中小型公司赢! 关于DanielDaniel可以说是语音识别领域的殿堂级人物。除了开发kaldi外,他还对语音识别做出了许多科学贡献,包括助力判别训练(现在称为序列训练)的早期发展等。从1999年发布语音识别研究成果以来,其论文被引用次数超过了 30000 次。也因如此,Daniel从约翰斯·霍普金斯大学离职后,引发了全球科技巨头的一场人才争夺战。Daniel在2012年加入约翰斯·霍普金斯大学,担任语言和语音处理中心任副教授。在此之前,他在IBM研究院、微软研究院从事计算机语音识别研究。2019年10月,Daniel正式加入小米公司,担任小米集团首席语音科学家。点「在看」的人都变好看了哦! 浏览 30点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 Kaldi语音识别工具Kaldi是一个语音识别工具。使用C++开发,基于Apache许可证。目的是为语音识别研究者提供。Kaldi的目标和受众范围与HTK相似。目标是用C++编写的现代灵活的代码,易于修改和扩展。重要功能包Kaldi语音识别工具Kaldi 是一个语音识别工具。使用 C++ 开发,基于 Apache 许可证。目的是为语音识别研究SpeakRightJava语音识别框架SpeakRight是一个Java框架,用于编写语音识别应用,基于VoiceXML技术。使用StringTemplate模板引擎自动生成VoiceXML文档。Python Dragonfly语音识别框架Dragonfly是一个用Python开发的语音识别框架。提供高级对象模型,可编写简单脚本来实现语音的识别。当前支持语音识别引擎有:DragonNaturallySpeaking(DNS),aprodPython Dragonfly语音识别框架Dragonfly 是一个用 Python 开发的语音识别框架。提供高级对象模型,可编写简单脚本来实TLSphinxiOS 语音识别TLSphinx是一个围绕着Pocketsphinx的封装器,一个基于CMUSphinx的便携库,允许应用程序执行的语音识别而无需将音频移出设备。示例:import TLSphinxlet hmm =iOS 语音识别OpenEars是一个开源的iOS类库,用于在iPhone和iPad实现语音识别功能。本demo利用iOS 语音识别OpenEars是一个开源的iOS类库,用于在iPhone和iPad实现语音识别功能。本demo利用此开源类库实现了简单的语音识别。可以识别:CHANGE、LEFT、RIGHT、FORWARD、BAC语音识别-语音转译审核图普科技0Pocketsphinx.jsJavaScript 语音识别Pocketsphinx.js 是一个在浏览器上通过纯 JavaScript 实现语音识别的功能,支点赞 评论 收藏 分享 手机扫一扫分享分享 举报