Kokoro-82M——小模型大能量的前沿TTS模型,详细使用指南
Kokoro-82M——小模型大能量的前沿TTS模型,详细使用指南
引言
在文本到语音(TTS)领域,模型的大小通常与性能成正比。然而,Kokoro-82M却打破了这一常规,凭借仅8200万参数的规模,在TTS Spaces Arena中脱颖而出,成为排名第一的模型。本文将带你深入了解Kokoro-82M的独特之处、使用方法及其背后的技术细节,并提供详细的操作指南,帮助你在本地环境中轻松运行这一前沿模型。
Kokoro-82M的亮点
-
小模型,大能量
Kokoro-82M仅用8200万参数和不到100小时的音频数据,便在TTS Spaces Arena中击败了参数更多、数据量更大的模型,如XTTS v2、MetaVoice等。 -
开源许可
模型权重以Apache 2.0许可证发布,允许广泛的商业和非商业使用。 -
多语言支持
目前支持美式英语和英式英语,未来有望扩展至更多语言。 -
高效推理
提供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
注意:
- 如果你在Windows或Mac上运行,可能需要额外配置espeak-ng。可以参考espeak-ng的GitHub问题页面解决相关问题。
- 如果需要使用ONNX版本,可以参考Hugging Face页面上的ONNX使用指南。
详细操作指南
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表现出色,但仍有一些局限性:
- 缺乏语音克隆能力:由于训练数据量较小,模型无法进行语音克隆。
- 依赖外部g2p工具:使用espeak-ng进行音素转换,可能引入一些错误。
- 训练数据偏向长文本:训练数据主要为长文本阅读和叙述,而非对话。
结语
Kokoro-82M以其小模型大能量的特点,为TTS领域带来了新的可能性。无论是研究人员还是开发者,都可以通过Hugging Face平台轻松体验和使用这一前沿模型。快来试试吧!
License:
CC BY 4.0