Kokoro-ONNX
扫码查看

使用ONNX运行的文本转语音(TTS)工具

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

步骤二:创建项目并初始化环境

  1. 首先,为你的项目创建一个新的文件夹,并进入该文件夹。
    mkdir my-tts-project
    cd my-tts-project
    
  2. 使用 uv 初始化一个新的虚拟环境。这里我们指定使用Python 3.12版本,你也可以根据你的系统情况选择其他兼容版本。
    uv init -p 3.12
    
  3. 激活虚拟环境后,使用 uv 来安装 kokoro-onnx 和 soundfilesoundfile 库用于将生成的音频数据保存为 .wav 文件。
    uv add kokoro-onnx soundfile
    

    这条命令会自动处理所有必需的依赖项。

2. 下载模型文件

Kokoro-ONNX 需要特定的模型文件来生成语音。你需要手动下载这些文件,并将它们放置在你的项目文件夹中。

  1. 模型文件kokoro-v1.0.onnx
  2. 音色数据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上运行,处理速度会得到显著提升。

应用场景

  1. 内容创作为视频、播客或有声读物快速生成旁白和配音,无需真人录制即可实现多样化的声音效果。
  2. 智能个人助理在开发的智能助理或机器人应用中集成语音输出功能,使其能够通过语音与用户进行交互,播报天气、新闻或提醒。
  3. 教育和辅助工具为语言学习软件提供标准发音,或为有阅读障碍的用户开发文本朗读工具,将网页、电子书等内容转换为语音。
  4. 自动化通知系统在监控系统或物联网(IoT)设备中,当触发特定事件时,自动生成语音警报或状态通知。

QA

  1. 这个工具支持哪些语言和声音?Kokoro-ONNX 支持多种语言,包括但不限于中文、英文和日文。具体支持的声音列表可以在项目仓库的 Kokoro-82M/VOICES.md 文件中找到,开发者会不定期更新。
  2. 这个工具必须在有显卡(GPU)的电脑上运行吗?不需要。该工具的核心优势之一就是能在普通的CPU上高效运行。它使用ONNX Runtime,默认情况下为CPU优化,使得在没有独立显卡的设备(如笔记本电脑)上也能获得很好的性能。当然,如果你有NVIDIA显卡,也可以配置使用CUDA来进一步加速。
  3. 什么是ONNX?为什么这个工具要用它?ONNX (Open Neural Network Exchange) 是一个用于表示深度学习模型的开放格式。这个工具使用ONNX,是因为它可以让模型脱离PyTorch、TensorFlow等庞大的训练框架,以轻量化的方式在多种硬件平台上(包括CPU和GPU)快速运行,从而大大降低了部署的复杂度和资源消耗。
  4. 生成的语音文件听起来卡顿或不自然怎么办?这可能与选择的声音模型或输入的文本有关。首先,请确保你使用的是官方推荐的最新模型文件。其次,可以尝试在文本中合理使用标点符号,因为标点会影响语音的停顿和节奏。最后,尝试更换不同的声音(Voice),因为每个声音的训练数据和特点都不同,对不同文本的适应性也会有差异。
微信微博Email复制链接