Parler-TTS Mini: Expresso 项目介绍
项目背景
Parler-TTS Mini: Expresso 是一种经过微调的轻量级文本转语音(TTS)模型,基于 Parler-TTS Mini v0.1 版本,并使用 Expresso 数据集进行了训练。与原始模型相比,Parler-TTS Expresso 提供了更好的情感(如开心、困惑、大笑、悲伤)和声音一致性(如 Jerry、Thomas、Elisabeth、Talia)控制。
该项目来自于 Parler-TTS 项目首次发布,旨在为社区提供 TTS 训练资源和数据集预处理代码。通过这些资源,用户可以轻松重现整个训练过程。
使用方法
使用 Expresso 模型如同打招呼一样简单,首先需要从源码安装相关库:
pip install git+https://github.com/huggingface/parler-tts.git
安装完成后,可以使用以下代码片段进行模型推理:
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer, set_seed
import soundfile as sf
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler-tts-mini-expresso").to(device)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler-tts-mini-expresso")
prompt = "Why do you make me do these examples? They're *so* generic."
description = "Thomas speaks moderately slowly in a sad tone with emphasis and high quality audio."
input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
set_seed(42)
generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)
提示:
- 可以指定男性(Jerry, Thomas)或女性(Talia, Elisabeth)的名字来获得一致的声音。
- 模型能够生成多种情感:如开心、困惑、普通(无特别情感)、大笑、悲伤、耳语、强调等。
- 使用“要高质量音频”生成最高质量的音频,用“非常嘈杂音频”生成高背景噪音的音频。
- 标点符号可以用来控制语音的节奏,比如使用逗号增加小的停顿。
- 为了强调某些词,可以在词语前后加星号(例如:
*you*
),并在描述中含有“强调”词。
训练流程
Expresso 是一个高质量的表达性语音数据集,包含四位发言者的样本(两男两女)。通过对 Parler-TTS Mini v0.1 的微调训练,使模型能够依照情感和发音者提示进行生成。
要重现该微调过程,需要执行以下两个步骤:
- 从 Expresso 数据集中创建音频样本的文本描述。
- 训练模型以匹配(文本,音频)对。
1. 创建文本描述
数据集描述的创建分为三个子阶段,从 DataSpeech 中进行。首先,通过连续变量对 Expresso 数据集进行标注,然后将这些变量映射到离散文本标签上。最后,通过文本标签创建自然语言描述。
2. 微调模型
微调过程使用 Parler-TTS 的训练脚本,经过组合多个数据集后可以保障模型的多样性和通用性。训练参数需根据任务的具体需求进行调整以获得最佳性能。
项目动机
Parler-TTS 是基于 Stability AI 和爱丁堡大学的 Dan Lyth 和 Simon King 合作的一项成果。不同于其他 TTS 模型,Parler-TTS 提供了一个完全开源的解决方案,所有数据集、预处理、训练代码和权重都以宽松的许可公开发布,社区成员可以基于这些资源开发自己的强大 TTS 模型。
Parler-TTS 在发布时包括:
- Parler-TTS 仓库 - 用于训练和微调模型的工具。
- Data-Speech 仓库 - 用于标注语音数据集的工具集。
- Parler-TTS 组织 - 包含已标注的数据集以及未来的模型检查点。
许可证
该模型基于 Apache 2.0 许可证发布。