Sherpa Onnx TTS 跨平台语音合成指南:5 分钟跑通你的第一条语音
Sherpa Onnx TTS 跨平台语音合成指南5 分钟跑通你的第一条语音【免费下载链接】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 用 ONNX 模型做离线 TTS覆盖 Android、iOS、HarmonyOS、Windows、macOS、LinuxPython、Java、Kotlin、C、Go 等 12 种语言 API 同一套核心。读完本文会选模型、能跑通合成、知道各平台入口在哪、避开最常见的三个坑。先把模型选好5 个 TTS 模型对照选型先给结论按你的语言和设备需求对号入座模型语言适合设备体积/备注Kitten英语移动端、嵌入式较小提供 fp16 量化版VITS-Piper英语、德语通用场景中等有 low 量化版VITS-中文中文通用场景中等Matcha中文、英语桌面、服务器较大需搭配 vocoder 模型Kokoro 多语言中英混合全平台较大中英混读切换自然完整模型清单见 python-api-examples/offline-tts.py 顶部的说明里面附了每个模型的下载包名和运行命令。5 分钟跑通第一条语音这一步解决从零到听到声音。环境、模型、代码一次给全git clone https://gitcode.com/GitHub_Trending/sh/sherpa-onnx cd sherpa-onnx pip install sherpa-onnx soundfile tar xf kokoro-multi-lang-v1_0.tar.bz2模型包kokoro-multi-lang-v1_0.tar.bz2从项目 TTS 模型发布页获取发布页地址同样写在 python-api-examples/offline-tts.py 文件头注释里。解压后目录结构是model.onnx、voices.bin、tokens.txt、lexicon-*.txt、espeak-ng-data/合成时每个都要用到。下面这段 Python 直接可跑用 Kokoro 多语言模型合成中英混合文本import sherpa_onnx import soundfile as sf model sherpa_onnx.OfflineTtsModelConfig( kokorosherpa_onnx.OfflineTtsKokoroModelConfig( model./kokoro-multi-lang-v1_0/model.onnx, voices./kokoro-multi-lang-v1_0/voices.bin, tokens./kokoro-multi-lang-v1_0/tokens.txt, data_dir./kokoro-multi-lang-v1_0/espeak-ng-data, lexicon./kokoro-multi-lang-v1_0/lexicon-us-en.txt,./kokoro-multi-lang-v1_0/lexicon-zh.txt, ), num_threads2, ) tts sherpa_onnx.OfflineTts(sherpa_onnx.OfflineTtsConfig(modelmodel)) gen sherpa_onnx.GenerationConfig() gen.sid 18 gen.speed 1.0 audio tts.generate(Hello世界这是Sherpa Onnx多语言语音合成演示。, gen) sf.write(output.wav, audio.samples, audio.sample_rate) print(f已生成 {len(audio.samples)/audio.sample_rate:.2f} 秒音频)不想写代码也可以python3 ./python-api-examples/offline-tts.py --kokoro-model... 文本参数形式与上面一一对应。SID、语速、线程数、RTF 参数怎么调合成效果由四个参数决定调优前先认表参数默认建议说明sid0多说话人模型换着试不同 ID 对应不同音色Kokoro 可试 0、10、18、25speed1.00.8 ~ 1.2越大越快过高失真、过低不自然num_threads1移动 1~2桌面 2~4线程过多在弱设备上反而抢资源RTF—1 才算实时RTF 合成耗时/音频时长如 1.233/5.216 ≈ 0.233python-api-examples/offline-tts.py 运行时会自动打印 RTF拿它做基准换模型或换设备时对比即可。长文本建议保持max_num_sentences默认值 1按句分批避免一次性塞长句导致 OOM。AndroidTTS 示例应用的入口在哪入口在 android/SherpaOnnxTts/一个完整的 Kotlin 示例 App核心逻辑在MainActivity.ktUI 包含文本输入、Speaker ID 滑块、生成/播放按钮。一个必须注意的点Android 上模型文件放在 assets 里会显著增加包体积并占用内存优先用量化版本如 Kitten 的 fp16 包并在页面销毁时释放 TTS 实例别把模型常驻在内存里。C 层的对应实现可对照 c-api-examples/kokoro-tts-zh-en-c-api.c。iOS、macOS、Windows、Linux入口在哪iOS / macOSSwift 示例在 ios-swiftui/SherpaOnnxTts/SwiftUI 直接调用 sherpa-onnx 的 Swift 接口。必须注意的点espeak-ng-data整个目录要完整打进 App 包漏一个phondata之类的文件validate()直接失败合成不出声音。Windows / macOS / Ubuntu用 Flutter 跨平台示例 flutter-examples/tts/一套 Dart 代码三端出包。注意 Linux 端录音/播放依赖系统音频服务容器里跑要先确认 PulseAudio 可用。下面三张是同一套 Flutter 示例在 Windows、macOS、Ubuntu 上的实际运行界面输出区会直接给出耗时、时长和 RTF更多语言的同一能力入口Java 看 java-api-examples/NonStreamingTtsKokoroZhEn.javaGo 看 go-api-examples/non-streaming-tts/C 看 cxx-api-examples/kokoro-tts-zh-en-cxx-api.cc。三个高频坑现象 → 原因 → 对策现象Error in generating audios生成的 wav 是空的。原因模型文件不全OfflineTtsConfig.validate()检查model.onnx、voices.bin等文件是否真实存在缺一个就静默失败。对策先打印config.validate()结果对照模型包目录逐项核对路径中英文模型混用拿英文 Kokoro 读中文也会出空音。现象中英混合文本里中文读出来像乱码或发音怪异。原因用了只支持英语的kokoro-en包或漏传了中文 lexicon。对策换kokoro-multi-lang-v1_0并且lexicon里同时给lexicon-us-en.txt和lexicon-zh.txt逗号分隔这是多语言版与单语版最大的配置差异。现象桌面端 RTF 还远小于 1手机上进长句 RTF 1 卡住。原因线程数照搬桌面配置弱核上抢资源长文本一次进模型。对策移动端num_threads降到 1~2max_num_sentences保持按句分批再不行换 Kitten fp16 这类小模型。接下来做什么一句话总结Sherpa Onnx TTS 让你用一套 ONNX 模型和同构的 12 语言 API把离线文本转语音落到手机、桌面和嵌入式设备上。下一步先按本文把 Kokoro 多语言模型跑通再用--sid换三个音色对比最后挑一个目标平台Android 或 Flutter把示例 App 编译跑一遍。模型细节可继续看 scripts/kokoro/ 下的转换脚本。【免费下载链接】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),仅供参考