返回模型
说明文档
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