3 分钟本地跑通 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 是一套本地语音处理工具箱:离线语音识别、语音合成(TTS)、说话人识别、语音增强全部在设备端完成,断网也能用。底层算法来自新一代 Kaldi 工具链,推理则交给 onnxruntime(一个跨平台模型推理引擎,专门负责把 .onnx 模型跑起来)。
🚀 3 分钟跑起来
pip 一条命令装好依赖
它提供官方 Python 包,装完即用,不用编译:
pip install sherpa-onnx7 行代码识别一段音频
准备一个.onnx模型和配套的tokens.txt词表(仓库 scripts/ 目录下按模型分类放了对应的转换脚本),然后:
import sherpa_onnx recognizer = sherpa_onnx.OfflineRecognizer.from_nemo_ctc( model="model.onnx", tokens="tokens.txt", num_threads=2) stream = recognizer.create_stream() stream.accept_waveform(16000, samples) recognizer.decode_streams([stream]) print(stream.result.text)其中samples是取值范围 [-1, 1] 的 float32 数组。完整的命令行版本(支持 Whisper、Paraformer、CTC 等多种模型)可以直接看 python-api-examples/offline-decode-files.py。
🎯 真实场景落地
- 📞如果你要批量转写客服录音:把一堆 wav 丢给它循环解码,每次还会打印 RTF(实时率,转 1 秒音频花多少时间),机器上多线程并行,成本基本只剩电费。
- 🎙如果你要给播客自动打字幕:用它的 VAD(语音端点检测,负责切出有人说话的片段)串接离线识别,vad-with-non-streaming-asr.py 就是现成的组合拳。
- 📱如果你要在智能硬件里塞语音输入:Android、iOS、树莓派、RISC-V 到各类 NPU 都有对应示例,flutter-examples/ 里甚至直接跑在 Ubuntu 桌面上给你看效果。
🧩 周边项目怎么配合
- WeNet:端到端语音识别工具包,它训练出的模型转成 .onnx 后能被这套东西直接加载,属于典型的"上游模型供应商"。
- SenseVoice:多语言识别模型,接进来就给它补上中、英、日等语种的识别能力。
- Triton:推理服务框架,想把这套离线引擎搬上集群做高并发服务时,用它来调度。
⚠️ 上手后最容易踩的坑
- 音频格式别搞错:输入要求单声道 16-bit 的 wav;
accept_waveform里的 16000 是模型做特征提取的采样率(默认 16k),wav 文件本身的采样率可以不同,库会自动重采样。 - 模型和工厂方法必须配对:Whisper、Paraformer、NeMo-CTC 结构各不相同,分别对应
from_whisper/from_paraformer/from_nemo_ctc,配错了启动就会报参数缺失。 - 嵌入式设备留意内存:在树莓派或手机上跑,优先选文件名带
.int8的量化模型,num_threads别拉太高,否则要么卡要么 OOM。
想继续往下走,从 python-api-examples/ 挑一个最接近你业务的脚本魔改即可;C++、Java、Rust、Kotlin 等各语言的接口思路基本一致,仓库里都有对应目录可以照抄。
【免费下载链接】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),仅供参考