sherpa-onnx 离线语音识别:pip 一行安装,5 分钟本地跑通 ASR 和 TTS
【免费下载链接】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 让开发者和产品团队在离线场景下,用 onnxruntime 在本地设备上完成语音识别(ASR)、文本转语音(TTS)、说话人分离等任务,数据不出设备、无需联网。
技术上它把新一代 Kaldi 的声学模型导出为 ONNX,推理端只依赖 onnxruntime,所以能同时跑在 Android、iOS、Linux 桌面、树莓派、RISC-V 服务器,甚至 RK/昇腾 NPU 上,覆盖 Python、C++、Go、Java 等 12 种语言。
先看它能干什么
- 给视频出字幕:你只需要一段本地音频和一个离线识别模型,就能批量转写出文字和时间戳,全程不上传云端。仓库里的 generate-subtitles.py 就是这个用法。
- 实时转写 App:你只需要用 Flutter 或 Tauri 模板接上麦克风,就能做出 Android/iOS/桌面多平台通用的流式识别 App,模板在 flutter-examples/ 和 tauri-examples/。
- 完全离线的 TTS 应用:你只需要选一个 VITS/Piper 模型,就能让设备本地朗读文字,中英双语可用,演示 App 在 flutter-examples/tts。
五分钟跑通最小路径
第 1 步:装包。一行命令装好 Python 包:
pip install sherpa-onnx第 2 步:下模型。从项目 releases 下载一个预训练包并解压,这里以 SenseVoice 中文模型为例,之后所有路径都指向这个解压目录(需要克隆仓库时地址是 https://gitcode.com/GitHub_Trending/sh/sherpa-onnx ):
tar xvf sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17.tar.bz2第 3 步:写 8 行代码。下面是完整的最小识别流程:
import sherpa_onnx, wave, numpy as np recognizer = sherpa_onnx.OfflineRecognizer.from_sense_voice( model="your-model-dir/model.onnx", tokens="your-model-dir/tokens.txt", ) with wave.open("your-audio.wav") as f: samples = np.frombuffer(f.readframes(f.getnframes()), dtype=np.int16) s = recognizer.create_stream() s.accept_waveform(f.getframerate(), samples / 32768) recognizer.decode_stream(s) print(s.result.text)控制台输出就是识别出的文本,比如今天天气不错。仓库里 python-api-examples/ 还有几十个可直接运行的脚本,换模型时改参数即可。
常见卡点与取舍
- 模型架构不匹配:
from_sense_voice只认 SenseVoice 模型,换成 Whisper 就要改用from_whisper——解法是对照你下的模型名选对应的from_*工厂方法。 - 流式 vs 离线选反:要边说边出字就选流式模型(如 streaming-zipformer),转写完整文件用离线模型即可。原因:流式模型延迟低但精度略逊。
- 音频格式不对:wav 必须是单声道、16-bit,采样率 8k/16k 都接受,库会自动重采样,别传双声道 MP3。
什么时候换方案?你需要 LLM 级别的语义纠错或云端 GPU 并发服务时,sherpa-onnx 不合适;它就是为"离线、隐私、多端部署"这三个词而生的。
周边与延伸
- 训练侧分工:模型由新一代 Kaldi 和 WeNet 训练、再导出 ONNX,sherpa-onnx 只管端侧推理,相当于"训练归上游,部署归它"。
- 浏览器场景:wasm/ 提供 WebAssembly 版,把同一个模型编译到浏览器里跑纯前端的语音识别,不用在服务器上装任何东西。
收尾
适合:离线推理、数据敏感、多平台多语言、低延迟端侧应用;不适合:需要大模型语义理解、或依赖云端 GPU 高并发服务的场景。
【免费下载链接】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),仅供参考