DanielPovey以小米集团首席语音科学家的身份正式推出了新一代Kaldi
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 何以能从根本上改变人们实现语音识别的方式。
我们实现了多轮解码 的示例,以及我们称之为‘双向建模’ 的模型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 的核心它的贡献在于,将加权有限状态转换器 和相关算法无缝地集成到基于 Autograd 的机器学习工具包中,如 PyTorch和 TensorFlow
WFST 是语音识别领域最为核心的数据结构,可以用来构建诸如音标—gt, 词—gt, 句子的状态转换概率图。
支持 WFST 可导意味着我们可以做很多以前很难做到,甚至做不到的事情,如消除以往语音识别任务中训练跟解码过程不匹配的问题,多轮的语音识别过程,在声学网络中嵌入任意辅助信息等。
同时,k2 也支持很多现有的语音识别模型,如 CTC,LF—MMI,RNN—T 等。
值得一提的是,去年 Facebook 发布了类似于 k2 的图网络建模 GTN 框架与之相比,k2 实现了更多的 WFST 相关算法,并且能够高效地支持 GPUGPU 实现,意味着语音识别模型的训练速度更快,解码速度更高效新一代 kaldi 的解码速度已经是实时的 300 倍左右此外,k2 在语音识别的基础上,还可以应用于手写文字识别等其他 seq—to—seq 的任务
新一代 Kaldi 依然开源
新一代 Kaldi 或将在明年之前将全部应用到小米所有的智能语音产品中,Daniel 向媒体表示他说,新一代 Kaldi 能够适用各种场景的不同语音模型,如远近场语音唤醒,离在线语音识别,说话人识别等通用模型,以及口语评测,语种识别,语音情绪识别等
以小米小爱为例,通过它,用户可以连接到各种各样的 AIoT 设备并与它们产生互动: 智能音箱,手机,电视,智能手表,儿童故事机,车载后视镜等。
不仅是小米,所有企业,开发者和普通用户都可以继续享受新一代 Kaldi 的核心技术Daniel 表示,当初之选择加盟小米,也是因为小米承诺 Kaldi 可以继续作为开源项目
Kaldi 从诞生之日起,就是一款开源语音识别工具包Daniel 一直坚持开源工作,鼓励更广泛的用户自由使用,复制以及修改源代码,并推动智能语音技术的发展
新一代 Kaldi 依旧采用了高效的 C++ 代码实现由于将 k2 的 C++ 代码都包装到了 Python, 模型的训练迭代都可以使用纯 Python 代码完成
Daniel 表示,基于 Icefall 中的示例脚本,开发者们可以很容易地基于自己公司产品的数据集进行修改,进而快速地搭建线上数据反馈和模型自动迭代更新的流程,这将大大缩短模型更新的周期。
伴随着新一代 Kaldi 的发布和其在小米产品线的逐步落地,相信在不久的将来,小米将和其他公司一起,为普通用户带来更加完善的 AIoT 产品体验。
关于 Daniel
Daniel 可以说是语音识别领域的殿堂级人物除了开发 kaldi 外,他还对语音识别做出了许多科学贡献,包括助力判别训练的早期发展等从 1999 年发布语音识别研究成果以来,其论文被引用次数超过了 30000 次也因如此,Daniel 从约翰斯霍普金斯大学离职后,引发了全球科技巨头的一场人才争夺战
Daniel 在 2012 年加入约翰斯霍普金斯大学,担任语言和语音处理中心任副教授在此之前,他在 IBM 研究院,微软研究院从事计算机语音识别研究
2019 年 10 月,Daniel 正式加入小米公司,担任小米集团首席语音科学家。