
Sherpa Onnx TTS 实战指南跨平台文本转语音从模型选择到落地部署【免费下载链接】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 语音合成格式同一个模型文件在 Android、iOS、macOS、Windows、Linux 上都能跑离线可用不依赖网络接口。本文按先跑通、再选模型、后调参、最后部署的顺序带你把第一条语音合成出来并给出调参速查和常见坑位。5 分钟跑通第一条合成语音最短路径只有四步拉代码、装包、下模型、跑脚本。git clone https://gitcode.com/GitHub_Trending/sh/sherpa-onnx cd sherpa-onnx pip install sherpa-onnx soundfile模型不用自己训练去 sherpa-onnx 仓库的 Releases 页面tts-models标签下挑一个下载解压即可。这里用支持中英混合的 Kokoro 多语言模型举例curl -SL -O tts-models 下的 kokoro-multi-lang-v1_0.tar.bz2 地址 tar xf kokoro-multi-lang-v1_0.tar.bz2然后写一段最小脚本对照 python-api-examples/offline-tts.py 里的参数写法import sherpa_onnx import soundfile as sf base ./kokoro-multi-lang-v1_0 config sherpa_onnx.OfflineTtsConfig( modelsherpa_onnx.OfflineTtsModelConfig( kokorosherpa_onnx.OfflineTtsKokoroModelConfig( modelf{base}/model.onnx, voicesf{base}/voices.bin, tokensf{base}/tokens.txt, data_dirf{base}/espeak-ng-data, lexiconf{base}/lexicon-us-en.txt,{base}/lexicon-zh.txt, ) ), num_threads2, debugTrue, ) tts sherpa_onnx.OfflineTts(config) gen sherpa_onnx.GenerationConfig() gen.sid 18 # 说话人编号 gen.speed 1.0 # 语速 gen.silence_scale 0.2 audio tts.generate(Hello 世界这是一次离线 ONNX 语音合成测试。, gen) sf.write(out.wav, audio.samples, audio.sample_rate, subtypePCM_16) print(f时长 {len(audio.samples)/audio.sample_rate:.2f}s)跑完得到out.wav中英混排在同一条音频里切换中间不用切语言模式。如果想边跑边听仓库里还有 python-api-examples/offline-tts-play.py会在生成后直接播放。中文 TTS 模型怎么选一张决策表模型不用全试先按语言和场景对号入座需求推荐模型特点注意纯中文、多说话人VITS-icefall-zh-aishell3中等体积音色编号较多建议配tts-rule-fsts处理日期数字中文日常朗读sherpa-onnx-vits-zh-ll中文专用带 FST 规则同样建议配 rule FSTs中英混排Kokoro multi-lang一套模型覆盖两种语言体积偏大需同时给两个 lexicon只读英文、要轻Kitten (fp16)体积最小速度最快仅英文英文通用场景VITS-Piper如 en_US-amy-low体积适中低质量档适合快速验证追求中文音质Matcha Vocos音质上限更高要额外下载声码器 vocoder 文件选型建议一句话先拿最小模型验证链路再换大模型冲音质。Kokoro 多语言模型里sid18是官方示例默认音色换sid可以切换不同说话人但注意单说话人模型比如基于 LJSpeech 训练的英文 VITS不认sid传了也不生效。关键参数速查表调参不用翻文档先记住这几个旋钮参数调什么经验值影响sid说话人音色多说话人模型常见 0~50只影响音色不影响速度speed语速0.8~1.2超出范围容易变调、发闷num_threads推理线程数手机 1~2桌面 2~4太多线程在核少的设备上反而更慢provider计算后端cpu/cuda/coremlmacOS 上 coreml 通常比纯 CPU 快tts-rule-fsts文本正则化中文模型配 phone/date/number 三个 FST不配的话日期、电话、金额读法会出错max_num_sentences单批处理句数默认 1防长文本 OOMCPU 上小值并不更慢还有一个必须看的指标RTF实时因子 合成耗时 / 音频时长。offline-tts.py每次都会打印比如1.314/4.304 0.305。小于 1 就是实时合成0.3 意味着 3 秒 CPU 时间合成 10 秒音频余量很足。多端部署要点核心逻辑各端通用差别只在打包方式和文件放置位置Android完整示例在 android/SherpaOnnxTtsKokoro 多语言模型的配置model 目录、data_dir、双 lexicon在MainActivity.kt里有注释好的现成写法。模型文件放 assets 或下载到本地目录均可量化版本如model.fp16.onnx能明显压低内存。播放生命周期跟着 Activity 走页面销毁时记得停掉生成与播放避免音频焦点被占住。iOS / macOSSwift 示例看 ios-swiftui/SherpaOnnxTts 和 swift-api-examples 目录。真机调试前先跑通模拟器签名问题provisioning profile是 iOS 最常见的假故障。桌面Windows / Linux / macOSPython 脚本就是最灵活的桌面方案--provider cudaNVIDIA 卡或coremlmacOS能显著拉低 RTF。不想写 Pythonc-api-examples 和 cxx-api-examples 里每个模型都有对应的 C/C 版本可直接编译。想五端一套 UI用 Flutter 示例 flutter-examples/tts模型放进assets后记得运行generate-asset-list.py让 Flutter 认识新文件。踩坑与排查按现象 → 原因 → 处理对一下号现象generate返回空音频日志提示生成失败原因模型路径不完整或OfflineTtsConfig.validate()没过Kokoro 需要 model/voices/tokens 三者齐全。处理先单独检查每个文件存在多语言 Kokoro 还差一个双 lexicon 字段缺了它中文就不出声。现象中文里的日期、电话、金额读得很怪原因没传tts-rule-fsts。处理中文 VITS 模型包里通常带phone.fst、date.fst、number.fst用逗号拼进配置offline-tts.py的示例 2、3 都是这么写的。现象长文本合成时内存暴涨甚至 OOM原因整段文本被当成一批句子处理。处理把max_num_sentences调小默认 1 就是按句切批CPU 上不会因此变慢。现象语速调到 1.5 以上声音发尖、发飘原因超出模型训练时覆盖的语速区间。处理speed控制在 0.8~1.2想要节奏变化优先改标点断句而不是硬拉语速。现象Flutter 在 Linux 上构建报缺gstreamer-1.0原因系统缺音频播放依赖与模型无关。处理sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev详见 flutter-examples/tts 的 README。避坑提示别在脚本里直接rm下载包之前就解压失败——先tar -tf看一眼压缩包结构确认model.onnx、tokens.txt的相对层级能省掉大量路径差一层的排查时间。下一步往哪走跑通单条语音后按需求分三条线深入流式与实时场景离线 TTS 适合批量生成需要边说边生成的场景导航、对话机器人看仓库里 WebSocket 相关的服务端示例和python-api-examples下的 websocket client 脚本把合成结果推到前端播放。自定义音色与模型scripts 目录下按模型分了子目录如kokoro/、vits/、matcha-tts/提供从训练数据到 ONNX 导出的脚本想做专属音色从这里入手。性能压榨量化fp16 版本几乎每个模型都有发布、num_threads匹配物理核数、provider切 cuda/coreml三招组合下来 RTF 通常能再降一半。各端完整示例入口汇总python-api-examples、java-api-examples、kotlin-api-examples、c-api-examples、flutter-examples。先挑一个平台把 demo 跑起来剩下的事情就是换模型、调sid、看 RTF。【免费下载链接】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),仅供参考