Doubler dans plusieurs langues

Ajoutez plusieurs langues cibles à un même projet et téléchargez chaque doublage.

Guide pratique · Suppose que vous avez créé un projet de doublage, comme indiqué dans le guide de démarrage rapide du doublage.

Un même projet contient une transcription source et vous pouvez ajouter autant de cibles de langue que nécessaire. Chaque langue est générée indépendamment et possède son propre état et sa propre sortie. Vous traduisez ainsi la source une seule fois et produisez chaque doublage à partir de celle-ci.

Ajouter plusieurs langues

Ajoutez une cible de langue pour chaque langue dans laquelle vous souhaitez doubler. Chacune commence avec le statut queued et débute sa génération lorsque le projet est ready.

import os
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs
load_dotenv()
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
target_languages = ["es", "fr", "de", "ja"]
languages = [
elevenlabs.dubbing.project.language.create(project_id, target_language=lang)
for lang in target_languages
]

Vous pouvez également mettre la première langue en file d’attente lors de la création du projet en transmettant target_language à project.create. Ajoutez les langues supplémentaires avec language.create, comme indiqué ci-dessus.

Les langues sont indiquées sous forme de balises BCP-47, par exemple es ou fr-CA. Consultez les langues et dialectes pris en charge pour connaître toutes les valeurs acceptées.

Suivre chaque langue indépendamment

Les langues sont générées en parallèle et se terminent à des moments différents. Listez les langues du projet pour vérifier l’état de chacune, plutôt que de les interroger une par une.

import time
while True:
result = elevenlabs.dubbing.project.language.list(project_id)
pending = [l for l in result.languages if l.status in ("queued", "processing")]
if not pending:
break
print(f"{len(pending)} language(s) still generating...")
time.sleep(5)

Télécharger chaque doublage terminé

Lorsqu’une langue atteint l’état completed, son outputs.lossless_audio contient une URL de téléchargement signée. Téléchargez-les toutes, en ignorant les langues ayant échoué.

import requests
result = elevenlabs.dubbing.project.language.list(project_id)
for language in result.languages:
if language.status != "completed":
print(f"Skipping {language.target_language}: {language.status}")
continue
audio = requests.get(language.outputs.lossless_audio)
with open(f"dubbed_{language.target_language}.wav", "wb") as f:
f.write(audio.content)
print(f"Saved dubbed_{language.target_language}.wav")

Les URL signées expirent environ une heure après leur émission. Si un téléchargement échoue parce que l’URL a expiré, récupérez à nouveau la langue avec language.get afin d’obtenir une nouvelle URL.

Si la génération d’une langue échoue, ajoutez-la de nouveau avec language.create dans le même projet plutôt que de créer un nouveau projet. Le projet et sa transcription sont réutilisables ; seule la langue ayant échoué est régénérée.