ONNX 模型库
返回模型

说明文档

Kokoro int8 ONNX 模型

Kokoro 82M 导出为 int8 格式的 ONNX 模型。此模型来自 此 GitHub 仓库。语音文件来自 此仓库

配合 txtai 使用

txtai 内置了文本转语音 (TTS) 流水线,使该模型的使用变得简单。

注意:需要 txtai >= 8.3.0。在该版本发布前,请从 GitHub 安装。

import soundfile as sf

from txtai.pipeline import TextToSpeech

# 构建流水线
tts = TextToSpeech("NeuML/kokoro-int8-onnx")

# 生成语音
speech, rate = tts("Say something here")

# 写入文件
sf.write("out.wav", speech, rate)

配合 ONNX 使用

如果输入文本已完成分词,此模型也可以直接使用 ONNX 运行。分词可以使用 ttstokenizer 完成。ttstokenizer 是一个宽松许可的库,没有外部依赖(如 espeak)。

请注意,txtai 流水线具有额外的功能,例如将大量输入批量处理,使用此方法时需要自行实现。

import json
import numpy as np
import onnxruntime
import soundfile as sf

from ttstokenizer import IPATokenizer

# 此示例假设文件已下载到本地
with open("kokoro-int8-onnx/voices.json", "r", encoding="utf-8") as f:
    voices = json.load(f)

# 创建模型
model = onnxruntime.InferenceSession(
    "kokoro-int8-onnx/model.onnx",
    providers=["CPUExecutionProvider"]
)

# 创建分词器
tokenizer = IPATokenizer()

# 对输入进行分词
inputs = tokenizer("Say something here")

# 获取说话人数组
speaker = np.array(voices["af"], dtype=np.float32)

# 生成语音
outputs = model.run(None, {
    "tokens": [[0, *inputs, 0]],
    "style": speaker[len(inputs)],
    "speed": np.ones(1, dtype=np.float32) * 1.0
})

# 写入文件
sf.write("out.wav", outputs[0], 24000)

说话人参考

Kokoro 模型内置了多个说话人。

使用此模型时,请从下表中设置 speaker ID。

SPEAKER 性别 国籍 示例
af 美国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/af.mp3"></audio>
af_bella 美国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/af_bella.mp3"></audio>
af_nicole 美国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/af_nicole.mp3"></audio>
af_sarah 美国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/af_sarah.mp3"></audio>
af_sky 美国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/af_sky.mp3"></audio>
am_adam 美国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/am_adam.mp3"></audio>
af_michael 美国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/am_michael.mp3"></audio>
bf_emma 英国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/bf_emma.mp3"></audio>
bf_isabella 英国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/bf_isabella.mp3"></audio>
bm_george 英国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/bm_george.mp3"></audio>
bm_lewis 英国 <audio controls src="https://huggingface.co/NeuML/kokoro-base-onnx/resolve/main/examples/bm_lewis.mp3"></audio>

以下示例展示如何在使用 txtai 时设置说话人 ID

speech, rate = tts("Say something here", speaker="af_sky")

NeuML/kokoro-int8-onnx

作者 NeuML

text-to-speech txtai
↓ 0 ♥ 10

创建时间: 2025-01-16 11:03:33+00:00

更新时间: 2025-03-21 14:22:42+00:00

在 Hugging Face 上查看

文件 (4)

.gitattributes
README.md
model.onnx ONNX
voices.json