返回模型
说明文档
Kokoro fp16 ONNX 模型
Kokoro 82M 导出为 fp16 格式的 ONNX 模型。该模型来自 这个 GitHub 仓库。语音文件来自 这个仓库。
使用 txtai
txtai 内置了文本转语音 (TTS) 管道,可以轻松使用此模型。
注意:需要 txtai >= 8.3.0。在该版本发布前,请从 GitHub 安装。
import soundfile as sf
from txtai.pipeline import TextToSpeech
# 构建管道
tts = TextToSpeech("NeuML/kokoro-fp16-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-fp16-onnx/voices.json", "r", encoding="utf-8") as f:
voices = json.load(f)
# 创建模型
model = onnxruntime.InferenceSession(
"kokoro-fp16-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-fp16-onnx
作者 NeuML
text-to-speech
txtai
↓ 0
♥ 4
创建时间: 2025-01-16 11:01:52+00:00
更新时间: 2025-03-21 14:24:59+00:00
在 Hugging Face 上查看文件 (4)
.gitattributes
README.md
model.onnx
ONNX
voices.json