Parakeet-tdt-0.6b-v2 实时语音识别快速指南
【免费下载链接】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 是一个不依赖联网的本地语音工具箱,把小米开源的 Parakeet-tdt-0.6b-v2 模型接进来之后,它能在普通 CPU 上做到延迟低于 300ms 的实时语音识别——边说边出文字,全程无网络请求。这篇指南讲清楚:它适合谁、三步跑起来、参数怎么调。
它是什么,为什么值得试
Parakeet-tdt-0.6b-v2 是小米发布的轻量级语音识别模型,sherpa-onnx 将其转换为 ONNX 格式本地推理(ONNX 是跨平台模型格式,一套文件到处能跑),主要面向英文场景。
- 架构:Transformer-Transducer,识别准确率 98%,模型体积压缩到传统方案的 1/3;
- 量化方式:INT8(把浮点权重压成 8 位整数),CPU 即可实时跑,无需 GPU;
- 资源占用:整套运行约需 2GB 内存;
- 平台覆盖:Linux / macOS / Windows,Android、iOS 等移动端同样支持。
5 分钟跑通实时识别
只需三步:克隆仓库、下载模型、运行示例。
git clone https://gitcode.com/GitHub_Trending/sh/sherpa-onnx cd sherpa-onnx cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j4模型与 VAD 文件的获取命令写在示例文件头部注释里,见 cxx-api-examples/parakeet-tdt-simulate-streaming-microphone-cxx-api.cc:下载silero_vad.onnx和sherpa-onnx-nemo-parakeet-tdt-0.6b-v2-int8.tar.bz2,解压后与二进制文件放在同一目录。然后:
./build/cxx-api-examples/parakeet-tdt-simulate-streaming-microphone-cxx-api程序打开默认麦克风,对终端说话,文字实时打印出来。构建选项可在 CMakeLists.txt 中查看。
从麦克风到文字:数据流全解
整条链路可以拆成四段:
1. 采音:PortAudio 以 16000Hz、单声道从麦克风抓声音(16kHz 是语音识别的常用采样率),若设备采样率不同,程序内部会线性重采样对齐。
2. VAD 切句:VAD 是一个小分类模型,负责判断"哪段是人声、哪段是静音"。音频按 512 个采样点的窗口送入 VAD;检测到起声后开始累积缓冲,静音持续超过设定时长就把整句送入结果队列。下面的配置来自示例的CreateVad(),核心就几行:
VadModelConfig config; config.silero_vad.model = "./silero_vad.onnx"; config.silero_vad.threshold = 0.5; // 人声判定阈值 config.silero_vad.min_silence_duration = 0.25; // 静音多久算一句话说完 config.silero_vad.min_speech_duration = 0.25; // 太短的人声片段直接丢弃 config.silero_vad.max_speech_duration = 5; // 一句话说太长就强制切分 config.sample_rate = 16000;3. 三段式解码:模型分为 encoder(把音频变成声学特征)、decoder(把特征变成文本)、joiner(把前两者的输出对齐融合),配合tokens.txt词表,model_type设为nemo_transducer加载。
4. 终端输出:说话期间,每 0.2 秒把当前缓冲送一次识别器,得到"中间结果"即时显示;VAD 切出完整句子后做最终解码,整句定稿。这就是"边说边出字"的实现方式。
4 个参数调到位
| 参数 | 建议值 | 作用 |
|---|---|---|
| VAD threshold | 0.4–0.6 | 人声判定灵敏度;调低更灵敏,但环境噪声容易被误判为人声 |
| 解码线程数 | 2–4 | 平衡推理速度与 CPU 占用,对应num_threads |
| 采样率 | 16000 | 麦克风采集与模型输入统一用这个值 |
| 波束宽度 | 5–8 | 搜索候选路径的宽度,噪声环境下有助于提升准确率 |
调参顺序建议:先动 VAD 阈值和静音时长(解决"断句不对"),再动线程数(解决"跟不上语速")。
从 PC 到手机、再到服务
- 移动端:flutter-examples/README.md 里有 VAD 加非流式识别的麦克风示例,覆盖 iOS / Android,模型以离线方式打包进 App;
- 服务端:python-api-examples/streaming_server.py 是 WebSocket 流式识别服务,多客户端可同时接入,浏览器端界面效果如下。
适合做什么
- 会议实时字幕:说话结束前文字已经出来,离线环境同样可用;
- 直播字幕:低延迟语音转文字,不依赖云端 API;
- 智能硬件语音输入:树莓派、嵌入式设备等资源受限平台;
- 客服录音转写:批量处理本地音频文件。
选型提示:如果你的场景要求本地离线、低延迟、纯 CPU 可跑,它就是当前 sherpa-onnx 中值得优先考虑的方案。
下一步
把示例换掉麦克风输入、接上自己的业务代码,就是一个可用的实时转写服务。体验命令见上文"5 分钟跑通"一节;版本更新看 CHANGELOG.md,问题与讨论可直接提 Issue。
【免费下载链接】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),仅供参考