🌟 Aperçu du Projet

Le script cv6.py implĂ©mente une application de clonage de voix basĂ©e sur la librairie TTS de Coqui, utilisant spĂ©cifiquement le modĂšle XTTS-v2 pour la synthĂšse vocale multilingue. L’application est construite avec Tkinter pour fournir une interface utilisateur graphique (GUI) conviviale, permettant de gĂ©nĂ©rer de l’audio Ă  partir d’un fichier texte et d’un Ă©chantillon vocal de rĂ©fĂ©rence.

Elle inclut des fonctionnalitĂ©s avancĂ©es comme la gestion de la configuration, le multithreading pour la gĂ©nĂ©ration audio, l’utilisation optionnelle du GPU (CUDA), et le traitement audio (rééchantillonnage, ajout de silence, normalisation). La langue cible est fixĂ©e au Français (fr).


⚙ PrĂ©requis et Configuration

1. Environnement

Ce script nécessite Python 3.x et plusieurs librairies.

2. Installation des Librairies

Tu dois installer les dépendances suivantes dans ton environnement Python :

Shell

Note importante : Le paquet TTS (et torch) est lourd et peut prendre du temps Ă  tĂ©lĂ©charger, car il inclut le modĂšle XTTS-v2 qui sera tĂ©lĂ©chargĂ© lors de la premiĂšre utilisation. Si tu souhaites utiliser le GPU, assure-toi d’avoir la version de torch compatible avec ton installation CUDA.

3. Fichier de Configuration

Le programme crĂ©e et utilise automatiquement un fichier de configuration nommĂ© xtts_config.ini pour sauvegarder les chemins de fichiers et les rĂ©glages de l’interface (comme l’utilisation du GPU et la gĂ©omĂ©trie de la fenĂȘtre).


🚀 Utilisation de l’Application (GUI)

Le script est exécuté comme une application autonome :

Shell

L’interface utilisateur permet de rĂ©aliser les Ă©tapes suivantes :

  1. Fichier texte (.txt) :
    • Clique sur « Parcourir » pour sĂ©lectionner un fichier texte (.txt) contenant le script Ă  lire.
    • Chaque phrase se terminant par un point (.), un point d’interrogation (?) ou un point d’exclamation (!) sera traitĂ©e individuellement.
  2. Fichier WAV référence :
    • Clique sur « Parcourir » pour sĂ©lectionner un fichier audio WAV (.wav) de la voix que tu souhaites cloner.
    • Recommandation : La durĂ©e de l’Ă©chantillon doit idĂ©alement ĂȘtre comprise entre 3 et 120 secondes. Le fichier sera rééchantillonnĂ© automatiquement Ă  24000 Hz si nĂ©cessaire.
  3. Fichier de sortie (.wav) :
    • SpĂ©cifie le nom du fichier de sortie (.wav).
    • Clique sur « Choisir » pour spĂ©cifier un emplacement et un nom de fichier diffĂ©rents.
  4. Options Avancées :
    • Utiliser GPU (CUDA) : Coche cette case pour utiliser le GPU pour la gĂ©nĂ©ration, si torch dĂ©tecte une carte compatible. Ceci accĂ©lĂšre considĂ©rablement la gĂ©nĂ©ration.
    • Silence entre phrases (ms) : RĂšgle la durĂ©e du silence ajoutĂ© entre chaque phrase gĂ©nĂ©rĂ©e (valeur par dĂ©faut : 300 ms).
  5. Actions :
    • « GĂ©nĂ©rer audio » : DĂ©marre le processus de clonage de voix dans un thread sĂ©parĂ©.
    • « STOP » : Permet d’annuler une gĂ©nĂ©ration en cours.
    • « ▶ Écouter le rĂ©sultat » : Lance la lecture du fichier de sortie gĂ©nĂ©rĂ© (nĂ©cessite la librairie simpleaudio).

đŸ§± Structure du Code et Composants ClĂ©s

1. Variables Globales

VariableDescriptionValeur par Défaut
MODEL_NAMEChemin du modĂšle XTTS-v2 Ă  utiliser."tts_models/multilingual/multi-dataset/xtts_v2"
SPEAKER_SAMPLE_RATEFrĂ©quence d’Ă©chantillonnage cible pour la voix de rĂ©fĂ©rence et la sortie.24000 Hz
MIN_REF_DURATIONDurée minimale recommandée pour le fichier de référence.3.0 s
GPU_AVAILABLEVérifie si CUDA (GPU) est disponible.torch.cuda.is_available()

2. Fonctions de Génération (Logique Métier)

  • start_generation_thread : Lance la tĂąche de gĂ©nĂ©ration dans un thread sĂ©parĂ© pour Ă©viter de bloquer l’interface.
  • stop_generation : Permet l’annulation de la tĂąche via un flag (self.stop_flag).
  • generate_audio_task :
    • Initialise et charge le modĂšle XTTS (une seule fois).
    • Rééchantillonne le fichier de rĂ©fĂ©rence Ă  24000 Hz si sa frĂ©quence est diffĂ©rente.
    • Divise le fichier texte en phrases distinctes.
    • GĂ©nĂšre l’audio phrase par phrase, en les concatĂ©nant avec des segments de silence. La langue est fixĂ©e Ă  Français (language="fr").
    • Normalise le volume du fichier audio final avant l’exportation.
    • Fournit une estimation du temps restant et met Ă  jour la progression dans la GUI.
  • _cleanup_on_finish : Supprime le dossier temporaire (./temp_tts_files) une fois la tĂąche terminĂ©e ou annulĂ©e.

💡 Conseils d’ImplĂ©mentation et Outils

1. Amélioration de la Qualité

  • QualitĂ© de la rĂ©fĂ©rence : Le succĂšs du clonage dĂ©pend fortement de la qualitĂ© (pas de bruit de fond, pas de musique) et de la cohĂ©rence de la voix dans le fichier WAV de rĂ©fĂ©rence.
  • RĂ©vision du texte : Assure-toi que le fichier texte est correctement ponctuĂ©. La division des phrases par l’expression rĂ©guliĂšre dĂ©pend des signes de ponctuation.

2. Conversion MP3 vers WAV (24000 Hz, Mono)

Pour garantir un format idĂ©al pour le fichier de rĂ©fĂ©rence, tu peux utiliser FFmpeg pour convertir des fichiers MP3 (ou autres) vers un fichier WAV mono avec un taux d’Ă©chantillonnage de 24000 Hz.

Commande FFmpeg :

Shell
OptionDescription
-i input_reference.mp3SpĂ©cifie le fichier d’entrĂ©e (ton fichier MP3).
-ac 1Force le nombre de canaux audio Ă  1 (canal mono).
-ar 24000Force le taux d’Ă©chantillonnage (sample rate) Ă  24000 Hz.
output_reference_24k_mono.wavSpécifie le fichier de sortie au format WAV.

Source

Python


0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *