返回模型
说明文档
Kokoro Base (82M) ONNX 模型
Kokoro 82M 导出为 ONNX 格式。此模型与基础仓库中的 ONNX 文件相同。语音文件来自此仓库。
使用 txtai
txtai 内置了文本转语音 (TTS) 管道,使该模型的使用变得简单。
注意:此功能需要 txtai >= 8.3.0。在该版本发布前,请从 GitHub 安装。
import soundfile as sf
from txtai.pipeline import TextToSpeech
# 构建管道
tts = TextToSpeech("NeuML/kokoro-base-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-base-onnx/voices.json", "r", encoding="utf-8") as f:
voices = json.load(f)
# 创建模型
model = onnxruntime.InferenceSession(
"kokoro-base-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-base-onnx
作者 NeuML
text-to-speech
txtai
↓ 0
♥ 3
创建时间: 2025-01-16 11:01:28+00:00
更新时间: 2025-03-21 14:25:23+00:00
在 Hugging Face 上查看文件 (15)
.gitattributes
README.md
examples/af.mp3
examples/af_bella.mp3
examples/af_nicole.mp3
examples/af_sarah.mp3
examples/af_sky.mp3
examples/am_adam.mp3
examples/am_michael.mp3
examples/bf_emma.mp3
examples/bf_isabella.mp3
examples/bm_george.mp3
examples/bm_lewis.mp3
model.onnx
ONNX
voices.json