OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Parler-TTS — 开源可控文本转语音模型,适合语音生成实验

Parler-TTS — 开源可控文本转语音模型,适合语音生成实验

 
  three ·  2026-03-01 16:53:25 · 3 次点击  · 0 条评论  

Parler-TTS

Parler-TTS 是一个轻量级的文本转语音(TTS)模型,能够以给定说话者(性别、音高、说话风格等)的风格生成高质量、自然流畅的语音。它复现了分别来自 Stability AI 和爱丁堡大学的 Dan Lyth 与 Simon King 在论文《使用合成标注进行高保真文本转语音的自然语言引导》中的工作。

与其他 TTS 模型不同,Parler-TTS 是一个完全开源的版本。所有数据集、预处理代码、训练代码和权重均在宽松许可下公开发布,使社区能够基于我们的工作构建并开发他们自己强大的 TTS 模型。

此仓库包含 Parler-TTS 的推理和训练代码。它旨在配合 Data-Speech 仓库进行数据集标注。

[!IMPORTANT]
2024年8月8日: 我们自豪地发布两个新的 Parler-TTS 检查点:
1. Parler-TTS Mini,一个 8.8 亿参数的模型。
2. Parler-TTS Large,一个 23 亿参数的模型。

这些检查点已在 4.5 万小时的有声书数据上进行了训练。

此外,代码已针对更快的生成速度进行了优化:我们增加了 SDPA 和 Flash Attention 2 的兼容性,以及编译模型的能力。

📖 快速索引

安装

Parler-TTS 依赖项轻量,只需一行命令即可安装:

pip install git+https://github.com/huggingface/parler-tts.git

Apple Silicon 用户需要运行后续命令以使用支持 bfloat16 的 PyTorch(2.4)夜间构建版:

pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu

使用

[!TIP]
你可以直接在交互式演示中试用 这里

使用 Parler-TTS 就像说“bonjour”一样简单。只需安装一次库:

pip install git+https://github.com/huggingface/parler-tts.git

🎲 随机声音

Parler-TTS 经过训练,可以生成可通过简单文本提示控制的语音特征,例如:

import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"

model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler-tts-mini-v1").to(device)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler-tts-mini-v1")

prompt = "Hey, how are you doing today?"
description = "A female speaker delivers a slightly expressive and animated speech with a moderate speed and pitch. The recording is of very high quality, with the speaker's voice sounding clear and very close up."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

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)

🎯 使用特定说话者

为确保跨生成过程说话者的一致性,此检查点还在 34 个以姓名区分的说话者上进行了训练。可用的说话者完整列表包括:
Laura, Gary, Jon, Lea, Karen, Rick, Brenda, David, Eileen, Jordan, Mike, Yann, Joy, James, Eric, Lauren, Rose, Will, Jason, Aaron, Naomie, Alisa, Patrick, Jerry, Tina, Jenna, Bill, Tom, Carol, Barbara, Rebecca, Anna, Bruce, Emily。

要利用此功能,只需调整你的文本描述以指定使用哪个说话者:Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise.

你可以将“Jon”替换为上面列表中的任何姓名,以利用不同的说话者特征。每个说话者都有独特的音质,可以根据你的具体需求进行调整。有关说话者声音一致性的更详细信息,请参阅推理指南

import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"

model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler-tts-mini-v1").to(device)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler-tts-mini-v1")

prompt = "Hey, how are you doing today?"
description = "Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

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)

提示
* 包含术语“very clear audio”以生成最高质量的音频,使用“very noisy audio”则生成高背景噪声的音频。
* 可以使用标点符号来控制生成的韵律,例如使用逗号在语音中添加短暂停顿。
* 其余语音特征(性别、语速、音高和混响)可以直接通过提示词控制。

✨ 优化推理速度

我们已设置一个推理指南来加速生成。包括 SDPA、torch.compile 和流式处理!

https://github.com/huggingface/parler-tts/assets/52246514/251e2488-fe6e-42c1-81cd-814c5b7795b0

训练


Open In Colab

训练文件夹 包含训练或微调你自己的 Parler-TTS 模型所需的所有信息。它包括:
- 1. Parler-TTS 架构介绍
- 2. 入门第一步
- 3. 训练指南

[!IMPORTANT]
太长不看版: 按照安装步骤操作后,你可以通过以下命令行复现 Parler-TTS Mini v1 的训练方案:

accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json

[!IMPORTANT]
你也可以在单说话者数据集示例上遵循此微调指南

致谢

这个库建立在许多开源巨人的肩膀上,我们想向他们致以最热烈的感谢,感谢他们提供了这些工具!

特别感谢:
- 分别来自 Stability AI 和爱丁堡大学的 Dan Lyth 和 Simon King,发表了如此有前景且清晰的研究论文:《使用合成标注进行高保真文本转语音的自然语言引导》。
- 所使用的众多库,即 🤗 datasets🤗 acceleratejiwerwandb🤗 transformers
- Descript 提供的 DAC 编解码器模型
- Hugging Face 🤗 提供的计算资源和探索时间!

引用

如果你觉得这个仓库有用,请考虑引用这项工作以及原始的 Stability AI 论文:

@misc{lacombe-etal-2024-parler-tts,
  author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
  title = {Parler-TTS},
  year = {2024},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/huggingface/parler-tts}}
}
@misc{lyth2024natural,
      title={Natural language guidance of high-fidelity text-to-speech with synthetic annotations},
      author={Dan Lyth and Simon King},
      year={2024},
      eprint={2402.01912},
      archivePrefix={arXiv},
      primaryClass={cs.SD}
}

贡献

欢迎贡献,因为该项目提供了许多改进和探索的可能性。

具体来说,我们正在寻找提高质量和速度的方法:
- 数据集:
- 在更多数据上训练。
- 添加更多特征,如口音。
- 训练:
- 添加 PEFT 兼容性以进行 LoRA 微调。
- 添加无需描述列进行训练的可能性。
- 添加笔记本训练。
- 探索多语言训练。
- 探索单说话者微调。
- 探索更多架构。
- 优化:
- 编译和静态缓存。
- 支持 FA2 和 SDPA。
- 评估:
- 添加更多评估指标。

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 31 ms
Developed with Cursor