sherpa-onnx简介
Sherpa:是一个由 K2-FSA 团队 开发的 开源语音处理框架,旨在解决传统语音识别工具(如 Kaldi)在模型部署和跨平台适配中的复杂性问题。它通过整合现代深度学习技术和高效推理引擎,提供了从语音识别、合成到说话人识别的一站式解决方案,尤其在实时性、低资源消耗和跨平台兼容性方面表现突出。
ONNX(Open Neural Network Exchange):即开放神经网络交换格式,是一种用于表示深度学习模型的开放标准文件格式。它由微软、Facebook 和亚马逊等科技公司联合推出,旨在打破不同深度学习框架之间的壁垒,让模型能够在不同的工具和硬件平台之间更便捷地迁移和部署。
所以Sherpa-onnx是一款基于开放神经网络交换格式的实时语音识别引擎。
sherpa-onnx尝鲜
由于笔者主要从事Android开发,所以本次尝鲜也就仅带大家将官方Demo跑起来并看到效果。
1.下载sharpa-onnx源码
下载地址:https://github.com/k2-fsa/sherpa-onnx
或者执行:
git clone https://github.com/k2-fsa/sherpa-onnx
2.导入Demo工程到Android Studio
完成上一步下载源码之后,解压源码,然后进入源码中的:sherpa-onnx-master\sherpa-onnx-master\android目录
内容如下:
这个里面这些目录基本上都是sharpa-onnx在Android上面的示例,我们本次指导示例使用的是SherpaOnnx,SherpaOnnx的功能是语音转文字(ASR),其余的在成功跑起SherpaOnnx后,可自行了解,配置方式基本上都差不多。 SherpaOnnx导入Android Studio之。
3.更换工程中的类文件
因为SherpaOnnx中默认除MainActivity.kt外其他都是伪类,因此需要找到真的类文件进行替换,好的一点是官方在每个类中标明了使用的类文件的具体位置,有些同学可能看不明白,没关系,跟我操作即可。
在sherpa-onnx-master\sherpa-onnx\kotlin-api目录内拷贝下图中红框标记的文件:
复制到Android Studio中替换demo中当前同名的类文件。
4.下载并导入依赖
官方只提供了macOS和linux下的依赖编译,windows下的没提供,而笔者和大部分小伙伴应该都是windows吧,所以我们也就不费那劲了,直接下载官方已经编译好的依赖文件导入即可,如果有小伙伴对于依赖编译有想法的可以参看官方文档,或者留言我后续再出一遍依赖编译的指导文档。
下载路径:https://github.com/k2-fsa/sherpa-onnx/releases
我们这里下载sherpa-onnx-v1.11.3-android.tar.bz2,下载完成后可以看到里面有一个jniLibs目录,将这个目录拷贝,复制并替换工程中已经存在的JniLibs目录,当然如果觉得依赖比较大的话,可以自行根据调试平台删除掉不需要的库,如果搞不明白,就直接全部拷到工程即可。
自此,工程的配置就算全部完成了,下面我们看下如何下载模型并导入到工程。
5.下载模型并导入
可能是考虑到sherpa-onnx源码大小,所以demo中既没有上传依赖,也没有上传模型,所以这些都得我们自己下载自行导入,好的一点是官方又很贴心,提供了很多预训练模型供大家下载。
在下载之前我们需要知道要下载那个模型,所以我们的先从demo中查找它加载的是那个模型,因此让我们打开MainActivity。
在205行也就是我红框标记的这里,通过名称不难看出是获取模型配置,在获取配置时传入一个type参数,这个参数的值为0,大家要记住这个值,待会有用,我们继续看下getModelConfig函数是怎么加载模型配置的。
这里跳转到了OnlineRecognizer类中,在这里可以看到传入的type就是为了区分加载那个模型,模型名称可以认为就是 “modelDir”, 因为截图有限,大家如果打开的话应该能看到,支持加载的模型很多,我们这里就还是以默认加载模型来进行调试吧。
在MainActivity中的截图中应该有小伙伴也看到了,官方亲切的将模型下载链接已经给出,不过那个链接是总的模型下载地址,当然根据大家需要可选择我下面提供的链接或者demo中的链接下载都可以。
模型下载地址:https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models
因为模型很多,所以我们这里直接搜索
找到我们要下载的模型后,直接下载,根据个人网速,如果过慢的话,可能还需要科学上网,大家自行选择。
待下载完成后,解压,将整个模型目录拷贝到工程的assets根目录,结构如下:
这一步完成之后,那么我们整个demo的导入就算完成了,接下来就是运行看效果了。
效果截图如下:
简单试了下,识别速度和准确率还可以,效果还是杠杠的,至此我们sherpa-onnx安卓语音识别尝鲜就圆满结束了,感谢大家的观看。