z***@163.com
z***@163.com
  • 发布:2026-11-05 11:34
  • 更新:2026-11-05 11:34
  • 阅读:13

自制插件分享:sherpa-onnx 离线语音转文字 UTS 插件(Android,录音不出设备)

分类:uts

给公司的安全管理类 App 做语音填单时,把 sherpa-onnx 封装成了一个开箱即用的 uni-app 插件,已经上架插件市场,把接入方式和踩坑记录分享给大家。

功能一览

  • 离线流式识别:边说边出字,录音不上传、不联网、无按次费用
  • 中英混说:基于 sherpa-onnx 双语流式模型
  • zl-voice-input 组件:长按右下角麦克风说话,松手自动上屏,识别结果可编辑,支持 v-model
  • 模型托管:约 200MB 模型首次使用自动下载(内置 hf-mirror 镜像 + 支持自有源),下载进度可监听
  • 权限闭环:录音权限申请、被拒引导跳系统设置

平台范围:uni-app + Android(arm64-v8a,minSdkVersion 21),Vue2 / Vue3 均可。

三步接入

  1. 插件市场导入 uni_modules/sherpa-asr,制作自定义调试基座(含 Kotlin 混编与 AAR,标准基座跑不起来)
  2. 把插件自带的 example/model-page.vue 复制到 pages/model/model.vue 并注册路由
  3. 表单页直接使用组件(easycom 自动注册,无需 import):
<zl-voice-input v-model="content" placeholder="请填写排查内容" />

踩坑记录

  1. UTS 插件是性价比最高的原生路线:免人工审核(传统原生插件要审核约一周),utssdk/app-android 下可以直接写 Kotlin,sherpa-onnx 的 AAR 直接放 libs/
  2. 标准基座不含第三方 AAR:必须自定义基座,否则报 Failed resolution of OnlineTransducerModelConfig
  3. 模型管理比想象中重:多源容灾(huggingface 国内不稳,hf-mirror 兜底)、按字节数校验跳过已下载文件、临时文件清理(uni.downloadFile 会残留约 200MB 副本)
  4. 录音链路:AudioRecord 16kHz 单声道 PCM16,JS 侧轮询 getPartial() 拿实时结果,避免高频事件穿越 JS 桥
  5. 组件做了 Vue2 / Vue3 双兼容:同时声明 value/input 与 modelValue/update:modelValue

获取与反馈

iOS 版本已在开发计划中,uni-app x 支持在评估(它的 UTS 体系没有 plus.*,模型下载与权限模块需重写)。有问题直接回帖或在插件市场评论区留言。

0 赞 关注 分享

要回复文章请先登录或注册