文章

Kokoro-82M——小模型大能量的前沿TTS模型,详细使用指南

Kokoro-82M——小模型大能量的前沿TTS模型,详细使用指南

引言

在文本到语音(TTS)领域,模型的大小通常与性能成正比。然而,Kokoro-82M却打破了这一常规,凭借仅8200万参数的规模,在TTS Spaces Arena中脱颖而出,成为排名第一的模型。本文将带你深入了解Kokoro-82M的独特之处、使用方法及其背后的技术细节,并提供详细的操作指南,帮助你在本地环境中轻松运行这一前沿模型。


Kokoro-82M的亮点

  1. 小模型,大能量
    Kokoro-82M仅用8200万参数和不到100小时的音频数据,便在TTS Spaces Arena中击败了参数更多、数据量更大的模型,如XTTS v2、MetaVoice等。

  2. 开源许可
    模型权重以Apache 2.0许可证发布,允许广泛的商业和非商业使用。

  3. 多语言支持
    目前支持美式英语和英式英语,未来有望扩展至更多语言。

  4. 高效推理
    提供ONNX版本,便于在不同平台上部署和使用。


环境准备

在运行Kokoro-82M之前,需要确保你的环境满足以下要求:

1. 安装依赖项

  • Python 3.8 或更高版本
  • Git LFS(用于下载大文件)
  • espeak-ng(用于音素转换)
  • Python库torch, transformers, phonemizer, scipy, munch

2. 安装命令

# 安装Git LFS
git lfs install

# 安装espeak-ng(Linux)
sudo apt-get install espeak-ng

# 安装Python依赖
pip install torch transformers phonemizer scipy munch

注意


详细操作指南

1. 克隆模型仓库

首先,克隆Kokoro-82M的Hugging Face仓库到本地:

import os

if not os.path.exists("Kokoro-82M"):
    os.system("git clone https://huggingface.co/hexgrad/Kokoro-82M")
os.chdir("Kokoro-82M")

2. 构建模型并加载语音包

接下来,加载模型和语音包。Kokoro-82M支持多种语音包,默认是Bella和Sarah的混合语音。

import torch
from models import build_model

# 选择设备(GPU或CPU)
device = 'cuda' if torch.cuda.is_available() else 'cpu'

# 构建模型
MODEL = build_model('kokoro-v0_19.pth', device)

# 选择语音包
VOICE_NAME = 'af'  # 默认语音是Bella和Sarah的混合
VOICEPACK = torch.load(f'voices/{VOICE_NAME}.pt', weights_only=True).to(device)
print(f'Loaded voice: {VOICE_NAME}')

语音包选项

  • af:Bella和Sarah的混合语音(默认)
  • af_bella:Bella的语音
  • af_sarah:Sarah的语音
  • am_adam:Adam的语音
  • am_michael:Michael的语音
  • 其他语音包详见Hugging Face页面。

3. 生成语音

输入文本后,模型会生成对应的语音和音素。

from kokoro import generate

# 输入文本
text = "How could I know? It's an unanswerable question. Like asking an unborn child if they'll lead a good life."

# 生成语音
audio, out_ps = generate(MODEL, text, VOICEPACK, lang=VOICE_NAME[0])

# 打印生成的音素
print("Generated phonemes:", out_ps)

4. 播放和保存语音

生成的语音可以直接播放,并保存为WAV文件。

from IPython.display import display, Audio
import scipy.io.wavfile as wav

# 播放语音
display(Audio(data=audio, rate=24000, autoplay=True))

# 保存语音到文件
wav.write("output_audio.wav", 24000, audio)
print("Audio saved to output_audio.wav")

技术细节

1. 模型架构

  • StyleTTS 2:基于StyleTTS 2论文的架构。
  • ISTFTNet:使用ISTFTNet进行语音合成。
  • 纯解码器架构:无扩散模型或编码器。

2. 训练数据

  • 数据量:不到100小时的公开音频数据和IPA音素标签。
  • 数据类型:主要为长文本阅读和叙述,而非对话。

3. 计算资源

  • 硬件:在A100 80GB GPU上训练。
  • 训练时间:约500小时,总成本约400美元。

局限性

尽管Kokoro-82M表现出色,但仍有一些局限性:

  1. 缺乏语音克隆能力:由于训练数据量较小,模型无法进行语音克隆。
  2. 依赖外部g2p工具:使用espeak-ng进行音素转换,可能引入一些错误。
  3. 训练数据偏向长文本:训练数据主要为长文本阅读和叙述,而非对话。

结语

Kokoro-82M以其小模型大能量的特点,为TTS领域带来了新的可能性。无论是研究人员还是开发者,都可以通过Hugging Face平台轻松体验和使用这一前沿模型。快来试试吧!

点击这里访问Kokoro-82M的Hugging Face页面

License:  CC BY 4.0