近日,Kaldi之父Daniel Povey接受媒体专访,发布了新一代Kaldi, 包括k2、Lhotse和Icefall三个部分。据介绍,新一代Kaldi之所以将整个项目分为三个部分,一方面是为了降低耦合性,方便用户使用。更重要的是,Lhotse作为数据准备部分,不仅可以用在Icefall项目里,也可以用在任意其他语音识别库里来处理音频和文本数据。
其实在去年的MIDC大会上,Daniel Povey博士就发布了新一代Kaldi,当时,k2和Lhotse的核心部分已经开发完成,但Icefall尚是一个初步概念。经过这一年的开发,他们团队完善了k2和Lhotse, 并基于二者正式发布Icefall项目。
其中k2的主要更新包括优化代码以提高整体性能;实现一些Icefall项目需要用到的辅助函数; 修复bug。Lhotse的主要更新包括更加完善的支持PyTorch Dataset的API 如支持map-style的datasets,动态batch大小,对分布式训练的支持等);加入了更多在线on-the-fly)功能的支持(如在线的重采样,特征提取等); IO和序列化的支持(如支持从HTTP/S3/GCP/Azure URLs下载音频,支持JSONL等);更多公开数据集的支持(如AiShell, Musan, AMI等);其他的一些优化和bug修复(如文档的完善,支持可选的noise padding, 错误信息的优化,数据加载的可视化等)。
与此同时,这次发布最重要的部分是Icefall训练脚本集合,据介绍,不仅在其中展示了如何使用k2和Lhotse来实现现有的各种不同的语音识别模型,如基于Transformer/Conformer的CTC和LF-MMI等,更重要的是,着重展示了k2何以能从根本上改变人们实现语音识别的方式。目前,已经在LibriSpeech数据集上取得了2.57%的词错误率。
Kaldi之父Daniel Povey表示,新一代Kaldi将同上一代Kaldi一样,保持高效的C++代码实现,以方便工业界的使用。更重要的是,将k2的C++代码都(使用pybind11)包装到了Python, 模型的训练迭代都可以使用纯Python代码完成。基于Icefall中的示例脚本,工程师们可以很容易地基于自己公司产品的数据集进行修改,进而快速地搭建线上数据反馈和模型自动迭代更新的流程。
而谈及初代Kaldi和新一代Kaldi之间最大区别,Daniel Povey告诉记者,新一代 Kaldi 是一个全新的代码库,它被完全重新书写,主要是由C++还有一些CUDA写就,并可以在Python调用,而且它由3个独立的项目组成,分别称为 k2、Lhotse和Icefall。
在他看来,之所以在小米做这样的事情,“是因为担心有些公司保证我和团队可以从事开源工作,但在一两年后又改变想法,选择小米是因为这是一家稳定的公司,表现出对开源的承诺与重视,所以我觉得是我的最佳去处”。
资料显示,Daniel Povey 是著名的语音识别开源工具 Kaldi 的主要开发者和维护者,被称为Kaldi 之父。Kaldi 集成了多种语音识别模型,包括隐马尔可夫和最新的深度学习神经网络,公认是业界语音识别框架的基石。