Hoppa till navigering

Dubba till flera språk

Lägg till flera målspråk i ett enda projekt och ladda ned varje dubbning.

Instruktionsguide · Förutsätter att du har skapat ett dubbningsprojekt, enligt snabbstarten för dubbning .

Ett enda projekt innehåller ett källtranskript, och du kan lägga till så många språkmål som du behöver. Varje språk genereras oberoende och har sin egen status och utdata, så du översätter källan en gång och skapar varje dubbning från den.

Lägg till flera språk

Lägg till ett språkmål för varje språk du vill dubba till. Varje mål börjar i statusen queued och börjar genereras när projektet är 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
]

Du kan också köa det första språket när du skapar projektet genom att skicka target_language till project.create. Lägg till ytterligare språk med language.create enligt ovan.

Språk anges som BCP-47-taggar, till exempel es eller fr-CA. Se språk och dialekter som stöds för alla godkända värden.

Följ varje språk oberoende

Språk genereras parallellt och blir klara vid olika tidpunkter. Lista projektets språk för att kontrollera statusen för varje språk, i stället för att kontrollera dem ett i taget.

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)

Ladda ned varje färdig dubbning

När ett språk når completed innehåller dess outputs.lossless_audio en signerad nedladdnings-URL. Ladda ned varje fil och hoppa över språk som misslyckades.

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")

Signerade URL:er upphör att gälla ungefär en timme efter att de har utfärdats. Om en nedladdning misslyckas eftersom URL:en har gått ut hämtar du språket igen med language.get för att få en ny URL.

Om ett språk inte kan genereras lägger du till det igen med language.create i samma projekt i stället för att skapa ett nytt projekt. Projektet och dess transkript kan återanvändas, så bara det misslyckade språket genereras om.