Home
Login

자연어 설명을 통해 고품질의 자연스러운 음성을 생성할 수 있는 경량 텍스트 음성 변환 모델

Apache-2.0Python 5.3khuggingfaceparler-tts Last Updated: 2024-12-10

Parler TTS 프로젝트 상세 소개

프로젝트 개요

Parler-TTS는 경량 텍스트 음성 변환(TTS) 모델로, 고품질의 자연스러운 음성을 생성하며, 화자의 스타일(성별, 음조, 말투 등)을 제어할 수 있습니다. 이 프로젝트는 Stability AI와 에든버러 대학교의 연구 논문 "Natural language guidance of high-fidelity text-to-speech with synthetic annotations"의 오픈 소스 구현입니다.

프로젝트 특징

  • 완전 오픈 소스: 다른 TTS 모델과 달리 Parler-TTS는 완전 오픈 소스 배포 버전입니다.
  • 데이터셋 공개: 모든 데이터셋, 전처리, 훈련 코드 및 가중치가 관대한 라이선스 하에 공개됩니다.
  • 자연어 제어: 간단한 텍스트 프롬프트를 통해 음성 특징을 제어할 수 있습니다.
  • 다양한 모델 규모: 다양한 매개변수 규모의 모델 버전을 제공합니다.

사용 가능한 모델 버전

1. Parler-TTS Mini v1

  • 매개변수: 880M
  • 훈련 데이터: 45K 시간 오디오북 데이터
  • 특징: 경량, 빠른 추론에 적합

2. Parler-TTS Large v1

  • 매개변수: 2.2B 매개변수
  • 훈련 데이터: 45K 시간 오디오 데이터
  • 특징: 더 높은 품질의 음성 생성

3. Parler-TTS Mini Expresso

  • 특징: 뛰어난 감정 제어(기쁨, 혼란, 웃음, 슬픔) 및 일관된 음성(Jerry, Thomas, Elisabeth, Talia) 제공

설치 방법

기본 설치

pip install git+https://github.com/huggingface/parler-tts.git

Apple Silicon 사용자

pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu

사용 방법

기본 사용 예시

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)

사전 정의된 화자 사용

이 모델은 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를 포함한 34명의 사전 정의된 화자를 지원합니다.

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)

사용 팁

  • "very clear audio"를 사용하여 최고 품질의 오디오 생성
  • "very noisy audio"를 사용하여 높은 수준의 배경 소음 추가
  • 구두점을 사용하여 음성의 운율을 제어할 수 있습니다. 예를 들어 쉼표를 사용하여 음성에 짧은 멈춤 추가
  • 나머지 음성 특징(성별, 말하기 속도, 음조 및 잔향)은 프롬프트를 통해 직접 제어할 수 있습니다.

훈련 및 미세 조정

빠른 훈련

accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json

미세 조정 지원

프로젝트는 다음을 포함한 완전한 훈련 및 미세 조정 가이드를 제공합니다.

  • 아키텍처 소개
  • 시작 단계
  • 상세 훈련 가이드
  • 단일 화자 데이터셋 미세 조정 예시

기술 최적화

프로젝트에는 다양한 성능 최적화가 포함되어 있습니다.

  • SDPA 및 Flash Attention 2 호환성
  • 모델 컴파일 기능
  • 스트리밍 생성 지원
  • 정적 캐시 최적화

프로젝트 구조

  • 추론 코드: 핵심 TTS 추론 기능
  • 훈련 코드: 완전한 훈련 및 미세 조정 프로세스
  • Data-Speech 통합: 데이터셋 주석 라이브러리와 협업
  • 최적화 도구: 다양한 추론 속도 최적화 옵션

응용 분야

  • 오디오북 제작
  • 음성 비서
  • 교육 콘텐츠 제작
  • 접근성 보조 기술
  • 멀티미디어 콘텐츠 제작

오픈 소스 라이선스 및 인용

프로젝트는 관대한 오픈 소스 라이선스를 채택하여 커뮤니티 기여 및 상업적 사용을 장려합니다. 이 프로젝트를 사용하는 경우 다음을 인용하는 것이 좋습니다.

@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}}
}

커뮤니티 기여

프로젝트는 특히 다음 분야에서 커뮤니티 기여를 환영합니다.

  • 데이터셋 확장 및 다양성
  • 훈련 방법 최적화
  • 다국어 지원
  • 성능 최적화
  • 평가 지표 개선

Parler TTS는 오픈 소스 TTS 기술의 중요한 진전을 나타내며, 연구자와 개발자에게 강력하고 유연한 텍스트 음성 변환 솔루션을 제공합니다.

Star History Chart