Kokoro-82M:最好的TTS小模型
最近,一种名为 Kokoro-82M 的革命性模型已经发布,它只有 8200 万个参数,并在 TTS 领域获得了 SOTA 结果。
不仅仅是文本生成,生成式 AI 一直在不同领域打破基准,无论是视频生成、图像生成等。甚至 TTS 也达到了新的高度。最近,一种名为 Kokoro-82M 的革命性模型已经发布,它只有 8200 万个参数,并在 TTS 领域获得了 SOTA 结果。
Kokoro-82M的主要特点:
- 高效率:尽管 Kokoro-82M 的规模相对较小(82M 个参数),但在 TTS 基准测试中的 Elo 评级方面,其表现优于较大的模型。
- 低数据要求:在不到 100 小时的音频数据上进行训练,明显少于许多竞争模型(例如 XTTS v2、MetaVoice、Fish Speech)。
- 语音包:包括 10 个独特的语音包(例如 Bella、Sarah、Adam、Michael、Emma 等),可提供多种语音选项。
- ONNX 支持:提供 ONNX 版本以实现高效部署和推理。
- 支持的语言:主要是美式英语和英式英语。
- 架构:基于 StyleTTS 2 和 ISTFTNet,具有仅解码器架构(无扩散或编码器)。
- 开源模型
Kokoro-82M的性能:
- Elo 排名:Kokoro-82M 在 TTS Spaces Arena 中排名第一,表现优于 XTTS v2(4.67 亿个参数)、MetaVoice(12 亿个参数)和 Fish Speech(约 5 亿个参数)等大型模型。
- 效率:使用更少的参数和更少的训练数据实现高质量 TTS,表明 TTS 模型的缩放定律比之前认为的更陡峭。
Kokoro-82M的使用:
- 轻松集成:Kokoro-82M 可以轻松集成到使用 Hugging Face 生态系统的项目中。
- 语音选择:用户可以从多个语音包(例如 Bella、Sarah、Adam、Michael)中选择不同的口音和风格。
- 音素输出:该模型生成 24kHz 音频并为高级用例提供音素输出。
Kokoro-82M训练详情:
- 计算:在 A100 80GB GPU 上训练约 500 GPU 小时,成本约为 400 美元。
- 数据:使用许可/非版权音频数据(公共领域或 Apache/MIT 许可)和 IPA 音素标签。
- 训练周期:训练时间少于 20 个周期。
- 数据集:主要由长篇阅读和叙述组成,没有对话数据。
Kokoro-82M的局限性:
- 无语音克隆:由于训练数据集较小(<100 小时),因此缺乏语音克隆功能。
- 对 espeak-ng 的依赖:依赖外部 g2p(字素到音素)工具,这可能会导致故障模式。
2、什么是 g2p?
g2p 代表字素(grapheme)到音素(phoneme)的转换。它是将书面文本(字素或字母)转换为其相应的语音表示(音素或声音)的过程。例如,单词“cat”可能被转换为音素 /k/ /æ/ /t/,代表单词的发音方式。
为什么 Kokoro-82M 依赖外部 g2p?
Kokoro-82M 使用一种名为 espeak-ng(一种流行的开源语音合成器)的外部工具来处理 g2p 转换。Kokoro-82M 不是将 g2p 功能直接构建到模型中,而是将此任务转移给一个单独的系统 espeak-ng。
- 有限的多语言支持:目前仅支持英语(美国和英国口音),但多语言功能在架构上是可行的。
- 并非适用于所有任务的最先进技术:虽然 Kokoro-82M 效率高,但可能无法与更大的模型(例如 1B+ 参数扩散变换器或 GPT-4o 等 MLLM)相媲美。
3、如何免费使用 Kokoro-82M TTS?
该模型可以在这里免费测试。
如果你愿意,该模型非常轻量,也可以在 Google Colab 上使用:
# 1️⃣ Install dependencies silently
!git lfs install
!git clone https://huggingface.co/hexgrad/Kokoro-82M
%cd Kokoro-82M
!apt-get -qq -y install espeak-ng > /dev/null 2>&1
!pip install -q phonemizer torch transformers scipy munch
# 2️⃣ Build the model and load the default voicepack
from models import build_model
import torch
device = 'cuda' if torch.cuda.is_available() else 'cpu'
MODEL = build_model('kokoro-v0_19.pth', device)
VOICE_NAME = [
'af', # Default voice is a 50-50 mix of Bella & Sarah
'af_bella', 'af_sarah', 'am_adam', 'am_michael',
'bf_emma', 'bf_isabella', 'bm_george', 'bm_lewis',
'af_nicole', 'af_sky'][0]
VOICEPACK = torch.load(f'voices/{VOICE_NAME}.pt', weights_only=True).to(device)
print(f'Loaded voice: {VOICE_NAME}')
# 3️⃣ Call generate, which returns 24khz audio and the phonemes used
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. They haven't even been born."
audio, out_ps = generate(MODEL, text, VOICEPACK, lang=VOICE_NAME[0])
# Language is determined by the first letter of the VOICE_NAME:
# 🇺🇸 'a' => American English => en-us
# 🇬🇧 'b' => British English => en-gb
# 4️⃣ Display the 24khz audio and print the output phonemes
from IPython.display import display, Audio
display(Audio(data=audio, rate=24000, autoplay=True))
print(out_ps)
4、结束语
Kokoro-82M 是一种高效且有效的 TTS 模型,其性能超出预期,以最少的计算和数据要求提供高质量的语音合成。它在基准测试中的成功和易用性使其成为 TTS 领域的有力竞争者。
原文链接:Kokoro-82M: The best TTS model in just 82 Million parameters
汇智网翻译整理,转载请标明出处