曾几何时,个人搭建语音识别系统是一件非常复杂的系统工程,需要涉及到语音识别算法、服务端开发、网络通信、前端开发等技术,个人开发者很难全栈掌握,甚至很难熟练的使用这些技术。

得益于语音识别技术的开源运动和深度学习应用技术的发展,日前,WeNet 中更新了极简的语音识别系统,十几行代码三分钟即可轻松搭建语音识别系统。其全部代码如下所示:


该代码链接为wenet web runtime[1],运行后的效果如下图所示:

该示例主要依靠两项核心技术:wenet python binding[2]和 深度学习开源应用gradio[3],下文会分别介绍。

wenet python binding

wenet runtime 核心代码基于 C++ 开发,如想使用则必须安装和搭建相应的开发和编译环境,有很多同学并不熟悉 C++ 及其开发环境,即使熟悉也会在编译的过程中遇到各种各样的环境不一致问题,使用 C++ runtime 的门槛非常的高。因此,我们开发了 wenet python binding,对 C++ runtime 进行包装并暴露 python 接口,而且同时支持 linux/windows/macos 等常见开发环境和不同的 python 版本(3.6/3.7/3.8/3.9)。
wenet 的 python binding 中支持了以下功能:
  1. 流式和非流式识别:既可支持流式识别,亦可支持非流式识别。
  2. 模型库:内置了模型中(wenetspeech)英(gigaspeech)文模型,开箱即用。支持用户使用自己基于 wenet 训练的模型,也支持加载用户训练并编译好的语言模型。
  3. 热词功能:支持用户自定义热词。
  4. 时间戳功能:支持识别结果中可以返回时间戳信息。
  5. 长语音识别功能:支持长语音的识别。
  6. N-best功能:支持返回最好的 N 个识别结果。
wenet python bingding 有效地屏蔽了语音识别算法的复杂性并提供了简单的 python 接口。

gradio

gradio 是一个开源的 python 包,其口号是Build & Share Delightful Machine Learning Apps,支持研究人员快速地为其深度学习模型生成可视化接口。目前 gradio 已经在行业内广泛应用,如 huggingface 中直接内置支持 gradio。关于 gradio 的介绍详见gradio 论文[4]。

一个典型的 gradio 的应用如下图所示,可以看到,用少量的代码我们就可以实现模型输入、输出的可视化。


gradio 有效的解决了服务端开发、网络通信、前端开发等问题,并提供了简单统一的接口。

参考资料

[1]wenet web runtime: https://github.com/wenet-e2e/wenet/tree/main/runtime/web

[2]wenet python binding: https://github.com/wenet-e2e/wenet/tree/main/runtime/binding/python
[3]gradio: https://gradio.app/
[4]gradio 论文: https://arxiv.org/pdf/1906.02569.pdf