Colas Mérand
11/07/2025
Python
ElevenLabs
API
5 minutes
Automatisation de la génération audio avec Python et l'API ElevenLabs : Guide complet
Dans un monde où le contenu audio prend une place de plus en plus importante, la capacité à générer rapidement des voix off de qualité devient un atout majeur pour de nombreux projets. Que ce soit pour des jeux vidéo, des applications éducatives, des podcasts ou des vidéos explicatives, l'automatisation de la génération audio peut faire gagner un temps précieux tout en maintenant une qualité professionnelle.
Chez Platane, nous avons récemment accompagné plusieurs clients dans l'automatisation de leurs processus de génération audio. Dans cet article, nous partageons notre expertise sur la création d'un script Python permettant d'automatiser la génération de voix off à partir d'un fichier CSV via l'API ElevenLabs.
Pourquoi automatiser la génération audio ?
Avant de plonger dans les aspects techniques, prenons un moment pour comprendre les avantages d'une telle automatisation :
- Gain de temps considérable : générer des centaines de répliques manuellement peut prendre des jours, contre quelques minutes avec un script automatisé
- Cohérence des résultats : l'automatisation garantit une qualité uniforme pour toutes les répliques
- Flexibilité et itérations rapides : modifier et régénérer du contenu devient simple et rapide
- Réduction des coûts : moins d'heures facturées par des ingénieurs du son ou des comédiens pour des modifications mineures
L'API ElevenLabs : une solution de pointe pour la synthèse vocale
ElevenLabs s'est imposé comme l'un des leaders dans le domaine de la synthèse vocale de haute qualité. Leur API offre :
- Des voix ultra-réalistes dans de nombreuses langues
- La possibilité de créer des voix personnalisées
- Un contrôle fin sur les émotions et l'intonation
- Une intégration simple via API REST
Notre solution : un script Python pour automatiser le processus
Voici comment nous avons conçu notre solution d'automatisation, que nous adaptons régulièrement aux besoins spécifiques de nos clients :
1. Structure du fichier CSV source
Un fichier CSV bien structuré est essentiel pour l'automatisation. Voici un exemple de structure que nous recommandons :
numero,personnage,texte,langue,voice_id
001,Mathis,"Bonjour, comment allez-vous ? <happy>",fr_FR,TQ74FKYO3GjFRh5W7zBE
002,Sophie,"Je vais très bien, merci ! <excited>",fr_FR,29vD33N1CtxCmqQRPOHJ
003,Mathis,"C'est une excellente nouvelle. <calm>",fr_FR,TQ74FKYO3GjFRh5W7zBE
Les balises d'émotion (comme <happy>
, <excited>
, <calm>
) permettent d'indiquer au script comment moduler la voix pour chaque réplique.
2. Fonctionnalités clés du script Python
Notre script Python réalise les opérations suivantes :
import csv
import requests
import os
import json
from pydub import AudioSegment
# Configuration
API_KEY = "votre_clé_api_elevenlabs"
OUTPUT_DIR = "audio_output"
CSV_FILE = "repliques.csv"
# Création du dossier de sortie s'il n'existe pas
os.makedirs(OUTPUT_DIR, exist_ok=True)
# Lecture du fichier CSV
with open(CSV_FILE, 'r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
all_audio_segments = []
for row in csv_reader:
numero = row['numero']
personnage = row['personnage']
texte = row['texte']
langue = row['langue']
voice_id = row['voice_id']
# Extraction des balises d'émotion si présentes
emotion = "neutral"
if "<" in texte and ">" in texte:
start = texte.find("<") + 1
end = texte.find(">")
emotion = texte[start:end]
texte = texte.replace(f"<{emotion}>", "")
# Préparation de la requête à l'API ElevenLabs
url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
headers = {
"Accept": "audio/mpeg",
"Content-Type": "application/json",
"xi-api-key": API_KEY
}
data = {
"text": texte,
"model_id": "eleven_multilingual_v2",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 0.75
}
}
# Ajustement des paramètres selon l'émotion
if emotion == "happy":
data["voice_settings"]["stability"] = 0.3
data["voice_settings"]["similarity_boost"] = 0.8
elif emotion == "excited":
data["voice_settings"]["stability"] = 0.2
data["voice_settings"]["similarity_boost"] = 0.9
elif emotion == "calm":
data["voice_settings"]["stability"] = 0.7
data["voice_settings"]["similarity_boost"] = 0.6
# Appel à l'API ElevenLabs
response = requests.post(url, json=data, headers=headers)
if response.status_code == 200:
# Nom du fichier de sortie
output_file = f"{OUTPUT_DIR}/{numero}_{personnage}.mp3"
# Sauvegarde du fichier audio
with open(output_file, 'wb') as audio_file:
audio_file.write(response.content)
print(f"Fichier audio généré : {output_file}")
# Ajout à la liste pour la concaténation finale (optionnel)
audio_segment = AudioSegment.from_mp3(output_file)
all_audio_segments.append(audio_segment)
else:
print(f"Erreur lors de la génération audio pour {numero}_{personnage}: {response.status_code}")
print(response.text)
# Concaténation de tous les fichiers audio (optionnel)
if all_audio_segments:
combined = AudioSegment.empty()
for segment in all_audio_segments:
combined += segment + AudioSegment.silent(duration=500) # 500ms de silence entre chaque réplique
combined.export(f"{OUTPUT_DIR}/combined_audio.mp3", format="mp3")
print(f"Fichier audio combiné généré : {OUTPUT_DIR}/combined_audio.mp3")
3. Intégration avec Google Sheets (fonctionnalité bonus)
Pour les équipes qui préfèrent travailler directement avec Google Sheets, nous avons développé une extension permettant de lire les données directement depuis un tableur en ligne :
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# Configuration pour Google Sheets
SHEET_ID = "votre_id_de_feuille_google"
WORKSHEET_NAME = "Répliques"
# Authentification Google Sheets
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
gc = gspread.authorize(credentials)
# Ouverture de la feuille
workbook = gc.open_by_key(SHEET_ID)
worksheet = workbook.worksheet(WORKSHEET_NAME)
# Récupération des données
data = worksheet.get_all_records()
# Traitement des données comme avec le CSV
for row in data:
# Même logique que précédemment
# ...
Cas d'utilisation concrets
Chez Platane, nous avons mis en œuvre cette solution pour plusieurs clients avec des besoins variés :
Projet de jeu vidéo indépendant : Nous avons généré plus de 500 répliques pour différents personnages, en adaptant les émotions selon les situations de jeu. Cette approche a permis à notre client de réduire ses coûts de production audio de 70%.
Application éducative multilingue : Pour un projet similaire à celui que nous avons réalisé pour le Centre Pompidou, nous avons automatisé la génération de contenus pédagogiques en 4 langues différentes, permettant une mise à jour rapide du contenu sans nécessiter de nouvelles sessions d'enregistrement.
Plateforme de contenu audio : Dans le cadre d'un projet comparable à notre travail pour Epictory, nous avons développé un système permettant de générer des descriptions audio personnalisées à partir de données utilisateurs, créant ainsi une expérience unique pour chaque utilisateur.
Bonnes pratiques et optimisations
Au fil de nos projets, nous avons identifié plusieurs bonnes pratiques pour optimiser ce type d'automatisation :
- Gestion des erreurs robuste : Implémentez des mécanismes de retry et de logging détaillé pour gérer les problèmes d'API
- Traitement par lots : Pour les grands volumes, traitez les fichiers par lots pour éviter de surcharger l'API
- Cache intelligent : Évitez de régénérer des fichiers identiques en mettant en place un système de cache
- Paramètres d'émotion personnalisables : Créez une table de correspondance entre les balises d'émotion et les paramètres de l'API
- Tests automatisés : Vérifiez la qualité des fichiers générés via des métriques objectives
Conclusion
L'automatisation de la génération audio via Python et l'API ElevenLabs représente une avancée significative pour de nombreux projets créatifs et éducatifs. Cette approche permet non seulement de gagner un temps précieux, mais aussi d'obtenir des résultats de haute qualité avec une flexibilité inégalée.
Chez Platane, nous sommes passionnés par l'innovation technologique et la création de solutions sur mesure qui répondent précisément aux besoins de nos clients. Notre expertise en développement Python, en intégration d'API et en automatisation nous permet de transformer des processus manuels fastidieux en workflows fluides et efficaces.
Vous avez un projet nécessitant l'automatisation de la génération audio ou d'autres processus créatifs ? N'hésitez pas à prendre rendez-vous via notre formulaire de contact. Notre équipe sera ravie d'échanger avec vous sur votre projet et de vous montrer comment notre approche alliant technologie de pointe et créativité peut vous aider à atteindre vos objectifs plus rapidement et plus efficacement.
Platane est une agence spécialisée dans le développement de solutions sur mesure innovantes qui allient technologies de pointe comme l'intelligence artificielle générative à une créativité sans limites, le tout au service des objectifs de ses clients.
Optimiser vos conversions : L'art d'intégrer Facebook Ads et SystemeIO pour un tunnel marketing performant
Développement d'applications mobiles : de l'idée au prototype fonctionnel en un mois
Applications de Matching pour le Recrutement : Révolutionner la Recherche d'Emploi à l'Ère du Digital
N'hésitez pas à nous contacter.
Nous aussi et c'est évidemment sans engagement !