想在手机、树莓派甚至 RISC-V 开发板上离线跑语音识别,五年前还是个需要啃 Kaldi 源码的硬核课题。k2-fsa 组织的 sherpa 把这件事变成了"下载预训练模型、装个包、跑示例"的三步操作。这个以 Apache-2.0 协议开源的项目自我定位是"新一代 Kaldi 的语音转文本框架",它专注端到端模型的推理部署:transducer 与 CTC 两类架构,C++ 与 Python 双 API。项目由 k2 项目(Kaldi 2.0)生态发展而来,配套训练框架 icefall 负责模型训练,sherpa 只管把训练好的模型高效地跑起来。
sherpa 本体只是这个故事的起点。它演化出的 sherpa-onnx 与 sherpa-ncnn 把能力扩展到 iOS、Android、鸿蒙乃至嵌入式 Linux,覆盖十几门编程语言,长成了开源世界最完整的端侧语音栈之一。本文按"家族全景、模型架构、流式与非流式、平台矩阵、嵌入式实测、上手路径、选型对比、总结"组织全文。
1、家族全景
sherpa 家族的分工设计得非常清楚:训练在 icefall,PyTorch 推理在 sherpa,跨平台部署在 sherpa-onnx 与 sherpa-ncnn。三者关系如下:
训练与推理分离是第一层解耦:icefall 用 PyTorch Lightning 管理 Zipformer、Transducer、CTC 等模型的训练配方,sherpa 负责用 TorchScript 或导出的格式做推理,二者各自独立迭代。推理引擎再分裂是第二层解耦:sherpa-onnx 走 ONNX Runtime 生态,换取最广的平台覆盖;sherpa-ncnn 走腾讯的 NCNN 推理框架,为移动端做极致的包体与速度优化。三个仓库各自完整的文档站,共享同一套预训练模型仓库(托管在 Hugging Face)。
各仓库的定位差异如下:
| 仓库 | 运行时 | 覆盖平台 | 典型场景 |
|---|---|---|---|
| sherpa | PyTorch | Linux、macOS | GPU 服务器解码、研究验证 |
| sherpa-onnx | ONNX Runtime | 全平台含鸿蒙与 WASM | 通用端侧部署 |
| sherpa-ncnn | NCNN | Android、iOS、嵌入式 | 包体敏感的移动端 |
2、模型架构
sherpa 只支持两类端到端架构:transducer 与 CTC。这不是保守,而是对"部署友好"的坚持——两者都可以做到流式逐帧解码,且解码过程无需外挂语言模型。传统 Kaldi 的流程是声学模型加发音词典再加语言模型的拼接组合,端到端模型把这三层压进一个网络。transducer 的解码结构如下:
transducer 由编码器、预测网络、联合网络三件套组成:编码器吃音频帧产出声学表示,预测网络记住已输出的历史,联合网络决定下一步是输出一个 token 还是遇到空白符号继续等下一帧——这个"发射或等待"的循环正是流式识别的机制基础。CTC 则更简单,通过引入空白符号允许一帧对齐多输出或零输出,整段音频一次前向就能得到结果,代价是流式能力弱于 transducer。
文档站支持的模型家族覆盖了主流选择:Zipformer 系(流式与非流式、多语言版本)是自家主打,Paraformer 来自达摩院,SenseVoice 支持中英日韩粤五语种,还兼容 Whisper tiny、NeMo 的 Citrinet 与 Conformer、Moonshine、FireRedASR、TeleSpeech 等。模型来源多元,但导出格式统一,这正是"框架"的价值所在。
3、流式与非流式
文档站专门有一页 FAQ 解释"在线、离线、流式、非流式的区别"——这个概念混淆是新手最常见的困惑。两种模式的数据流对比如下:
流式识别边说边出字,延迟以百毫秒计,适合语音助手与实时字幕;非流式识别等音频完整再解码,准确率更高,适合文件转写与字幕生成。sherpa 家族对两种模式都提供完整支持,且 API 风格统一——同一套模型接口,流式与否由模型本身决定而非代码改写。
两个配套能力让这条流水线更完整。VAD(语音活动检测,用 silero-vad)负责切分长音频里的有效语音段,与识别解耦后能显著省算力;端点检测(endpointing)让流式识别知道"用户说完了",三规则可调(静音时长、尾部词数、总时长)。热词(hotwords)能力则通过 Aho-Corasick 算法做上下文偏置,把人名、术语这类易错词的识别准确率拉回来——工程细节的完善程度,是这个项目最被称道的地方。
4、平台与语言矩阵
sherpa-onnx 的平台覆盖是开源语音项目里最广的一档。语言绑定与平台组合如下:
| 层面 | 覆盖范围 |
|---|---|
| 语言 API | C、C++、Python、Java、Kotlin、Swift、C#、Go、Rust、JavaScript、Pascal |
| 桌面与服务器 | Linux、Windows、macOS(含 CUDA GPU 加速) |
| 移动端 | Android(预编译 APK)、iOS、鸿蒙(预编译 HAP) |
| 嵌入式 | arm、aarch64、riscv64 交叉编译指南 |
| 浏览器 | WebAssembly(Hugging Face 在线可试) |
| 框架集成 | Flutter、Tauri、Node.js addon |
更难得的是能力面不止识别:语音合成(Kokoro、Matcha、VITS 等十余个 TTS 家族)、说话人识别与分离、关键词唤醒、标点恢复、音频事件分类、语音降噪、语种识别——一个运行时装下整条语音链路。文档站甚至为 Lazarus(Free Pascal 的可视化 IDE)写了从字幕生成到跨平台截图的完整教程,这种"小众需求也认真覆盖"的风格,在开源项目里相当罕见。
社区运营同样成体系:微信群、QQ 群、B 站频道、YouTube 频道并行维护,中文教程区收录了大量第三方实战文章——从 RV1126 嵌入式移植到 Unity 实时双语识别,国产硬件与游戏引擎的适配案例一应俱全。
5、嵌入式实测
文档站为多块开发板提供了实测数据页,包括树莓派 3B、Jetson Nano、Jetson NX 与 RISC-V 架构的 VisionFive 2。测量指标是 RTF(实时率,处理一秒音频所需的秒数),RTF 小于一即具备实时能力。树莓派 3B 这类 Cortex-A53 低功耗板在单线程下即可用小模型跑实时识别,Jetson 系列则可通过增加线程数压低 RTF。
sherpa-ncnn 的小模型策略是这些成绩的基础:14M 参数的中文流式 Zipformer、20M 的英文版本、更小的中英双语变体——数十兆的模型配合 int8 量化,让离线语音识别塞进了几块钱的嵌入式芯片。SenseVoice 五语种模型在 RK3588 上也有专门的速度测试页。从 RISC-V 开发板到旗舰手机,同一套 API 与模型格式贯穿始终,这是"全家桶"三个字的实际含义。
6、上手路径
以 Python 用户为例,最小可用流程如下:
# 安装(CPU 版预编译轮子)
pip install sherpa
# sherpa-onnx 全功能版
pip install sherpa-onnx
安装后从 Hugging Face 拉取预训练模型即可开始解码文件或麦克风实时识别,文档站为每个模型都配了"下载、解码单个文件、麦克风实测"三段式教程。不想装任何东西的读者,可以直接打开官方在 Hugging Face Spaces 的 WebAssembly 演示页,浏览器里体验完整识别流程。
进阶路线按需求分层:做语音助手读流式 Zipformer 教程与关键词唤醒;做字幕工具走 VAD 加非流式模型组合;做端侧 App 参考 Android 与 iOS 的预编译示例;训自己的模型则回到 icefall——家族三层结构让每种深度的需求都有明确的入口。
7、选型对比
开源语音部署的几个主流选项对比如下:
| 方案 | 定位 | 优势 | 短板 |
|---|---|---|---|
| sherpa 家族 | 端侧全栈 | 平台最广、能力最全、中文生态好 | 训练链路要回到 icefall |
| whisper.cpp | 单模型推理 | Whisper 生态、社区极活跃 | 仅识别无合成、流式弱 |
| FunASR | 阿里系工具链 | Paraformer 中文精度高 | 平台覆盖不及 sherpa-onnx |
| vosk | 老牌离线识别 | 稳定、接口简单 | 模型较旧、能力面窄 |
选型直觉:要"一个方案覆盖识别、合成、唤醒、说话人"选 sherpa-onnx;只要 Whisper 系识别选 whisper.cpp;追求中文识别极致精度可 FunASR 与 sherpa 组合——FunASR 训练导出、sherpa-onnx 部署,两条路线并不互斥。
8、总结
sherpa 家族用三层仓库完成了语音技术从实验室到口袋的搬运:icefall 管训练、sherpa 管 PyTorch 推理、sherpa-onnx 与 sherpa-ncnn 管全平台落地,统一的模型格式与 API 让一条链路贯通从 RISC-V 开发板到 GPU 服务器。对想上手端侧语音的开发者,建议从浏览器演示页开始感受,再用 Python 包跑通第一个文件转写;对做产品的团队,Android 与鸿蒙的预编译示例是最快的集成路径。语音交互正在成为 AI 应用的默认输入方式,这个把"离线、实时、多平台"做到极致的项目,值得放进每个语音项目的技术选型清单。


