Utiliser Coqui TTS en Python


Coqui TTS est une technologie de synthèse vocale, exploitant l’intelligence artificielle et des modèles génératifs pour produire des voix réalistes. Dans ce guide, nous explorerons comment télécharger et utiliser un modèle Coqui TTS en Python.

Installation

Avant de plonger dans le code, assurez-vous d’avoir installé Coqui TTS. Pour une installation détaillée de Coqui TTS avec PyTorch compilé pour CPU ou Pour cuda (carte graphique Nvidia), veuillez consulter l’article dédié :

https://coderocks.fr/datarocks/ia-app-coquiai/installation-coqui-ai-1369/

Utilisation Simple

Voici un exemple de code pour utiliser Coqui TTS pour générer de la parole. Cet exemple couvre le chargement des modules nécessaires, la vérification de la disponibilité de CUDA, le chargement d’un modèle TTS, et finalement, la génération d’un fichier audio à partir d’un texte. (le modèle utilisé dans le code sera téléchargé automatiquement sur votre ordinateur, voir le point 4 dans les explications du code)

# 1.Importation des modules nécessaires
import torch
from TTS.api import TTS

# 2.Détermination du périphérique de calcul : GPU si disponible, sinon CPU
device = "cuda" if torch.cuda.is_available() else "cpu"

# 3.Affichage de la liste des modèles TTS disponibles
# Cette opération peut aussi être réalisée via la commande 'tts --list_models' dans un environnement virtuel
print(TTS().list_models())

# 4.Chargement du modèle xtts_v2 pour la génération de la voix de synthèse
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)

# 5.Génération de la parole à partir du texte
# text : Le texte à synthétiser
# speaker_wav : Le fichier WAV de la voix de référence à "imiter"
# language : La langue du texte (par exemple, 'fr' pour français, 'en' pour anglais), importante pour l'accent
# file_path : Le chemin où le fichier audio généré sera sauvegardé
tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")

Explication du Code

1. Importation des Modules Nécessaires

from TTS.api import TTS

Cette ligne charge le module TTS, indispensable pour accéder aux fonctionnalités de Coqui TTS. Importer ce module est une étape préliminaire essentielle pour utiliser les outils de synthèse vocale dans votre projet.

import torch

PyTorch est un framework de machine learning open source, largement utilisé pour les applications de deep learning. Son rôle va bien au-delà de l’utilisation dans Coqui TTS ; il sert de base pour l’entraînement et l’exécution de modèles d’intelligence artificielle pour le calcul tensoriel et l’optimisation automatique. En l’important, on accède à un ensemble d’outils permettant de gérer efficacement les calculs et les données nécessaires pour la synthèse vocale.

2. GPU vs CPU

device = "cuda" if torch.cuda.is_available() else "cpu"

Cette ligne détermine le périphérique de calcul à utiliser. CUDA est une technologie de NVIDIA permettant d’utiliser le GPU (la carte graphique) pour des calculs parallèles intensifs, idéal pour le traitement de données et l’apprentissage automatique. L’utilisation de CUDA peut considérablement accélérer les opérations par rapport à l’exécution sur un CPU (le processeur de l’ordinateur), surtout pour les tâches gourmandes en calcul comme la synthèse vocale. La différence clé entre CUDA et le CPU réside dans la manière dont les calculs sont traités : CUDA permet une exécution parallèle de multiples opérations sur la VRAM (Video RAM) du GPU, offrant ainsi une performance accrue. En revanche, sans une carte graphique NVIDIA ou si CUDA n’est pas disponible, le programme se replie sur le CPU, réalisant les calculs dans la RAM standard. Cette méthode est plus lente car elle ne bénéficie pas de l’accélération matérielle spécifique des GPU, rendant le processus de synthèse vocale potentiellement plus lent, mais ça reste acceptable dans ce domaine.

3. Liste des Modèles TTS Disponibles

print(TTS().list_models())

Cette instruction affiche les modèles de synthèse vocale disponibles dans Coqui TTS. C’est un moyen rapide de découvrir les options de modèles que l’on peut charger et utiliser pour générer de la parole. Les modèles varient en taille, de quelques centaines de mégaoctets à plusieurs gigaoctets, influençant directement la qualité et la nature de la voix synthétisée.

tts --list_models

Cette ligne de commande offre une fonctionnalité similaire, accessible via la ligne de commande dans l’environnement virtuel où Coqui TTS est installé. Elle ne fonctionnera pas en dehors de cet environnement mais sert le même objectif. Parmi les modèles les plus couramment utilisés, on trouve XTTS1 (environ 2.8 Go) et XTTS2 (environ 1.8 Go), chacun offrant des caractéristiques uniques pour répondre à divers besoins de synthèse vocale.

4. Chargement du Modèle

tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)

Cette ligne est cruciale car elle initialise le modèle de synthèse vocale que vous souhaitez utiliser. En spécifiant le chemin du modèle, vous indiquez à Coqui TTS quel ensemble de données et quelle architecture de réseau neuronal utiliser pour la génération de la parole. Si le modèle n’est pas déjà téléchargé sur votre machine, le système le récupèrera automatiquement en ligne. Cela implique que votre environnement Python doit avoir accès à Internet, ce qui peut nécessiter une configuration spécifique de votre pare-feu ou de votre système de sécurité pour autoriser ce téléchargement. Les modèles téléchargés sont stockés localement dans le répertoire AppData\Local\tts sous Windows, dans le dossier utilisateur. Étant donné la taille considérable de ces modèles, cela peut être problématique pour les utilisateurs avec un espace disque limité sur leur partition système. Pour ceux souhaitant une gestion plus flexible des emplacements de stockage des modèles, il est possible de configurer Coqui TTS pour utiliser un répertoire personnalisé. Un article complémentaire sur le site, propose des instructions détaillées pour avancer dans cette configuration, permettant de mieux gérer l’espace disque utilisé par ces modèles volumineux.

5. Génération de la Voix

tts.tts_to_file(text="Hello world!", speaker_wav="my/cloning/audio.wav", language="en", file_path="output.wav")

La finalité de notre code, cette ligne génère un fichier audio à partir du texte spécifié. Vous définissez le message à vocaliser, choisissez un fichier audio .wav contenant la voix à cloner (si votre modèle le permet), précisez la langue (ici, l’anglais) et indiquez le chemin où sauvegarder le fichier audio généré. Le processus est assez simple : une fois la commande exécutée, Coqui TTS traite le texte en utilisant le modèle et la voix de référence spécifiés, puis sauvegarde le résultat dans le fichier output.wav au chemin indiqué. La progression de la génération est affichée dans la console, permettant de suivre le processus jusqu’à son achèvement.

En résumé, cette partie du code illustre le flux de travail complet pour la synthèse vocale avec Coqui TTS.