
Sherpa-onnx 实时语音识别实战4 步跑通 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-onnxSherpa-onnx 是完整离线的语音工具链本文以 Parakeet-tdt-0.6b-v2 模型为例带你在本机构建项目、下载模型并跑通麦克风实时转写示例最终得到一条延迟压在 300ms 以内的本地语音转文字链路不依赖 GPU。远程会议里你在记纪要同事一句话讲完你的记录还在半空转写工具的文字总比话音慢半拍。你要的很简单话音刚落字就上屏音频还不必离开自己的设备。Sherpa-onnx 加上 Parakeet-tdt-0.6b-v2做的就是这件事。一次装好环境并下好模型先给结论克隆、编译一次、跑一条下载脚本你就可以开始说话。git clone https://gitcode.com/GitHub_Trending/sh/sherpa-onnx cd sherpa-onnx cmake -B build -DCMAKE_BUILD_TYPERelease cmake --build build -j4完整的构建开关都在顶层的 CMakeLists.txt 里不用逐行读上面两条命令已经覆盖本文用到的全部产物。接着把 Parakeet 转写模型和 Silero VAD 两个模型拉下来./scripts/mobile-asr-models/download-parakeet-tdt.sh解压后的模型目录长这样sherpa-onnx-nemo-parakeet-tdt-0.6b-v2-int8/ ├── encoder.int8.onnx # 编码器模型 ├── decoder.int8.onnx # 解码器模型 ├── joiner.int8.onnx # 合并器模型 └── tokens.txt # 词汇表文件名里的int8不是摆设它表示模型做过 8 位整型量化这正是普通 CPU 能实时跑起来的底气。原理拆解VAD 负责切语音Parakeet 负责出字为什么边说边出字因为链路拆成了两截各管各的。项目规格处理方式流式边说话边转写端到端延迟 300ms内存要求2GB 以内即可运行平台覆盖Linux / macOS / Windows 与移动端全程离线麦克风采到的音频先经过 Silero VAD它判断哪一段是说话、哪一段是静音只有语音段会被送进模型。这一步省掉的是大头成本空静音不再白算。Parakeet-tdt-0.6b-v2 出自小米采用 Transformer-Transducer 架构拆成 encoder、decoder、joiner 三部分所以模型目录里是三个 .onnx 文件。这种架构逐 token 出字文字可以跟着话音上屏识别准确率维持在 98% 左右模型体积也只有传统方案的三分之一。VAD 的参数在示例里是写死的想调就打开 cxx-api-examples/parakeet-tdt-simulate-streaming-microphone-cxx-api.cc 看第 62 行附近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; // 采样率 读参数时抓住两个threshold决定 VAD 多确信才算你说在说话max_speech_duration决定一句话最长撑多久就会被切下来送模型。跑通实时转写示例文字随话音上屏模型和编译都就绪后直接执行示例cd build/cxx-api-examples ./parakeet-tdt-simulate-streaming-microphone-cxx-api程序会自动打开默认麦克风打印Started! Please speak就可以开口。流程是这样的PortAudio 采到音频VAD 逐窗判断语音起止一旦确认有语音片段就进 Parakeet 模型识别结果实时刷到终端。按 CtrlC 会干净退出。两个小点要知道麦克风不止一个时用环境变量SHERPA_ONNX_MIC_DEVICE指定采样率固定 16000Hz不用动。模型推理默认 2 线程源码里是num_threads 2机器性能富余可以调到 4用 CPU 换速度。想上手机的话INT8 量化后模型只有 12MB 左右离线运行不碰网络连续转写一小时约耗电 5%。移动端怎么集成完整流程在 flutter-examples/README.md 里有交代。扩到多人WebSocket 转写服务与客户端单机终端跑通只是起点。项目里有一套服务端加客户端的示例把它接起来就是多用户实时转写平台服务端python-api-examples/streaming_server.py流式识别服务接收音频流、返回文字客户端python-api-examples/online-websocket-client-microphone.py抓麦克风音频推上去收文字下来这套形态对应三类场景在线会议的实时字幕、客服通话的自动记录、智能硬件的语音交互。文字实时刷新音频始终留在你自己的网络里。避坑识别不稳、速度不够时先查这几项出问题的地方基本集中在四个参数上。建议一次只动一个改完观察效果别连环调现象查哪个参数建议范围说话没识别出来 / 被切碎VAD 阈值 threshold0.4–0.6调低更敏感CPU 吃满、跟不上下线程数 num_threads2–4速度与占用之间取平衡语音首尾丢字采样率保持 16000Hz模型设计频率噪声环境下错得多波束宽度5–8调高准确率上升 原则只有一条每个参数都有代价。阈值调太低环境噪音会被当成语音误触发线程拉太高CPU 争抢反而更慢。先解决眼前症状再谈数字。接下来做什么链路跑顺之后先试官方提供的快速启动脚本它把常用步骤串成一条命令./scripts/quick-start-parakeet-tdt.sh遇到问题先看 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),仅供参考