Parler-TTS adalah model text-to-speech (TTS) ringan yang dapat menghasilkan ucapan berkualitas tinggi dan terdengar alami sesuai gaya pembicara tertentu (gender, nada, gaya bicara, dll). Ini adalah reproduksi karya dari makalah Panduan bahasa alami text-to-speech fidelitas tinggi dengan anotasi sintetik oleh Dan Lyth dan Simon King, masing-masing dari Stability AI dan Edinburgh University.
Berbeda dengan model TTS lainnya, Parler-TTS adalah rilis sumber terbuka sepenuhnya . Semua kumpulan data, pra-pemrosesan, kode pelatihan, dan bobot dirilis secara publik di bawah lisensi permisif, sehingga memungkinkan komunitas untuk melanjutkan pekerjaan kami dan mengembangkan model TTS mereka sendiri yang canggih.
Repositori ini berisi kode inferensi dan pelatihan untuk Parler-TTS. Ini dirancang untuk menemani repositori Data-Speech untuk anotasi kumpulan data.
Penting
08/08/2024: Kami dengan bangga merilis dua pos pemeriksaan Parler-TTS baru:
Pos pemeriksaan ini telah dilatih pada data buku audio berdurasi 45 ribu jam.
Selain itu, kode ini dioptimalkan untuk pembuatan yang lebih cepat: kami telah menambahkan kompatibilitas SDPA dan Flash Attention 2, serta kemampuan untuk mengkompilasi model.
Parler-TTS memiliki dependensi yang ringan dan dapat diinstal dalam satu baris:
pip install git+https://github.com/huggingface/parler-tts.git
Pengguna Apple Silicon perlu menjalankan perintah tindak lanjut untuk menggunakan nightly PyTorch (2.4) build untuk dukungan bfloat16:
pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
Tip
Anda bisa langsung mencobanya dalam demo interaktif di sini!
Menggunakan Parler-TTS semudah "bonjour". Cukup instal perpustakaan sekali:
pip install git+https://github.com/huggingface/parler-tts.git
Parler-TTS telah dilatih untuk menghasilkan ucapan dengan fitur yang dapat dikontrol dengan perintah teks sederhana, misalnya:
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 )
Untuk memastikan konsistensi pembicara lintas generasi, pos pemeriksaan ini juga dilatih terhadap 34 pembicara, yang ditandai berdasarkan namanya. Daftar lengkap pembicara yang tersedia meliputi: 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.
Untuk memanfaatkan hal ini, cukup sesuaikan deskripsi teks Anda untuk menentukan speaker mana yang akan digunakan: Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise.
Anda dapat mengganti "Jon" dengan salah satu nama dari daftar di atas untuk memanfaatkan karakteristik speaker yang berbeda. Setiap pembicara memiliki kualitas vokal unik yang dapat dimanfaatkan untuk memenuhi kebutuhan spesifik Anda. Untuk informasi lebih detail tentang performa speaker dengan konsistensi suara, silakan lihat panduan inferensi.
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 )
Kiat :
Kami telah menyiapkan panduan inferensi untuk mempercepat pembuatan. Pikirkan SDPA, torch.compile, dan streaming!
Folder pelatihan berisi semua informasi untuk melatih atau menyempurnakan model Parler-TTS Anda sendiri. Ini terdiri dari:
Penting
TL;DR: Setelah mengikuti langkah-langkah instalasi, Anda dapat mereproduksi resep pelatihan Parler-TTS Mini v1 dengan baris perintah berikut:
accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json
Penting
Anda juga dapat mengikuti panduan penyesuaian ini pada contoh kumpulan data mono-speaker.
Perpustakaan ini dibangun di atas sejumlah raksasa sumber terbuka, dan kepada mereka kami ingin mengucapkan terima kasih sebesar-besarnya karena telah menyediakan alat-alat ini!
Terima kasih khusus kepada:
Jika Anda merasa repositori ini bermanfaat, harap pertimbangkan untuk mengutip karya ini dan juga makalah Stability AI asli:
@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}
}
Kontribusi sangat diharapkan, karena proyek ini menawarkan banyak kemungkinan untuk perbaikan dan eksplorasi.
Yaitu, kami mencari cara untuk meningkatkan kualitas dan kecepatan: