news 2026/10/13 1:44:55

让语音识别和 TTS 彻底离线:新手完整上手指南 sherpa-onnx

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
让语音识别和 TTS 彻底离线:新手完整上手指南 sherpa-onnx

让语音识别和 TTS 彻底离线:新手完整上手指南 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 是一个基于 next-gen Kaldi(新一代 Kaldi 语音处理工具链)和 ONNX Runtime(微软开源的深度学习推理引擎)的开源项目,可以把语音转文字(ASR)、文字转语音(TTS)、说话人识别、声音活动检测(VAD,即判断"现在有没有人在说话")等语音任务完全放在本地设备运行——不需要联网,也不需要调用任何云端 API。它支持 Android、iOS、HarmonyOS、树莓派、RISC-V、RK/Ascend 等 NPU 以及 x86_64 服务器,并提供 C++、C、Python、Java、Kotlin、Swift、Go、Rust 等 12 种语言的 API。

先说一个典型场景

你正在做一个会议纪要工具、字幕生成器,或者一台放在工厂车间里的语音质检设备。云识别 API 在这里有三个绕不开的麻烦:

  • 流量和费用:长期录音上传,按量计费会是一笔持续开销
  • 隐私:音频数据过服务器,敏感内容出不了内网
  • 延迟:网络抖动直接影响实时字幕的流畅度

sherpa-onnx 的思路是把整个推理过程搬到设备本地:模型以 ONNX 格式(一种跨平台的模型文件标准)打包,下载一次后永久离线使用。项目自带的 Android 预构建 APK 覆盖了流式识别、VAD、TTS、唤醒词等几乎所有功能,可以直接装在手机上体验,不用先写一行代码。

它能做哪些事

核心能力围绕一条完整的语音处理链路,仓库根目录 README.md 中有完整清单:

任务说明典型用途
语音转文字(流式 + 非流式)支持 Whisper、Paraformer、SenseVoice 等模型实时字幕、会议转写
文字转语音Piper、Matcha、Kokoro 等 TTS 模型语音播报、有声书
声音活动检测(VAD)自动切出"有人说话"的片段降低空音频的识别开销
说话人识别 / 分离区分"谁在说"多方言会议记录
语音增强、声源分离降噪、人声与背景分离嘈杂环境识别
关键词唤醒、标点恢复自定义唤醒词、给文本加标点智能音箱、字幕排版

下面这张图是它基于 WebAssembly 编译后在浏览器里运行的离线语音识别演示界面(源码在 python-api-examples/web/),左侧是上传文件识别,右侧是实时录音识别——连服务器端都不需要,纯前端完成:

🎙 场景一:实时转写与字幕

实时场景用"流式"模型(streaming,也叫 online):麦克风音频按小块持续送入,边说边出结果。仓库提供了可直接运行的完整示例:

  • flutter-examples/streaming_asr/:跨 Windows、macOS、Linux、Android、iOS 的实时识别 App
  • python-api-examples/streaming_server.py:WebSocket 服务端,浏览器端实时转写
  • flutter-examples/vad-non-streaming-asr-from-microphone/:VAD + 非流式模型组合,适合长录音

非实时场景(比如处理已有的录音文件)则用"非流式"模型(non-streaming):精度通常更高,但需要整段音频就绪后一次性出结果。两类模型在仓库的预训练模型列表里都有中英双语的现成选项。

🎧 场景二:离线文字转语音

TTS 这条线同样完整。下面三张截图来自同一个 Flutter 示例项目 flutter-examples/tts/,分别在 Ubuntu、Windows 上离线合成中文语音,界面上直接显示 RTF(Real-Time Factor,生成耗时与音频时长的比值,越接近 0 越快):

除了常规 TTS,它还包含 ZipVoice、Pocket TTS 这类零样本语音克隆模型,用几秒参考音频就能生成近似音色,相关示例见 python-api-examples/zipvoice-tts.py。

最短路径跑起离线语音识别

如果你是新手,推荐 Python 作为入门语言,三步走:

  1. 装库:pip install sherpa-onnx
  2. 下模型:从项目 Releases 页面的 asr-models 标签下载一个流式或非流式模型包(.tar.bz2,解压即用,不需要训练)
  3. 跑示例:仓库的 python-api-examples/ 下有几十个按任务划分的脚本,python3 脚本名.py --help即可看到参数说明,比如 offline-decode-files.py 可以批量转写 wav 文件并打印 RTF

