Parler-TTS는 주어진 화자의 스타일(성별, 음조, 말하는 스타일 등)에 따라 고품질의 자연스러운 음성을 생성할 수 있는 경량의 TTS(텍스트 음성 변환) 모델입니다. 이는 각각 Stability AI와 Edinburgh University의 Dan Lyth와 Simon King이 작성한 합성 주석을 사용한 고품질 텍스트 음성 변환의 자연어 안내 논문의 작업을 재현한 것입니다.
다른 TTS 모델과 달리 Parler-TTS는 완전한 오픈 소스 릴리스입니다. 모든 데이터 세트, 전처리, 훈련 코드 및 가중치는 허용 라이선스에 따라 공개적으로 공개되므로 커뮤니티는 우리 작업을 기반으로 자체 강력한 TTS 모델을 개발할 수 있습니다.
이 저장소에는 Parler-TTS에 대한 추론 및 학습 코드가 포함되어 있습니다. 이는 데이터 세트 주석을 위한 Data-Speech 저장소와 함께 설계되었습니다.
중요한
2024년 8월 8일: 두 개의 새로운 Parler-TTS 체크포인트를 출시하게 된 것을 자랑스럽게 생각합니다.
이러한 체크포인트는 45,000시간의 오디오북 데이터에 대해 교육을 받았습니다.
또한 코드는 훨씬 더 빠른 생성을 위해 최적화되었습니다. 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
팁
여기의 대화형 데모에서 직접 사용해 볼 수 있습니다!
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 모델을 훈련하거나 미세 조정하는 데 필요한 모든 정보가 포함되어 있습니다. 그것은 다음으로 구성됩니다:
중요한
핵심요약: 설치 단계를 따른 후 다음 명령줄을 사용하여 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}
}
이 프로젝트는 개선과 탐색을 위한 많은 가능성을 제공하므로 기여를 환영합니다.
즉, 우리는 품질과 속도를 모두 향상시킬 수 있는 방법을 찾고 있습니다.