Home
Login

Modèle de synthèse vocale léger qui génère une voix de haute qualité et naturelle à partir de descriptions en langage naturel.

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

Présentation détaillée du projet Parler TTS

Aperçu du projet

Parler-TTS est un modèle de synthèse vocale (TTS) léger, capable de générer une voix de haute qualité et naturelle, tout en permettant de contrôler le style de l'orateur (genre, ton, débit, etc.). Ce projet est une implémentation open source de l'article de recherche de Stability AI et de l'Université d'Édimbourg intitulé "Natural language guidance of high-fidelity text-to-speech with synthetic annotations".

Caractéristiques du projet

  • Entièrement open source: Contrairement à d'autres modèles TTS, Parler-TTS est une version entièrement open source.
  • Ensemble de données ouvert: Tous les ensembles de données, le prétraitement, le code d'entraînement et les poids sont publiés sous une licence permissive.
  • Contrôle du langage naturel: Les caractéristiques vocales peuvent être contrôlées par de simples instructions textuelles.
  • Différentes tailles de modèles: Différentes versions de modèles avec différentes tailles de paramètres sont disponibles.

Versions de modèles disponibles

1. Parler-TTS Mini v1

  • Nombre de paramètres: 880M
  • Données d'entraînement: 45K heures de données de livres audio
  • Caractéristiques: Léger, adapté à l'inférence rapide

2. Parler-TTS Large v1

  • Nombre de paramètres: 2.2B paramètres
  • Données d'entraînement: 45K heures de données audio
  • Caractéristiques: Génération vocale de meilleure qualité

3. Parler-TTS Mini Expresso

  • Fonctionnalités spéciales: Offre un contrôle émotionnel supérieur (joie, confusion, rire, tristesse) et des voix cohérentes (Jerry, Thomas, Elisabeth, Talia)

Installation

Installation de base

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

Utilisateurs d'Apple Silicon

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

Utilisation

Exemple d'utilisation de base

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)

Utilisation d'un orateur prédéfini

Le modèle prend en charge 34 orateurs prédéfinis, notamment : 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.

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)

Astuces d'utilisation

  • Utilisez "very clear audio" pour générer un audio de la plus haute qualité.
  • Utilisez "very noisy audio" pour ajouter un niveau élevé de bruit de fond.
  • Vous pouvez utiliser la ponctuation pour contrôler la prosodie de la voix, par exemple en utilisant des virgules pour ajouter de courtes pauses dans la voix.
  • Les autres caractéristiques vocales (genre, débit, ton et réverbération) peuvent être contrôlées directement par des instructions.

Entraînement et affinage

Entraînement rapide

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

Support de l'affinage

Le projet fournit un guide complet d'entraînement et d'affinage, comprenant :

  • Présentation de l'architecture
  • Étapes de démarrage
  • Guide d'entraînement détaillé
  • Exemple d'affinage d'un ensemble de données d'un seul orateur

Optimisations techniques

Le projet comprend plusieurs optimisations de performance :

  • Compatibilité SDPA et Flash Attention 2
  • Capacité de compilation de modèles
  • Support de la génération en flux continu
  • Optimisation du cache statique

Structure du projet

  • Code d'inférence: Fonctionnalités principales d'inférence TTS
  • Code d'entraînement: Flux complets d'entraînement et d'affinage
  • Intégration Data-Speech: Collaboration avec les bibliothèques d'annotation d'ensembles de données
  • Outils d'optimisation: Diverses options d'optimisation de la vitesse d'inférence

Cas d'utilisation

  • Production de livres audio
  • Assistants vocaux
  • Production de contenu éducatif
  • Technologies d'assistance à l'accessibilité
  • Création de contenu multimédia

Licence open source et citation

Le projet est sous une licence open source permissive, encourageant la contribution de la communauté et l'utilisation commerciale. Si vous utilisez ce projet, veuillez citer :

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

Contribution de la communauté

Le projet accueille les contributions de la communauté, en particulier dans les domaines suivants :

  • Extension et diversité des ensembles de données
  • Optimisation des méthodes d'entraînement
  • Support multilingue
  • Optimisation des performances
  • Amélioration des métriques d'évaluation

Parler TTS représente une avancée significative dans la technologie TTS open source, offrant aux chercheurs et aux développeurs une solution de synthèse vocale puissante et flexible.

Star History Chart