Kokoro
综合介绍
Kokoro 是一个为 Kokoro-82M 模型设计的推理库。Kokoro-82M 是一个拥有8200万参数的开源权重文本转语音(TTS)模型。这个项目的核心特点是,尽管模型参数量不大,但它能够生成与更大型模型相媲美的语音质量,同时在运行速度和成本效益上表现更出色。该项目采用 Apache-2.0 许可协议,允许开发者在从生产环境到个人项目的任何地方自由部署和使用。Kokoro 支持包括英语(美式和英式)、西班牙语、法语、印地语、意大利语、日语、葡萄牙语(巴西)和中文普通话在内的多种语言。其实现依赖一个名为 misaki 的字形转音素(G2P)库,并在需要时使用 espeak-ng 作为备用方案。
功能列表
- 轻量级模型:模型仅有8200万参数,运行速度快,资源占用少。
- 高质量语音:生成的语音质量可与比它大得多的模型相媲- 低成本高效益:运行成本极低,API服务的价格低于每百万字符1美元。
- 多语言支持:支持美式英语、英式英语、西班牙语、法语、印地语、意大利语、日语、巴西葡萄牙语和中文普通话。
- 开源许可:使用Apache-2.0许可证,可用于商业和个人项目。
- 易于使用:通过简单的
pip
命令即可安装,并提供了清晰的Python代码示例。 - 跨平台兼容:支持在常规Python环境、Google Colab以及Windows和MacOS上安装和使用。
- GPU加速:在苹果M系列芯片的MacOS设备上,可以开启MPS GPU加速以提升性能。
使用帮助
Kokoro是一个功能强大且易于使用的文本转语音工具。下面将详细介绍如何在不同环境中安装和使用它。
基础安装与使用
最简单的使用方式是通过pip
包管理器来安装Kokoro库。你只需要有Python环境即可。
- 安装库:打开你的终端或命令行工具,输入以下命令来安装
kokoro
和soundfile
(用于保存音频文件)。同时,需要安装espeak-ng
作为语音合成的引擎之一。pip install -q kokoro>=0.9.4 soundfile sudo apt-get -qq -y install espeak-ng
注意:第二条命令适用于Debian系的Linux发行版,如Ubuntu。
- 编写Python代码:创建一个Python文件(例如
test.py
),然后输入以下代码。这段代码会加载模型,并将一段英文文本转换为音频。from kokoro import KPipeline from IPython.display import display, Audio import soundfile as sf import torch # 初始化流水线,'a' 代表美式英语 pipeline = KPipeline(lang_code='a') # 准备要转换的文本 text = """ [Kokoro](/kˈOkəɹO/) is an open-weight TTS model with 82 million parameters. Despite its lightweight architecture, it delivers comparable quality to larger models while being significantly faster and more cost-efficient. """ # 'af_heart' 是一个内置的声音名称 generator = pipeline(text, voice='af_heart') # 循环生成并播放、保存音频 for i, (gs, ps, audio) in enumerate(generator): print(f"正在生成第 {i} 段音频...") print(f"文本: {gs}") # gs 是字素(原始文本) print(f"音素: {ps}") # ps 是音素 # 在Jupyter环境中,可以直接播放音频 # display(Audio(data=audio, rate=24000, autoplay=True)) # 将音频数据保存为.wav文件 sf.write(f'output_{i}.wav', audio, 24000) print(f"已保存为 output_{i}.wav")
- 运行代码:在终端中运行你的Python脚本。
python test.py
运行结束后,你会在当前目录下找到名为
output_0.wav
的音频文件。
进阶使用:多语言和参数调整
Kokoro支持多种语言,并且可以调整语速等参数。
- 支持的语言:在使用
KPipeline
初始化时,你需要传入对应的lang_code
。'a'
: 美式英语 (American English)'b'
: 英式英语 (British English)'e'
: 西班牙语 (Spanish)'f'
: 法语 (French)'h'
: 印地语 (Hindi)'i'
: 意大利语 (Italian)'j'
: 日语 (Japanese) - 需要额外安装pip install misaki[ja]
'p'
: 巴西葡萄牙语 (Brazilian Portuguese)'z'
: 中文普通话 (Mandarin Chinese) - 需要额外安装pip install misaki[zh]
- 多语言代码示例(以中文为例):
首先,确保你安装了中文支持。
pip install misaki[zh]
然后,修改你的Python代码:
from kokoro import KPipeline import soundfile as sf # 初始化为中文模式 pipeline = KPipeline(lang_code='z') text = '中国人民不信邪也不怕邪,不惹事也不怕事,任何外国不要指望我们会拿自己的核心利益做交易,不要指望我们会吞下损害我国主权、安全、发展利益的苦果!' # 使用与语言匹配的声音 generator = pipeline( text, voice='af_heart', # voice参数可以根据你的需求更换 speed=1.2, # 调整语速,大于1为加快,小于1为减慢 split_pattern=r',|。|!' # 按标点符号分割长文本 ) for i, (_, _, audio) in enumerate(generator): sf.write(f'chinese_output_{i}.wav', audio, 24000) print(f"已保存中文语音文件 chinese_output_{i}.wav")
特定平台安装指南
Windows 系统:在Windows上,espeak-ng
需要手动安装。
- 前往
espeak-ng
的 GitHub Releases页面。 - 找到最新的发行版,下载
.msi
安装文件(例如espeak-ng-xxxxxxxx-x64.msi
)。 - 运行下载的
.msi
文件,完成安装。 - 之后,你就可以正常使用
pip
安装kokoro
并运行Python脚本了。
MacOS (Apple Silicon M系列芯片):为了利用苹果芯片的GPU进行加速,你可以在运行Python脚本时设置一个环境变量。
- 打开终端。
- 使用以下命令来运行你的脚本,这将启用MPS (Metal Performance Shaders) 后端。
PYTORCH_ENABLE_MPS_FALLBACK=1 python your_script_name.py
这会让PyTorch在兼容的计算任务中调用GPU,从而显著提高处理速度。
使用Conda环境
如果你在安装过程中遇到依赖冲突问题,官方建议使用Conda来创建一个独立的环境。
- 创建一个名为
environment.yml
的文件,内容如下:name: kokoro channels: - defaults dependencies: - python=3.9 - pip: - kokoro>=0.9.4 - soundfile - misaki[en] # 或其他你需要的语言包
- 在终端中,使用以下命令创建并激活Conda环境:
conda env create -f environment.yml conda activate kokoro
- 现在你在这个独立的环境中,可以安全地运行你的Kokoro脚本了。
应用场景
- 内容创作为视频、播客或有声读物快速生成配音。由于其轻量和高效的特性,个人创作者可以在自己的电脑上轻松完成语音的生成,而无需依赖昂贵的云服务。
- 辅助工具开发开发者可以将Kokoro集成到自己的应用程序中,为用户提供阅读文本的辅助功能。例如,在阅读器应用中加入“朗读”按钮,或者为视力障碍用户开发屏幕阅读软件。
- 教育和语言学习生成不同语言的标准发音,帮助语言学习者练习听力和口语。教师可以利用它制作多语言的教学材料。
- 原型设计与测试在产品开发早期,用它为智能助手、智能音箱或车载系统等需要语音交互功能的产品快速制作语音原型,用于测试用户体验。
QA
- Kokoro支持哪些语言?Kokoro目前支持美式/英式英语、西班牙语、法语、印地语、意大利语、日语、巴西葡萄牙语和中文普通话。部分语言(如日语和中文)需要安装额外的依赖包。
- 为什么在Windows上运行失败?最常见的原因是没有正确安装
espeak-ng
。请确保你已经从官方发布页面下载并安装了对应的.msi
文件。espeak-ng
是Kokoro在处理某些语言和文本时的重要依赖。 - 如何处理非常长的文本?在调用
pipeline
函数时,可以使用split_pattern
参数,通过正则表达式定义文本的分割规则。例如,split_pattern=r'\n+'
会按换行符分割文本,split_pattern=r'。|!'
会按句号或感叹号分割。这样,长文本会被切分成多个小段,逐一生成音频,避免因文本过长而导致的内存问题。 - 我可以在自己的项目里商用吗?可以。Kokoro项目及其模型权重均采用Apache-2.0许可证,这是一个非常宽松的开源许可证,允许个人和商业用途的自由使用、修改和分发。