Parler-TTS
综合介绍
Parler-TTS 是一个由 Hugging Face 推出的轻量级文本转语音(TTS)模型库。 它能够根据用户提供的文本描述,生成具有特定说话风格(如性别、音高、语速、情绪等)的高质量、自然流畅的语音。 该项目的独特之处在于其完全开源的特性,Hugging Face 公开了所有的数据集、预处理代码、训练代码和模型权重,允许开发者在此基础上构建和训练自己的语音合成模型。 Parler-TTS 的核心创新在于使用自然语言提示来控制语音的各种属性,用户只需通过一段描述性文字,就能轻松调整生成语音的风格,而无需复杂的参数设置。 这使得非技术人员也能方便地使用它。 该项目基于 Stability AI 和爱丁堡大学的研究论文,并提供了多个预训练模型,包括为快速生成而设计的 Mini 模型和为追求更高语音质量而设计的 Large 模型。
功能列表
- 通过文本描述控制语音风格: 用户可以通过自然语言描述来指定生成语音的性别、音高、语速、混响、背景噪音和情绪等特征。
- 支持多种预设声音: 模型内置了多个具有不同说话风格的预设声音,用户可以通过在描述中指定说话者姓名(如 "Jon", "Laura" 等)来使用特定的声音。
- 完全开源: 提供所有数据集、预处理代码、训练代码和模型权重,方便社区进行二次开发和研究。
- 多种模型尺寸: 提供不同参数量的模型,如 Parler-TTS Mini 和 Parler-TTS Large,以满足不同场景下对速度和质量的需求。
- 支持流式生成: 对于较长的文本,支持以数据流的方式分块生成音频,缩短首次听到音频的等待时间。
- 性能优化: 支持 SDPA (Scaled Dot-Product Attention) 和 Flash Attention 2 等技术,并能够对模型进行编译,以提升生成速度。
- 多语言支持: 社区已经基于 Parler-TTS 衍生出支持多种语言的模型,例如支持8种欧洲语言的多语言版本。
使用帮助
Parler-TTS 的使用流程非常直接,主要依赖于 Hugging Face 的 transformers
和 parler_tts
库。以下是详细的使用步骤:
1. 安装
首先,你需要安装 parler_tts
库。推荐使用 pip 直接从 GitHub 仓库安装,以确保获取最新版本。
pip install git+https://github.com/huggingface/parler-tts.git
同时,也需要安装 transformers
和 soundfile
等依赖库。
pip install transformers torch soundfile
为了获得更好的性能,建议在有 GPU 的环境(如NVIDIA显卡)下运行,并确保已安装与你的显卡驱动兼容的 PyTorch 版本。 如果没有 GPU,也可以在 CPU 上运行,但生成速度会慢很多。
2. 基本使用(生成随机语音)
最基础的用法是提供一段需要转换为语音的文本(prompt)和一段描述期望语音风格的文字(description)。
以下是一个简单的 Python 代码示例:
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf
# 检查是否有可用的 CUDA 设备 (GPU),否则使用 CPU
device = "cuda:0" if torch.cuda.is_available() else "cpu"
# 从 Hugging Face Hub 加载预训练模型和分词器
# 此处使用 mini 模型,速度较快
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)
# 将生成的音频数据转换为 NumPy 数组
audio_arr = generation.cpu().numpy().squeeze()
# 保存为 WAV 文件
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)
print("音频已保存为 parler_tts_out.wav")
3. 使用特定的说话人
Parler-TTS 模型预设了多个说话人,你可以通过在描述中直接使用他们的名字来调用特定的声音。
例如,要使用名为 "Jon" 的声音,你可以这样修改描述:
# ... (前面的代码保持不变) ...
prompt = "This is a test of the emergency broadcast system."
description = "Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise."
# ... (后面的生成和保存代码保持不变) ...
可用的说话人姓名包括 Laura, Gary, Jon, Lea, Karen, Rick 等等。
4. 语音风格控制技巧
为了生成更理想的音频,你可以尝试以下技巧:
- 清晰度: 在描述中加入 "very clear audio" 可以生成背景噪音很小的高质量音频。相反,使用 "very noisy audio" 可以增加背景噪音。
- 停顿和韵律: 合理使用标点符号,例如逗号,可以在生成的语音中制造自然的停顿,改善语音的节奏感。
- 其他属性: 性别(gender)、语速(speaking rate)、音高(pitch)和混响(reverberation)等特征都可以通过在描述中直接说明来控制。
- 尝试与组合: 不断尝试不同的描述组合是找到最佳效果的关键。例如,你可以描述 "A male speaker with a deep, confident tone and moderate speed." 来获得沉稳自信的男声。
5. 性能优化
对于追求更高生成效率的用户,可以采取以下措施:
- 使用 GPU: 强烈建议在配备 NVIDIA GPU 的环境中使用,可以大幅提升生成速度。
- 模型编译: 使用
torch.compile
可以优化模型,进一步加快推理速度。 - 流式输出: 对于长文本,可以使用流式API,在音频完全生成前就开始播放,降低延迟。
通过以上步骤和技巧,你可以灵活地使用 Parler-TTS 来满足各种文本转语音的需求。
应用场景
- 内容创作为视频、播客或有声读物快速生成旁白和配音。创作者无需自己录音或聘请配音演员,只需通过文本描述即可定制符合内容风格的声音。
- 虚拟助手和聊天机器人为智能客服、虚拟助手或交互式应用提供更加自然和富有表现力的语音反馈,提升用户体验。
- 语言学习生成不同口音和语速的标准发音,帮助语言学习者进行听力练习和发音模仿。
- 原型设计和开发在产品开发初期,快速为需要语音功能的应用(如游戏、交互式故事)创建占位音频,而无需等待最终的录音版本。
QA
- 什么是 Parler-TTS?Parler-TTS 是一个开源的文本转语音模型库,它可以通过用户提供的文本描述来生成高质量、风格多样的语音。 它由 Hugging Face 发布,代码和模型权重完全开放,允许开发者自由使用和修改。
- Parler-TTS 支持中文吗?官方模型目前主要支持英文。 不过,由于其开源的特性,社区已经有成员基于其架构训练出了支持其他语言(如日语、欧洲多国语言)的模型。
- 如何控制生成的语音听起来像男性还是女性?你可以在描述文本中直接指定,例如 "A male speaker..." 或 "A female speaker..."。 此外,还可以通过指定预设的说话人姓名(如 "Jon" 或 "Laura")来获得特定的男性或女性声音。
- 使用 Parler-TTS 需要付费吗?不需要。Parler-TTS 是一个完全开源的项目,你可以免费在本地设备或服务器上运行它。
- 在没有GPU的电脑上可以运行 Parler-TTS 吗?可以,但速度会非常慢。 为了获得流畅的体验和较快的生成速度,强烈建议在配备了 NVIDIA GPU 的环境中使用。 如果没有本地GPU,可以考虑使用 Google Colab 等云端计算平台。