小米开源语音模型 Kaldi-ONNX 转换工具,助力移动端部署!
作者 | 小米开源团队
责编 | 胡巍巍
近日,小米对外开源了Kaldi模型到ONNX模型的转换工具Kaldi-ONNX,有望进一步促进Kaldi生态与深度学习生态间的互通。
同时,配合移动端深度学习框架MACE,将极大降低语音模型在手机与智能设备上的离线部署门槛,并大幅提升推理效率。
介绍
Kaldi是目前使用广泛的开发语音识别应用的框架,利用Kaldi,研究开发人员可以训练出语音识别神经网路模型,不过将训练得到的模型部署到移动端设备上往往需要大量的移植开发工作。
Kaldi-ONNX是一个开源的轻量化Python脚本工具,可以用来将Kaldi的神经网络模型文件转换为ONNX格式模型。
而ONNX是一种开放神经网络交换格式(Open Nerual Network Exchange),它为神经网络模型提供了一种开源的格式, 目前已经有多个神经网络框架或工具支持ONNX格式模型,如Caffe2,PyTorch,Tensorflow,MACE, CoreML等。
意义和优势
使用Kaldi-ONNX将Kaldi的神经网络模型转换成ONNX开源格式,一方面可以使用兼容ONNX的各种工具,如进行可视化检查或模型优化。
另外转换得到的模型可以借助MACE或其他神经网络框架部署到Android,iOS,Linux/Windows或其他设备上, 为开发者部署语音识别神经网络模型提供了更多框架或工具的选择。
Kaldi-ONNX在设计中考虑了工具的轻量化、易用、灵活、高效等特点,主要从如下几个方面进行设计:
- 使用Python脚本编写,跨平台,方便在Linux/Window/Mac系统下使用;
- 体积小,除ONNX框架接口外无第三方依赖,易安装;
- 广泛支持Kaldi的Nnet2和NNet3模型及常用的神经网络组件;
- 可扩展及模块化设计,方便更新或添加新的组件;
- 模型融合及优化,将Kaldi框架对神经网络的编译优化过程进行了简化, 并针对LSTM/TDNN等进行了融合,转换成有向无环网络模型,使模型的部署和推理计算更高效。
此外,MACE(移动端AI计算引擎)框架已支持ONNX格式模型文件和Kaldi模型中常用的算子, 因此推荐使用MACE来部署Kaldi的语音识别神经网络模型。同时MACE的Model Zoo项目里已经收录了数个转换好的Kaldi语音识别DNN模型。
性能指标
下表是在小米MIX 2S(骁龙845)上的测试数据(单位: 毫秒):
Kaldi nnet3 模型
Kaldi nnet2 模型
项目地址
- Kaldi-ONNX项目地址:
https://github.com/XiaoMi/kaldi-onnx
- MACE项目地址:
https://github.com/XiaoMi/mace
- 示例模型地址:
https://github.com/XiaoMi/mace-models/tree/master/kaldi-models