kokoro 82M参数的声音模型kokoro-onnx,支持中文

kokoro大约是官网:github.com

 onnx推理官网:GitHub - thewh1teagle/kokoro-onnx: TTS with kokoro and onnx runtime

可以参考这个文档使用:Kokoro-82M 实战:最强 TTS 开源模型 Windows 本地极简部署完全攻略_kokoro tts 本地部署-CSDN博客

实践下来英文不错,中文还欠缺些。 

 kokoro 82M参数的声音模型介绍

❤️ Kokoro Discord Server: https://discord.gg/QuGxSWBfQy

📣 Got Synthetic Data? Want Trained Voicepacks? See https://hf.co/posts/hexgrad/418806998707773

Kokoro is a frontier TTS model for its size of 82 million parameters (text in/audio out).

On 25 Dec 2024, Kokoro v0.19 weights were permissively released in full fp32 precision under an Apache 2.0 license. As of 2 Jan 2025, 10 unique Voicepacks have been released, and a .onnx version of v0.19 is available.

In the weeks leading up to its release, Kokoro v0.19 was the #1🥇 ranked model in TTS Spaces Arena. Kokoro had achieved higher Elo in this single-voice Arena setting over other models, using fewer parameters and less data:

  1. Kokoro v0.19: 82M params, Apache, trained on <100 hours of audio
  2. XTTS v2: 467M, CPML, >10k hours
  3. Edge TTS: Microsoft, proprietary
  4. MetaVoice: 1.2B, Apache, 100k hours
  5. Parler Mini: 880M, Apache, 45k hours
  6. Fish Speech: ~500M, CC-BY-NC-SA, 1M hours

Kokoro's ability to top this Elo ladder suggests that the scaling law (Elo vs compute/data/params) for traditional TTS models might have a steeper slope than previously expected.

 Kokoro Discord服务器:https://discord.gg/QuGxSWBfQy
📣 有合成数据吗?想要训练有素的语音包吗?看见https://hf.co/posts/hexgrad/418806998707773
Kokoro是一个具有8200万个参数(文本输入/音频输出)的前沿TTS模型。
2024年12月25日,Kokoro v0.19砝码在Apache 2.0许可证下以完全fp32精度获准发布。截至2025年1月2日,已经发布了10个独特的语音包,并且提供了v0.19的.onx版本。
在发布前的几周里,Kokoro v0.19排名第一🥇 TTS Spaces Arena排名第一的模特。Kokoro在这个单一语音竞技场设置中比其他型号获得了更高的Elo,使用了更少的参数和更少的数据:
Kokoro v0.19:82M params,Apache,经过<100小时的音频训练
XTTS v2:467M,CPML,>10k小时
Edge TTS:微软,专有
MetaVoice:1.2B,Apache,10万小时
Parler Mini:880M,阿帕奇,45000小时
鱼语:~500M,CC-BY-NC-SA,1M小时
Kokoro超越Elo阶梯的能力表明,传统TTS模型的缩放定律(Elo vs compute/data/params)可能比之前预期的斜率更陡。 

onnx推理实践

安装

下载源代码

git clone https://github.com/thewh1teagle/kokoro-onnx

常规安装需要,如果后面使用uv来安装,那么就不需要这个源代码了

 

安装依赖库

pip install kokoro-onnx uv

 创建工作目录并创建工作环境

cd work
mkdir kokoro

进入kokoro目录,执行

uv init -p 3.12
uv add kokoro-onnx soundfile

uv是一个类似pip但是比pip快很多的一个安装python依赖库的软件,如果刚开始接触uv有些不习惯,那么多用用,慢慢就习惯了。

如果后面报错说找不到kokoro_onnx或soundfile库,那么就用uv重新装一下:

uv pip install kokoro_onnx soundfile

安装完毕:

uv add kokoro-onnx soundfile
warning: `VIRTUAL_ENV=/home/skywalk/py312` does not match the project environment path `/home/skywalk/.venv` and will be ignored; use `--active` to target the active environment instead
Resolved 7 packages in 11ms
Prepared 1 package in 1m 33s
Installed 4 packages in 277ms
 + cffi==1.17.1
 + numpy==2.2.3
 + pycparser==2.22
 + soundfile==0.13.1

开始实践

英文实践

下载文件

wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/voices-v1.0.bin

复制文件

将源代码example/save.py文件放置到工作目录(可选:改名为hello.py)

执行uv run save.py 或者:

uv run hello.py

如果不行,直接用python启动也可以

python save.py

英文的效果不错!

 

中文支持

本来以为源代码里一个参数改成zh-ch就行了,原来中文不能这么简单的用,需要使用中文例子程序,装misak库,下载中文onnx库

使用中文例子example/chinese.py,将其复制到工作目录

cp ~/github/kokoro-onnx/examples/chinese.py .

安装中文依赖库,主要是增加misak[zh]

uv pip install -U kokoro-onnx==0.4.4 soundfile==0.13.1 'misaki[zh]==0.8.4'

下载中文onnx库

wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.1/kokoro-v1.1-zh.onnx
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.1/voices-v1.1-zh.bin

测试了一下,中文效果比英文差了很多。

 总结

总体部署非常简单,普通cpu机器也可以较快速的推理。

由于项目使用了uv进行包依赖管理,所以对uv不熟悉的地方可能有些坑,至少我这边就不太顺利。

uv不行就使用pip安装也可以,其实uv主要在于速度快,节省时间。但是对于国内网络的现状,坑占用了一些时间,并不比直接使用pip快。

整体kokoro-onnx推理英文比较惊艳,中文比较拉....还需加强。

调试

报错没有库ModuleNotFoundError: No module named 'kokoro_onnx'

    from kokoro_onnx import Kokoro
ModuleNotFoundError: No module named 'kokoro_onnx'

ModuleNotFoundError: No module named 'soundfile'

 用uv或pip重新装一下:

uv pip install kokoro_onnx soundfile

转存中文报错language "zh-cn" is not supported by the espeak backend

  File "/home/skywalk/py312/lib/python3.12/site-packages/phonemizer/backend/base.py", line 100, in _init_language
    raise RuntimeError(
RuntimeError: language "zh-cn" is not supported by the espeak backend

原来中文不能这么简单的用,需要使用中文例子程序,装misak库,下载中文onnx库

uv pip install -U kokoro-onnx==0.4.4 soundfile==0.13.1 'misaki[zh]==0.8.4'

中文报错: Load model from kokoro-v1.1-zh.onnx failed:Protobuf parsing failed

  File "/home/skywalk/work/kokoro/chinese.py", line 28, in <module>
    kokoro = Kokoro("kokoro-v1.1-zh.onnx", "voices-v1.1-zh.bin")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/skywalk/py312/lib/python3.12/site-packages/kokoro_onnx/__init__.py", line 54, in __init__
    self.sess = rt.InferenceSession(model_path, providers=providers)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/skywalk/py312/lib/python3.12/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 465, in __init__
    self._create_inference_session(providers, provider_options, disabled_optimizers)
  File "/home/skywalk/py312/lib/python3.12/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 526, in _create_inference_session
    sess = C.InferenceSession(session_options, self._model_path, True, self._read_config_from_model)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : INVALID_PROTOBUF : Load model from kokoro-v1.1-zh.onnx failed:Protobuf parsing failed.

把中文onnx文件重新下载了一遍。

问题解决

 

### Kokoro TTS 使用指南 Kokoro 是一款轻量级、高性能的文本转语音 (TTS) 模型,适用于多种应用场景。该模型不仅体积小巧而且运行效率高,在资源有限的情况下也能提供出色的性能表现[^3]。 #### 获取 Kokoro TTS 模型 为了获取并使用 Kokoro TTS 模型,可以从 Hugging Face 平台下载预训练好的模型文件。具体链接如下: - **Hugging Face 模型主页**: [Kokoro-82MONNX](https://huggingface.co/models) 此外,对于希望进一步优化部署流程或者想要基于现有架构快速搭建服务端应用的人来说,可以考虑访问 GitHub 上提供的 FastAPI 封装版本仓库[Kokoro-FastAPI](https://github.com/user/Kokoro-FastAPI),这里包含了详细的 API 接口说明以及如何通过 RESTful 方式调用 TTS 功能的信息。 #### 安装依赖库 在开始之前,请确保已经安装 Python 环境,并且可以通过 pip 工具来管理第三方包。接着执行下面命令以安装必要的依赖项: ```bash pip install torch onnxruntime soundfile fastapi uvicorn ``` 这些工具分别用于加载 PyTorch 模型、解析 ONNX 文件、处理音频数据流以及创建 Web 服务器接口。 #### 加载与推理过程 完成环境配置之后就可以编写简单的脚本来测试 Kokoro 的基本功能了。以下是利用官方给出的例子展示如何读取输入字符串并将其转换成对应的语音片段: ```python import numpy as np from pathlib import Path import soundfile as sf import torch import onnxruntime as ort def load_model(model_path): sess_options = ort.SessionOptions() session = ort.InferenceSession(str(Path(model_path)), providers=['CPUExecutionProvider'], sess_options=sess_options) return session def text_to_speech(text, model_session): input_ids = ... # 需要根据实际情况填充这部分代码,比如将文本编码为 token id 列表 inputs = { 'input': np.array([input_ids], dtype=np.int64), } outputs = model_session.run(None, inputs)[0] audio_data = np.squeeze(outputs).astype(np.float32) return audio_data if __name__ == '__main__': model_file = './path/to/kokoro.onnx' sample_text = "你好世界" session = load_model(model_file) wav_output = text_to_speech(sample_text, session) output_filename = "./output.wav" sf.write(output_filename, wav_output, samplerate=22050) ``` 上述代码实现了从加载模型到最终保存生成的声音文件的一系列操作。需要注意的是 `text_to_speech` 函数中的 `input_ids` 变量应该按照实际使用的 tokenizer 来设置相应的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值