ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

离线语音合成难做吗?Sherpa Onnx TTS 跨平台落地的简单路线

离线语音合成难做吗?Sherpa Onnx TTS 跨平台落地的简单路线 离线语音合成难做吗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做语音朗读功能时不少工程师卡在第一步云端 TTS 接口绑定网络并按次计费系统自带的 TTS 在 Android、iOS、Windows、macOS、Linux 上行为又不一致一套功能要维护五份代码。Sherpa Onnx TTS 是一个离线跨平台语音合成引擎用 ONNX 模型在本地把文本读成音频同一套模型文件可以在多个操作系统之间通用。一页看懂Sherpa Onnx TTS 能做什么Sherpa Onnx TTS 是纯本地运行的语音合成引擎能力边界可以概括为一句话输入文本输出 wav全程不依赖网络。离线生成模型启动时加载进内存合成过程不请求任何外部服务无网设备也能用。模型无关VITS、Matcha、Kokoro、Kitten 等多家族声学模型都支持换模型只改配置。多说话人多说话人模型通过整数 SID 参数切换音色一个模型能读多种声音。中英混读Kokoro 多语言版本对同句中英混合的文本直接处理不用手动切分语言。多端统一项目提供 Python、C、C、Java、Kotlin、Go、Swift 等 12 种语言的 API同一份模型文件各端直接复用。 十分钟跑通第一句语音最短验证路径是 pip 包加项目自带的 offline-tts.py 示例从克隆到产出第一个 wav 不超过十分钟。先做四步环境准备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 # 把已下载的模型解压到项目根目录模型压缩包是项目预训练 TTS 模型包之一对应的下载命令就列在 python-api-examples/offline-tts.py 文件头部注释里不用到处找。解压后 kokoro-multi-lang-v1_0/ 目录里应有 model.onnx、voices.bin、tokens.txt、espeak-ng-data/ 和两个 lexicon 文件这五样是跑通 Kokoro 多语言的最小输入。如果要嵌进自己的业务代码下面是等价的 Python 最小调用import sherpa_onnx, soundfile as sf m ./kokoro-multi-lang-v1_0 # 已解压的模型目录 kokoro sherpa_onnx.OfflineTtsKokoroModelConfig( modelf{m}/model.onnx, voicesf{m}/voices.bin, tokensf{m}/tokens.txt, data_dirf{m}/espeak-ng-data, lexiconf{m}/lexicon-us-en.txt,{m}/lexicon-zh.txt, # 中英混读需要词典 ) cfg sherpa_onnx.OfflineTtsConfig( modelsherpa_onnx.OfflineTtsModelConfig(kokorokokoro, num_threads2), ) audio sherpa_onnx.OfflineTts(cfg).generate(你好世界这是一次离线语音合成演示。, 18, 1.0) sf.write(out.wav, audio.samples, audio.sample_rate)generate 的第二个参数是说话人 ID第三个是语速。跑完后当前目录会多出 out.wav采样率由模型自身决定Kokoro 系列输出 24 kHz 音频。 语音模型选型对照表五大模型家族选型只看语言、体积、音质三件事下表覆盖最常见的五个家族模型家族适用场景语言体积VITS-Piper轻量通用资源受限环境首选英语、德语中等low 版本更小VITS中文纯中文朗读中文中等Kokoro 多语言中英混合文本、需要多音色中文、英语等较大含 voices.binMatcha对音质要求较高的场景中文、英语较大需另配 vocoderKitten轻量英语合成英语较小有 fp16 版本判断逻辑很简单只做单语种就选 VITS-Piper 或中文 VITS体积最小文本含中英混合直接上 Kokoro 多语言版音质再往上走一步用 Matcha注意它必须搭配 vocos-22khz-univ.onnx 这类声码器。参数调优速查SID、speed、num_threads、RTF真正需要调的参数只有四个调到位就能解决大部分合成效果问题。SID说话人 ID仅多说话人模型生效决定音色与语调单说话人模型会直接忽略这个参数。Kokoro 多语言支持的 ID 范围较大可以试 0、18、25 几个值以试听效果为准。speed语速倍数越大读得越快。0.8 到 1.2 区间最稳超出范围容易出现失真或听感不自然。num_threads神经网络计算的 CPU 线程数默认 1。移动设备用 1 到 2 防止发热卡顿桌面端用 2 到 4 提升吞吐。RTF实时因子合成耗时与音频时长的比值小于 1 才算实时越小越好。offline-tts.py 会直接打印该值方便建立自己的性能基线。三条部署路线从移动端到嵌入式同一套模型文件可以走三条落地路线差别只在外壳。移动端Android / iOSAndroid 可直接运行的示例在 android/SherpaOnnxTts/Kotlin 编写通过 JNI 调 C 层iOS 版在 ios-swiftui/SherpaOnnxTts/是纯 SwiftUI 工程。端上优先选量化版模型控制内存音频播放的生命周期与麦克风权限按平台惯例处理即可。桌面端Windows / macOS / Linux最快路径仍是 python-api-examples/ 目录里的 offline-tts.py命令行即工具需要图形界面时仓库里的 Flutter 与 Tauri 示例可以直接构建为桌面应用。嵌入式仓库根目录提供 ARM 32/64 位、RISC-V、RK NPU 等专属构建脚本如 build-arm-linux-gnueabihf.sh、build-riscv64-linux-gnu.sh、build-rknn-linux-aarch64.shC 语言集成可直接参考 c-api-examples/ 中的 offline-tts-c-api.c是嵌入式侧最轻量的入口。常见坑一次排完合成慢、音质差、内存高问题最多的三类现象按下面的顺序排查。合成慢RTF 大于 1num_threads 停留在默认 1多核桌面机改成 2 到 4 通常最有效用了 fp32 完整模型可换 fp16 或 int8 量化版例如 Kitten 就提供 fp16 版本长文本一次性合成用 --max-num-sentences 限制批大小内存和时间都不会飙升。音质差、发音怪模型与语言不匹配把中文喂给仅支持英语的 Kokoro en 版必然出错应换 multi-lang 版本lexicon 或 espeak-ng-data 没有配齐中文发音会退化检查模型目录五件套是否完整固定某一个 SID 就下结论先换 3 到 5 个不同 ID 试听排除音色偏好问题。内存占用高、OOM大模型常驻内存换量化版本或改选更小的模型家族多条长句批量进入用 max_num_sentences 分批常驻服务同时持有多个 TTS 实例用完即释放按需重建。下一步去哪儿三个入口跑通第一句语音之后后续路线是明确的。示例代码python-api-examples/ 目录中 offline-tts.py 内置 8 个 TTS 用例覆盖本文五个模型家族命令行参数均可直接复用。官方文档地址标注在根目录 README.md 的 Useful links 一节模型清单、参数说明与跨平台构建指引比本文更全。上游仓库克隆地址见开头代码块新版本与模型发布历史都可以从 release 页面跟踪。Sherpa Onnx TTS 把跨平台离线语音合成从多套代码的问题降为一套模型的问题。建议先在 offline-tts.py 里跑通第一句中英混合语音再决定模型与部署路线。【免费下载链接】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),仅供参考
返回列表