Kokoro-ONNX
综合介绍
Kokoro-ONNX 是一个基于 Kokoro-TTS 模型开发的文本转语音(Text-to-Speech)Python库。 它通过 ONNX Runtime 在CPU或GPU上运行,实现了高效的语音合成。 该项目的主要特点是轻量化和高性能,量化后的模型文件大小仅约80MB,能够在没有强大硬件支持的设备上实现接近实时的语音生成。 Kokoro-ONNX 支持包括中文在内的多种语言和多种音色,用户可以通过简单的命令行或Python脚本,将输入的文本快速转换为自然的语音文件。 由于其跨平台和易于集成的特性,它适合被嵌入到各种应用或自动化流程中,为需要语音输出功能的场景提供解决方案。
功能列表
- 多语言支持: 支持包括中文、英文、日文在内的多种语言的文本转语音。
- 多音色选择: 提供多种不同的声音(Voices)选项,用户可以选择喜欢的声音来生成语音。
- 高性能: 利用 ONNX Runtime 进行推理,在macOS M1等设备上可实现接近实时的语音合成速度。
- 轻量化模型: 提供量化后的模型,体积小(约80MB),便于在资源受限的环境中部署。
- 跨平台运行: 可以在支持 ONNX Runtime 的多个平台上运行,包括CPU和GPU环境。
- 简单的安装和使用: 可以通过
pip
命令一键安装,并提供了清晰的Python脚本示例供用户参考。 - 支持独立虚拟环境: 推荐使用
uv
工具创建独立的Python环境,避免与其他库产生冲突。
使用帮助
Kokoro-ONNX是一个功能强大且易于使用的文本转语音工具,以下是详细的安装和使用流程,旨在帮助你快速上手。
1. 环境准备与安装
为了保证项目稳定运行并避免依赖冲突,官方推荐使用 uv
创建一个独立的Python环境。uv
是一个非常快速的Python包安装和解析工具。
步骤一:安装 uv
(推荐)
如果你还没有安装 uv
,可以通过 pip
在你的系统上安装它。打开终端或命令行工具,输入以下命令:
pip install uv
步骤二:创建项目并初始化环境
- 首先,为你的项目创建一个新的文件夹,并进入该文件夹。
mkdir my-tts-project cd my-tts-project
- 使用
uv
初始化一个新的虚拟环境。这里我们指定使用Python 3.12版本,你也可以根据你的系统情况选择其他兼容版本。uv init -p 3.12
- 激活虚拟环境后,使用
uv
来安装kokoro-onnx
和soundfile
。soundfile
库用于将生成的音频数据保存为.wav
文件。uv add kokoro-onnx soundfile
这条命令会自动处理所有必需的依赖项。
2. 下载模型文件
Kokoro-ONNX 需要特定的模型文件来生成语音。你需要手动下载这些文件,并将它们放置在你的项目文件夹中。
- 模型文件:
kokoro-v1.0.onnx
- 音色数据:
voices-v1.0.bin
请从官方发布页面(Releases)下载这些文件。 将下载好的 kokoro-v1.0.onnx
和 voices-v1.0.bin
两个文件直接放在 my-tts-project
文件夹下,与你的Python脚本放在同一目录。
3. 编写并运行Python脚本
现在,你可以在项目文件夹中创建一个Python脚本来调用Kokoro-ONNX。
步骤一:创建Python文件
在 my-tts-project
文件夹中创建一个名为 run_tts.py
的文件。
步骤二:编写代码
将以下示例代码复制并粘贴到你的 run_tts.py
文件中。这段代码演示了如何加载模型、选择声音并生成语音。
import soundfile as sf
from kokoro_onnx import TextToSpeech, Voice
# 1. 定义要转换为语音的文本
text = "你好,欢迎使用 Kokoro T T S。这是一个示例文本。"
# 2. 初始化文本转语音引擎
# 确保模型文件 'kokoro-v1.0.onnx' 和 'voices-v1.0.bin' 在同一目录下
tts = TextToSpeech()
# 3. 选择一个声音
# 这里使用 'misaki-v1.0-beta' 作为示例,你可以根据VOICES.md列表选择其他声音
voice = Voice.from_name("misaki-v1.0-beta")
# 4. 生成音频波形
# 这是一个核心步骤,引擎会根据文本和选择的声音合成音频
wav, rate = tts.tts(text=text, voice=voice)
# 5. 保存音频文件
# 使用 soundfile 库将音频数据写入一个名为 'output_audio.wav' 的文件
sf.write("output_audio.wav", wav, rate)
print("音频文件 'output_audio.wav' 已成功生成!")
步骤三:运行脚本
在你的终端中(确保你仍处于 my-tts-project
文件夹下),使用 uv
来运行这个脚本:
uv run run_tts.py
执行完毕后,你会在项目文件夹中找到一个名为 output_audio.wav
的音频文件。 打开它,你就可以听到生成的语音了。
4. 使用CUDA进行GPU加速
如果你的设备拥有NVIDIA显卡并已配置好CUDA环境,你可以利用GPU来获得更快的合成速度。
安装GPU版本的依赖:你需要安装支持GPU的 onnxruntime-gpu
。
uv add onnxruntime-gpu
在代码中指定使用CUDA:在初始化 TextToSpeech
对象时,通过 providers
参数明确指定使用CUDA。
# 将 tts = TextToSpeech() 修改为:
tts = TextToSpeech(providers=["CUDAExecutionProvider"])
这样,模型就会在GPU上运行,处理速度会得到显著提升。
应用场景
- 内容创作为视频、播客或有声读物快速生成旁白和配音,无需真人录制即可实现多样化的声音效果。
- 智能个人助理在开发的智能助理或机器人应用中集成语音输出功能,使其能够通过语音与用户进行交互,播报天气、新闻或提醒。
- 教育和辅助工具为语言学习软件提供标准发音,或为有阅读障碍的用户开发文本朗读工具,将网页、电子书等内容转换为语音。
- 自动化通知系统在监控系统或物联网(IoT)设备中,当触发特定事件时,自动生成语音警报或状态通知。
QA
- 这个工具支持哪些语言和声音?Kokoro-ONNX 支持多种语言,包括但不限于中文、英文和日文。具体支持的声音列表可以在项目仓库的
Kokoro-82M/VOICES.md
文件中找到,开发者会不定期更新。 - 这个工具必须在有显卡(GPU)的电脑上运行吗?不需要。该工具的核心优势之一就是能在普通的CPU上高效运行。它使用ONNX Runtime,默认情况下为CPU优化,使得在没有独立显卡的设备(如笔记本电脑)上也能获得很好的性能。当然,如果你有NVIDIA显卡,也可以配置使用CUDA来进一步加速。
- 什么是ONNX?为什么这个工具要用它?ONNX (Open Neural Network Exchange) 是一个用于表示深度学习模型的开放格式。这个工具使用ONNX,是因为它可以让模型脱离PyTorch、TensorFlow等庞大的训练框架,以轻量化的方式在多种硬件平台上(包括CPU和GPU)快速运行,从而大大降低了部署的复杂度和资源消耗。
- 生成的语音文件听起来卡顿或不自然怎么办?这可能与选择的声音模型或输入的文本有关。首先,请确保你使用的是官方推荐的最新模型文件。其次,可以尝试在文本中合理使用标点符号,因为标点会影响语音的停顿和节奏。最后,尝试更换不同的声音(Voice),因为每个声音的训练数据和特点都不同,对不同文本的适应性也会有差异。