Vai alla navigazione

Doppia in più lingue

Aggiungi più lingue di destinazione a un singolo progetto e scarica ogni doppiaggio.

Guida pratica · Presuppone che tu abbia creato un progetto di doppiaggio, come mostrato nella guida rapida al doppiaggio .

Un singolo progetto contiene una trascrizione sorgente e puoi aggiungere tutte le lingue di destinazione che ti servono. Ogni lingua viene generata in modo indipendente e ha il proprio stato e output, quindi traduci la sorgente una sola volta e produci ogni doppiaggio da essa.

Aggiungi più lingue

Aggiungi una lingua di destinazione per ogni lingua in cui vuoi doppiare. Ognuna inizia in stato queued e comincia a essere generata quando il progetto è 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
]

Puoi anche mettere in coda la prima lingua quando crei il progetto passando target_language a project.create. Aggiungi eventuali altre lingue con language.create, come mostrato sopra.

Le lingue sono specificate come tag BCP-47, ad esempio es o fr-CA. Consulta le lingue e i dialetti supportati per tutti i valori accettati.

Monitora ogni lingua in modo indipendente

Le lingue vengono generate in parallelo e terminano in momenti diversi. Elenca le lingue del progetto per controllare lo stato di ognuna, anziché eseguire il polling una per una.

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)

Scarica ogni doppiaggio completato

Quando una lingua raggiunge lo stato completed, outputs.lossless_audio contiene un URL di download firmato. Scaricale tutte, ignorando le lingue non riuscite.

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

Gli URL firmati scadono circa un’ora dopo l’emissione. Se un download non riesce perché l’URL è scaduto, recupera di nuovo la lingua con language.get per ottenere un nuovo URL.

Se la generazione di una lingua non riesce, aggiungila di nuovo con language.create nello stesso progetto anziché creare un nuovo progetto. Il progetto e la sua trascrizione sono riutilizzabili, quindi viene rigenerata solo la lingua non riuscita.