Parler-TTS 是一種輕量級文字轉語音 (TTS) 模型,可以按照給定說話者的風格(性別、音調、說話風格等)產生高品質、聽起來自然的語音。它是 Stability AI 和愛丁堡大學的 Dan Lyth 和 Simon King 論文《具有合成註釋的高保真文本到語音的自然語言指導》的複製品。
與其他 TTS 模型相反,Parler-TTS 是一個完全開源的版本。所有資料集、預處理、訓練程式碼和權重均在許可下公開發布,使社群能夠在我們的工作基礎上開發自己強大的 TTS 模型。
此儲存庫包含 Parler-TTS 的推理和訓練程式碼。它旨在配合數據語音存儲庫進行數據集註釋。
重要的
08/08/2024:我們很自豪地發布兩個新的 Parler-TTS 檢查點:
這些檢查點已經接受了 45,000 小時的有聲書資料的訓練。
此外,程式碼還針對更快的生成進行了最佳化:我們新增了 SDPA 和 Flash Attention 2 相容性,以及編譯模型的功能。
Parler-TTS 有輕量級依賴關係,可以一行安裝:
pip install git+https://github.com/huggingface/parler-tts.git
Apple Silicon 用戶需要執行後續命令才能使用夜間 PyTorch (2.4) 建置來支援 bfloat16:
pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
提示
您可以直接在此處的互動式演示中試用!
使用 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、艾莉莎、派崔克、傑瑞、蒂娜、珍娜、比爾、湯姆、卡蘿、芭芭拉、麗貝卡、安娜、布魯斯、艾蜜莉。
要利用這一點,只需調整您的文字描述以指定要使用的揚聲器: 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 )
尖端:
我們建立了一個推理指南來加快生成速度。想想 SDPA、torch.compile 和串流媒體!
訓練資料夾包含訓練或微調您自己的 Parler-TTS 模型的所有資訊。它包括:
重要的
TL;DR:依照安裝步驟操作後,您可以使用以下命令列重現 Parler-TTS Mini v1 訓練配方:
accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json
重要的
您也可以按照單揚聲器資料集範例的微調指南進行操作。
該庫建立在許多開源巨頭的基礎上,我們對他們提供這些工具表示最熱烈的感謝!
特別鳴謝:
如果您發現此儲存庫有用,請考慮引用這項工作以及原始的 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}
}
歡迎貢獻,因為該專案提供了許多改進和探索的可能性。
也就是說,我們正在尋找提高品質和速度的方法: