Implémentation d'un modèle de conversion vocale IA avec so-vits-svc et Spleeter en Python

Introduction à la synthèse vocale par VITS

Les modèles d'intelligence artificielle permettent aujourd'hui de cloner des voix avec une précision remarquable. Cette prouesse repose sur des architectures avancées telles que VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech). Ce framework combine l'inférence variationnelle, les flux normalisants et l'apprentissage adversarial pour générer une parole hautement expressive.

En reliant le modèle acoustique et le vocodeur via des variables latentes plutôt que par des spectrogrammes, VITS intègre une modélisation stochastique et un prédicteur de durée aléatoire. Cela garantit une grande diversité dans la synthèse, permettant de produire des intonations et des rythmes variés à partir d'un même texte.

Configuration de l'environnement so-vits-svc

Pour déployer cette technologie, nous utiliserons la bibliothèque open-source so-vits-svc sous Python 3.10. Commencez par cloner le dépôt officiel et accéder au répertoire :

git clone https://github.com/svc-develop-team/so-vits-svc.git
cd so-vits-svc

Installez ensuite les dépendances requises. Pour les systèmes Unix (Linux/macOS) :

pip install -r requirements.txt

Pour les environnements Windows, utilisez le fichier de dépendances spécifique :

pip install -r requirements_win.txt

Une fois l'installation terminée, lancez l'interface web locale :

python webUI.py

Le serveur Gradio démarrera et sera accessible via l'adresse locale http://127.0.0.1:7860. Cette interface permettra de charger les modèles et d'effectuer les conversions vocales.

Intégration des modèles pré-entraînés

Pour utiliser une voix spécifique, vous devez disposer de poids pré-entraînés. Téléchargez les fichiers du modèle et placez-les dans la structure de dossiers suivante :

  • Les fichiers de poids (ex: G_27200.pth) et les clusters (ex: kmeans_10000.pt) doivent être placés dans le dossier logs/44k/.
  • Le fichier de configuraton (ex: config.json) doit être déplacé dans le dossier configs/.

Une fois les fichiers positionnés, actualisez l'interface web et sélectionnez le modèle correspondant dans le menu déroulant.

Séparation des sources audio avec Spleeter

Avant d'appliquer la conversion vocale, il est impératif d'isoler la voix principale de la piste instrumentale. Les modèles de conversion ne doivent traiter que la voix, car l'accompagnement est considéré comme du bruit parasite. Nous utiliserons Spleeter pour cette tâche de séparation de sources.

Installez l'outil via pip :

pip install spleeter

Exécutez ensuite la commande pour extraire les pistes d'une chanson cible :

spleeter separate -p spleeter:2stems -o ./separated_audio/ input_track.mp3

Lors de la première exécution, les modèles pré-entraînés seront téléchargés. Le processus générera deux fichiers dans le dossier de sortie :

  • vocals.wav : la piste vocale isolée (acapella).
  • accompaniment.wav : la piste instrumentale.

Inférence et ajustement des paramètres

Dans l'interface web de so-vits-svc, importez le fichier vocals.wav obtenu précédemment. Le processus d'inférence nécessite un ajustement minutieux des paramètres pour éviter deux artefacts courants : l'enrouement de la voix et les fausses notes.

Le paramètre de filtrage moyen F0 (F0 mean filter) joue un rôle crucial :

  • Une valeur élevée lisse la voix et réduit l'enrouement, mais augmente le risque de décalage de hauteur (fausses notes).
  • Une valeur plus basse préserve mieux la justesse, mais peut introduire des artefacts sonores ou un effet métallique.

Il est nécessaire d'itérer sur ces réglages et d'écouter attentivement le rendu pour trouver le compromis optimal.

Fusion finale des pistes avec FFmpeg

Après l'inférence, vous obtiendrez un nouveau fichier audio contenant la voix convertie. La dernière étape consiste à mélanger cette voix synthétique avec l'instrumentale extraite précédemment. FFmpeg est l'outil idéal pour ce mixage.

Utilisez la commande suivante pour superposer les deux pistes audio et générer le fichier final :

ffmpeg -i converted_vocals.wav -i accompaniment.wav -filter_complex "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=2" final_mix.wav

Cette commande utilise le filtre amix pour combiner les deux flux audio en un seul fichier final_mix.wav, prêt à être écouté.

Étiquettes: so-vits-svc VITS Spleeter FFmpeg Python

Publié le 12 juillet à 04h28