简介
偶然在 github 上翻到了这个项目 https://github.com/k2-fsa/sherpa-ncnn
在没有互联网连接的情况下使用带有 ncnn
的下一代 Kaldi
进行实时语音识别。支持 iOS
、Android
、Raspberry Pi
、VisionFive2
、LicheePi4A
等。
也就是说语音转文字可以不再借助网络服务的接口,这在很多本地化场景中简直是起飞,甚至还支持实时语音识别,赶紧来试试吧!
官方文档:https://k2-fsa.github.io/sherpa/ncnn/install/
安装
本地测试环境为 macOS M3 air
克隆仓库已经本地编译
git clone https://github.com/k2-fsa/sherpa-ncnn cd sherpa-ncnn mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j6
得到了如下结果
下载预训练模型
cd /path/to/sherpa-ncnn wget https://github.com/k2-fsa/sherpa-ncnn/releases/download/models/sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23.tar.bz2 tar xvf sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23.tar.bz2
使用
接下来就可以使用语音转文本啦,在预训练模型中还提供了一些录音的案例
语音识别
cd /path/to/sherpa-ncnn for method in greedy_search modified_beam_search; do ./build/bin/sherpa-ncnn \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/tokens.txt \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/encoder_jit_trace-pnnx.ncnn.param \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/encoder_jit_trace-pnnx.ncnn.bin \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/decoder_jit_trace-pnnx.ncnn.param \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/decoder_jit_trace-pnnx.ncnn.bin \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/joiner_jit_trace-pnnx.ncnn.param \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/joiner_jit_trace-pnnx.ncnn.bin \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/test_wavs/0.wav \ 2 \ $method done
得到了如下结果:
可以看到,速度还是挺快的
实时语音识别
cd /path/to/sherpa-ncnn ./build/bin/sherpa-ncnn-microphone \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/tokens.txt \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/encoder_jit_trace-pnnx.ncnn.param \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/encoder_jit_trace-pnnx.ncnn.bin \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/decoder_jit_trace-pnnx.ncnn.param \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/decoder_jit_trace-pnnx.ncnn.bin \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/joiner_jit_trace-pnnx.ncnn.param \ ./sherpa-ncnn-streaming-zipformer-zh-14M-2023-02-23/joiner_jit_trace-pnnx.ncnn.bin \ 2 \ greedy_search
效果非常好
其他使用方式
按官方文档介绍,该项目在各个平台都能直接运行
按本文所示的案例,直接部署到服务端也能够使用,于是就有了一个私有的语音识别接口。
踩坑
服务端编译时一些比较老的系统版本可能会遇到 cmake 版本过低无法进行编译的问题。
升级 cmake至3.5 或者直接物理解决:换个高版本的服务器系统。
结语
以前的语音识别方案一般都是各云服务平台直接买接口。
没想到现在已经直接能在本地使用,甚至还有实时语音识别,功能十分强大。
当然,本文只是跟着官方文档走了一次示例,尚未进行具体的使用和深入的研究。
希望能对大家有所帮助。