RK3566 上部署 sherpa-onnx 流式语音识别只有 RKNN 2.2.0 能跑通【免费下载链接】sherpa-onnxSpeech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, HarmonyOS, Raspberry Pi, RISC-V, RK NPU, Axera NPU, Ascend NPU, x86_64 servers, websocket server/client, support 12 programming languages项目地址: https://gitcode.com/GitHub_Trending/sh/sherpa-onnx这篇给你交个底在 RK3566 开发板上用 RKNN 加速跑 sherpa-onnx 的流式语音识别流式 zipformer 模型哪些版本有坑、哪个版本组合能稳定运行、以及一份照抄就能跑的命令。sherpa-onnx 是一套基于 ONNX Runtime 的离线语音识别/语音合成框架支持 RK NPU下面这些结论全部来自板子上的实测。先说三句最要紧的RKNN 运行时2.2.0 是目前唯一验证稳定的版本2.3.2 会段错误2.1.0 会报数据类型不支持只能用流式识别模型离线offline模型和离线二进制走不通sherpa-onnx 需要在板子上直接编译适配目标架构。RKNN 版本怎么选一张表看明白三个主流版本在同一块 RK3566 板子上测下来结果泾渭分明RKNN 版本实测表现具体现象2.3.2❌ 崩溃运行模型时段错误Segmentation FaultGDB 定位到 RKNN 运行时内部函数属于运行时与模型的兼容性问题2.1.0❌ 报错出现Meet unsupported input dtype for gather该版本对 Gather 操作的数据类型支持不完善2.2.0✅ 稳定流式 zipformer 模型稳定运行结论一句话先装 2.2.0其他版本别费时间。踩坑清单三种失败各自长什么样三种失败现象完全不同出现哪一种基本能直接判断问题出在哪一层。段错误运行时内部崩溃现象模型运行过程中直接段错误程序退出。原因RKNN 2.3.2 的运行时内部与模型不兼容用 GDB 调试可以看到错误发生在 RKNN 运行时的内部函数中不是你的代码问题。处理降级到 RKNN 2.2.0问题消失。数据类型不支持Gather 操作卡住现象报错原文Meet unsupported input dtype for gather。原因RKNN 2.1.0 对 Gather 操作能接受的数据类型覆盖不全。处理升级/换装 RKNN 2.2.0。看到这条报错不用怀疑模型先检查运行时版本。离线模型加载失败模型与运行工具对不上现象尝试用离线识别相关的二进制如sherpa-onnx-vad-alsa-offline-asr加载模型失败。原因RKNN 路径目前只支持流式语音识别模型离线模型需要的是完整的 ONNX 模型文件而不是 RKNN 格式二者不匹配。处理改用流式识别的 sherpa-onnx 二进制 流式模型这是目前唯一能走通 RKNN 的组合。跑通的完整命令长什么样验证可行的组合是RKNN 2.2.0 流式识别二进制 sherpa-onnx 提供的双语中英流式 zipformer 模型仓库内对应sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20把模型转成 rknn 格式后最小可运行命令如下sherpa-onnx \ --providerrknn \ --encoderencoder.rknn \ --decoderdecoder.rknn \ --joinerjoiner.rknn \ --tokenstokens.txt \ test.wav参数逐个说--providerrknn指定用 RKNN 作为推理后端可选值还有 cpu、cuda、coreml、trt、qnn--encoder/--decoder/--joiner流式 zipformer 由编码器、解码器、连接器三部分组成各自对应一个.rknn模型文件--tokens词表文件tokens.txttest.wav待识别的音频16 kHz 的 PCM 采样最为稳妥。还能再抠出一点性能的地方核心绑定RK3566 不支持把 NPU 核心绑定给特定任务如果你有 RK3588 这类更强的平台可以试试这项优化线程数num_threads按板子实际的 CPU 核心数来配别无脑拉满实时性流式识别可以调 chunk 大小在延迟和准确率之间找平衡具体数值以实测为准。上板前检查清单照着过一遍能避开上面所有坑RKNN 运行时版本是 2.2.0不是 2.1.0 / 2.3.2模型是流式模型encoder / decoder / joiner 三个.rknn文件齐全外加tokens.txtsherpa-onnx 是在板子上直接编译出来的没有直接拷其他架构的二进制跑的是流式识别二进制不是离线识别二进制看到Meet unsupported input dtype for gather→ 查版本看到段错误 → 查运行时内部兼容性模型加载失败 → 查是不是拿离线模型走了 RKNN 路径。想深挖实现细节可以看 RKNN 适配的源码 sherpa-onnx/csrc/rknn/想接自己代码而不是命令行可以参考 c-api-examples/ 下的 C 接口示例。【免费下载链接】sherpa-onnxSpeech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, HarmonyOS, Raspberry Pi, RISC-V, RK NPU, Axera NPU, Ascend NPU, x86_64 servers, websocket server/client, support 12 programming languages项目地址: https://gitcode.com/GitHub_Trending/sh/sherpa-onnx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考