Je clone la voix de Cartman avec Python, PyTorch et TTS
On va apprendre à utiliser Text-To-Speech en Python pour cloner une voix. Ceci est un exemple avec les samples et le résultat pour que vous puissiez voir à quel point les outils IA d'aujourd'hui sont puissants.
Dans ce tuto, nous allons découvrir comment cloner une voix avec Python en utilisant la bibliothèque Text-To-Speech ou encore TTS, basée sur PyTorch.
N'hésitez pas à jeter un oeil au repository
L'objectif est de prendre un fichier audio de la voix de Cartman (de South Park) comme modèle, puis de lui faire dire ce que nous voulons. Le tout, bien sûr, en respectant l'humour et la voix unique de ce personnage emblématique.
Prérequis
Il va falloir utiliser le langage Python. En sachant que Python est le langage pour lequel il y a le plus de librairie IA aujourd'hui.
Assurez-vous que PyTorch et TTS sont installés dans votre environnement Python. Vous pouvez les installer avec les commandes suivantes :
pip install torch
pip install TTS
Préparez un fichier audio
Il vous faut un extrait audio clair de la voix de Cartman, que je vais vous fournir pour l'exemple.
sample voix de cartman - password: dev-freelance
Enregistrez ce fichier dans un répertoire local, par exemple :
./input/cartman.wav
Je vais vous le fournir
Notre code source
Tout ne tiendra qu'en peu de lignes:
import torch
from TTS.api import TTS
device = "cuda" if torch.cuda.is_available() else "cpu"
print(TTS().list_models())
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
text_sample = "Je tiens à vous dire que je vous emmerde et je rentre à ma maison."
input_wav = "./input/cartman.wav"
wav = tts.tts(text=text_sample, speaker_wav=input_wav, language="fr")
tts.tts_to_file(text=text_sample, speaker_wav=input_wav, language="fr", file_path="cm-maison.wav")
On exécute ça avec:
python3 sample.py
Et voici le résultat:
Enjoy 🥳.
Je trouve que le résultat est vraiment pas mal, en sachant qu'on peut encore faire mieux en réessayant plusieurs fois, ou en améliorant le sample en input.
Alexandre P.
Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.
Poursuivre la lecture dans la rubrique Dev