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),仅供参考