最小可用的转写逻辑只有这么几行(完整示例可对照上述脚本):

import sherpa_onnx recognizer = sherpa_onnx.OfflineRecognizer.from_paraformer( paraformer="model.onnx", tokens="tokens.txt", num_threads=4, ) s = recognizer.create_stream() s.accept_waveform(16000, samples) # 送入 16kHz 音频采样 recognizer.decode_streams([s]) print(s.result.text) # 输出识别文本

其他语言的入口也都有现成目录可以照着改:C/C++ 看 c-api-examples/ 和 cxx-api-examples/,移动端看 android/、ios-swiftui/、harmony-os/,还有 go-api-examples/、rust-api-examples/、nodejs-examples/、dotnet-examples/ 等,API 设计和 Python 版基本一一对应。

和同类方案比,差在哪

简单对比一下三类常见路线:

方案部署成本隐私弱网/离线可用性备注
云端 ASR/TTS API低(按量付费)音频上云不可用精度上限高,但受网络和费用约束
自训模型 + 自建推理服务高(需训练和运维)可控可用工程量大,适合有算法团队的团队
sherpa-onnx中(下载现成 ONNX 模型)完全本地可用免训练,模型跨平台同一份

它的关键差异点有三个:

  • 模型标准化:同一个 ONNX 模型文件,从 x86 服务器到手机、树莓派、NPU 设备都能跑,不用为每个平台重新导出
  • 流式与非流式双形态:实时和离线是两种不同的工程问题,这里用统一 API 覆盖,还内置 VAD 帮你组合出"静音检测 + 识别"的完整链路
  • 语言覆盖广:12 种语言绑定 + Flutter/Tauri 框架集成,同一套功能在移动端 App、桌面应用和 Web 里的写法差异不大

需要说明的短板:它的精度上限取决于所选模型本身,超大规模、多语种通用的场景(比如 Whisper large 级别的效果)仍需挑选合适模型并在设备上验证耗时;另外它不提供端到端的"语音助手",意图理解、对话逻辑要自己接 LLM 或其他组件。

适合谁用

  • 适合:做移动端 App、智能硬件、会议/字幕工具、边缘设备语音功能的开发者;对数据不出内网有硬性要求的场景(工厂、医疗、教育设备);想在没有 GPU 的设备上做低成本推理的团队
  • 不适合:只想调 API、不想碰模型文件的纯业务方;追求极致精度且算力充足、可以直接上云端大模型的团队

开始动手

把仓库克隆到本地,挑一个语言目录对照 python-api-examples/ 的脚本结构跑通第一个示例即可:

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

仓库内各语言的示例目录本身就是最直接的文档,配合根目录 README.md 中的预训练模型清单,从下模型到出结果的完整路径都很短。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 1:44:40

NSIS+DuiLib自定义安装界面:插件集成与整窗接管实践

简介:NSIS与Duilib结合的自定义安装程序开发素材包,主要面向需要美化Windows安装界面的中高级开发者,解决默认NSIS安装界面样式单一、难以贴合产品品牌视觉的问题。压缩包共451个文件,体积约9.6MB,类型覆盖113个PNG位图…

作者头像 李华
网站建设 2026/10/13 1:44:22

四步给老 Mac 装新版 macOS,附检查清单

四步给老 Mac 装新版 macOS,附检查清单 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher 是给停更 Intel Mac 打补丁的工具…

作者头像 李华
网站建设 2026/10/13 1:44:14

AI编程进入交付竞争:从写代码到交代码,团队产能提升的关键

Cursor 写了个挺漂亮的前端页面,Copilot 帮我补完了那个一直卡着的排序算法,组里也有人用 Trae 五分钟搭了个内部小工具——听起来很美,对吧?但真把这些代码往主干合的时候,问题全来了:格式乱得没法 review…

作者头像 李华
网站建设 2026/10/13 1:43:32

C语言实现斗牛发牌器:Fisher-Yates洗牌算法与随机数实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/13 1:42:46

CAN通信学习路径:从物理层到应用层的避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/13 1:42:39

洛谷竞赛题解工程化:CMake驱动的可执行电子书

简介:本资源是面向程序设计竞赛初学者的系统性学习材料,源自《洛谷深入浅出程序设计竞赛(基础篇)》配套代码实践包,聚焦算法入门、数据结构实现与典型赛题解法训练,适用于高校编程新手、信息学奥赛备赛学生…

作者头像 李华