Parler-TTS เป็นโมเดลการอ่านออกเสียงข้อความ (TTS) แบบน้ำหนักเบาที่สามารถสร้างคำพูดคุณภาพสูงและฟังดูเป็นธรรมชาติในรูปแบบของผู้พูดที่กำหนด (เพศ ระดับเสียงสูงต่ำ สไตล์การพูด ฯลฯ) เป็นการทำซ้ำผลงานจากรายงาน คำแนะนำภาษาธรรมชาติ ของการอ่านออกเสียงข้อความที่มีความเที่ยงตรงสูง พร้อมคำอธิบายประกอบสังเคราะห์โดย Dan Lyth และ Simon King จาก Stability AI และ Edinburgh University ตามลำดับ
ตรงกันข้ามกับรุ่น TTS อื่นๆ Parler-TTS เป็นรุ่น โอเพ่นซอร์สเต็มรูปแบบ ชุดข้อมูล การประมวลผลล่วงหน้า รหัสการฝึกอบรม และน้ำหนักทั้งหมดได้รับการเผยแพร่ต่อสาธารณะภายใต้ใบอนุญาตที่ได้รับอนุญาต ซึ่งช่วยให้ชุมชนต่อยอดงานของเราและพัฒนาโมเดล TTS อันทรงพลังของตนเองได้
พื้นที่เก็บข้อมูลนี้ประกอบด้วยรหัสการอนุมานและการฝึกอบรมสำหรับ Parler-TTS ได้รับการออกแบบมาเพื่อใช้ร่วมกับพื้นที่เก็บข้อมูล Data-Speech สำหรับคำอธิบายประกอบชุดข้อมูล
สำคัญ
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}
}
ยินดีให้การสนับสนุน เนื่องจากโครงการนี้มีความเป็นไปได้มากมายสำหรับการปรับปรุงและการสำรวจ
กล่าวคือ เรากำลังพิจารณาวิธีปรับปรุงทั้งคุณภาพและความเร็ว: