ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Sherpa-ONNX 本地离线语音识别与语音合成实战指南

Sherpa-ONNX 本地离线语音识别与语音合成实战指南

Sherpa-ONNX 本地离线语音识别与语音合成实战指南

【免费下载链接】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

Sherpa-ONNX 是一个完全在本地跑完的离线语音识别工具集:ASR、TTS、说话人分析、语音增强、VAD 全部装进同一个跨平台 SDK,音频从头到尾不出设备。如果你要做实时字幕、车载助手,或者需要在医疗、金融这类场景里部署一套本地 ASR,它可以直接作为推理引擎用。和按调用计费、录音要先上云的云端 API 不同,它把 ONNX 模型直接跑在你的 CPU / NPU 上;和单点的 Whisper 脚本、Vosk 相比,它在一个库里同时给了识别、合成、说话人、增强四组能力,并覆盖 12 种编程语言绑定。

🎙️ 离线语音识别与 TTS 支持的功能一览

核心能力可以按四组来记:

分组能力说明
语音识别(ASR)流式 / 非流式识别流式边说边出字,非流式整句解码,支持 Whisper、Paraformer、SenseVoice、Zipformer 等模型
语音合成(TTS)文本转 wav 音频内置 VITS、Piper、Matcha、Kokoro 等引擎,可切换说话人、调节语速
说话人相关识别 / 验证 / 分离判断"是谁在说",并把多人对话切成不同人的段落
辅助能力VAD、降噪、声源分离等人声起止检测、GTCRN 与 DPDFNet 降噪、Spleeter 与 UVR 分轨,另有语言识别、音频事件标注、关键词唤醒、标点恢复

平台与语言绑定情况汇总如下:

维度覆盖范围
桌面 / 服务器Windows、macOS、Linux,x86 / x86_64 / arm64 / arm32 / riscv64
移动端Android(含 WearOS)、iOS、HarmonyOS
嵌入式树莓派、RK / 昇腾 / 爱芯 / Intel NPU、Jetson、RISC-V 开发板
应用框架Flutter、Tauri、WebAssembly
语言绑定C++、C、Python、Go、C#、Java、Kotlin、Swift、JavaScript、Dart、Rust、Pascal

边界也要说清:它只提供推理,没有训练工具,模型要用上游框架训练后导出成 ONNX;它瞄准的是端侧低延迟和可控成本,而不是去拼云端大模型的极限精度。

🛠️ 本地部署三步跑通:从安装到出转写

第一步,拿到源码与示例(仓库只读,仅用于获取示例):

git clone https://gitcode.com/GitHub_Trending/sh/sherpa-onnx

进入目录后,你会看到按语言划分的十几个示例工程。

第二步,安装 Python 运行时:

pip install sherpa-onnx

装完后import sherpa_onnx不再报错即可。

第三步,挑一个官方示例直接运行。以非流式识别为例,文件开头的注释里就写好了现成命令(以 NeMo CTC 英文模型为例):

python3 python-api-examples/offline-decode-files.py \ --tokens=./sherpa-onnx-nemo-ctc-en-citrinet-512/tokens.txt \ --nemo-ctc=./sherpa-onnx-nemo-ctc-en-citrinet-512/model.onnx \ --num-threads=2 ./sherpa-onnx-nemo-ctc-en-citrinet-512/test_wavs/0.wav

跑完终端会逐条打印转写文本,末尾附带一行Real time factor (RTF)的耗时统计。

官方示例文件可以直接对照着读:

  • 非流式 ASR:python-api-examples/offline-decode-files.py
  • 流式 ASR:python-api-examples/online-decode-files.py
  • 离线 TTS:python-api-examples/offline-tts.py

下面这张图来自仓库的 Flutter TTS 示例,Windows 上一次生成的实测记录:5.216 秒音频耗时 1.233 秒,RTF 为 0.236。

🧭 语音识别项目选型对比:谁该用 Sherpa-ONNX,性能预期是多少

先给判断:

  • 录音涉及医疗、车载、金融等隐私数据、不能出设备的,用它;
  • 目标硬件是树莓派、手机或带 NPU 的开发板,且想在一个库里拿齐 ASR + TTS + VAD 的,用它;
  • 预算充足、只追求云端大模型极限精度的,别用;
  • 需要训练或微调模型本身的需求,别用——训练请回上游框架,这里只负责推理。

性能预期可以直接按 RTF(处理 1 秒音频的耗时占比)来估:

  • 流式 Zipformer、Paraformer 在普通 CPU 上 RTF 普遍低于 0.1,意思是 1 秒音频不到 0.1 秒就算完,实时对话毫无压力;
  • TTS 在树莓派级别设备上 RTF 约 0.2~0.3,即 5 秒语音约 1 秒多生成完毕;
  • 桌面实测见上图:RTF 0.236,5.216 秒语音耗时 1.233 秒生成。

❓ 离线语音识别常见问题:数据会不会出设备

问:断网之后还能不能用?能。模型全部在本地,推理不访问任何网络接口;只有第一次下载模型文件时需要联网。

问:我录的音到底会不会传出去?不会。识别在设备内完成,音频不经过任何第三方服务器,这正是选它而不是云端 API 的理由。

问:跑起来要多久?按 RTF 估算:流式 ASR 在普通 CPU 上低于 0.1,1 秒音频不到 0.1 秒算完;TTS 在树莓派级设备约 0.2~0.3,5 秒语音 1 秒多生成;桌面端实测 5.216 秒语音耗时 1.233 秒。

模型与语种是否覆盖你的场景,去根目录 README.md 的预训练模型列表核对;语言绑定对应的示例目录都在仓库里,如python-api-examples/、go-api-examples/、java-api-examples/。现在就打开 README 确认你的语种模型,然后按上面的三步跑通你的第一个 demo。

【免费下载链接】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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进