Kokoro
扫码查看

一个轻量级、高效率的文本转语音模型库

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环境即可。

  1. 安装库:打开你的终端或命令行工具,输入以下命令来安装kokorosoundfile(用于保存音频文件)。同时,需要安装espeak-ng作为语音合成的引擎之一。
    pip install -q kokoro>=0.9.4 soundfile
    sudo apt-get -qq -y install espeak-ng
    

    注意:第二条命令适用于Debian系的Linux发行版,如Ubuntu。

  2. 编写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")
    
  3. 运行代码:在终端中运行你的Python脚本。
    python test.py
    

    运行结束后,你会在当前目录下找到名为output_0.wav的音频文件。

进阶使用:多语言和参数调整

Kokoro支持多种语言,并且可以调整语速等参数。

  1. 支持的语言:在使用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]
  2. 多语言代码示例(以中文为例):

    首先,确保你安装了中文支持。

    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需要手动安装。

  1. 前往 espeak-ng 的 GitHub Releases页面。
  2. 找到最新的发行版,下载 .msi 安装文件(例如 espeak-ng-xxxxxxxx-x64.msi)。
  3. 运行下载的 .msi 文件,完成安装。
  4. 之后,你就可以正常使用pip安装kokoro并运行Python脚本了。

MacOS (Apple Silicon M系列芯片):为了利用苹果芯片的GPU进行加速,你可以在运行Python脚本时设置一个环境变量。

  1. 打开终端。
  2. 使用以下命令来运行你的脚本,这将启用MPS (Metal Performance Shaders) 后端。
    PYTORCH_ENABLE_MPS_FALLBACK=1 python your_script_name.py
    

    这会让PyTorch在兼容的计算任务中调用GPU,从而显著提高处理速度。

使用Conda环境

如果你在安装过程中遇到依赖冲突问题,官方建议使用Conda来创建一个独立的环境。

  1. 创建一个名为 environment.yml 的文件,内容如下:
    name: kokoro
    channels:
    - defaults
    dependencies:
    - python=3.9
    - pip:
    - kokoro>=0.9.4
    - soundfile
    - misaki[en] # 或其他你需要的语言包
    
  2. 在终端中,使用以下命令创建并激活Conda环境:
    conda env create -f environment.yml
    conda activate kokoro
    
  3. 现在你在这个独立的环境中,可以安全地运行你的Kokoro脚本了。

应用场景

  1. 内容创作为视频、播客或有声读物快速生成配音。由于其轻量和高效的特性,个人创作者可以在自己的电脑上轻松完成语音的生成,而无需依赖昂贵的云服务。
  2. 辅助工具开发开发者可以将Kokoro集成到自己的应用程序中,为用户提供阅读文本的辅助功能。例如,在阅读器应用中加入“朗读”按钮,或者为视力障碍用户开发屏幕阅读软件。
  3. 教育和语言学习生成不同语言的标准发音,帮助语言学习者练习听力和口语。教师可以利用它制作多语言的教学材料。
  4. 原型设计与测试在产品开发早期,用它为智能助手、智能音箱或车载系统等需要语音交互功能的产品快速制作语音原型,用于测试用户体验。

QA

  1. Kokoro支持哪些语言?Kokoro目前支持美式/英式英语、西班牙语、法语、印地语、意大利语、日语、巴西葡萄牙语和中文普通话。部分语言(如日语和中文)需要安装额外的依赖包。
  2. 为什么在Windows上运行失败?最常见的原因是没有正确安装espeak-ng。请确保你已经从官方发布页面下载并安装了对应的.msi文件。espeak-ng是Kokoro在处理某些语言和文本时的重要依赖。
  3. 如何处理非常长的文本?在调用pipeline函数时,可以使用split_pattern参数,通过正则表达式定义文本的分割规则。例如,split_pattern=r'\n+'会按换行符分割文本,split_pattern=r'。|!'会按句号或感叹号分割。这样,长文本会被切分成多个小段,逐一生成音频,避免因文本过长而导致的内存问题。
  4. 我可以在自己的项目里商用吗?可以。Kokoro项目及其模型权重均采用Apache-2.0许可证,这是一个非常宽松的开源许可证,允许个人和商业用途的自由使用、修改和分发。
微信微博Email复制链接