Vai alla navigazione

Perfeziona e rigenera un doppiaggio

Modifica la trascrizione sorgente e le traduzioni, quindi rigenera l'audio di una lingua.

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

Gli endpoint per la modifica della trascrizione e la rigenerazione utilizzati in questa guida sono disponibili solo per i workspace Enterprise. Per ottenere l’accesso, contatta le vendite.

Un doppiaggio è accurato quanto la trascrizione su cui si basa. Questa guida illustra i due punti in cui puoi apportare correzioni — la trascrizione di origine e la traduzione di una lingua — e come rigenerare l’audio quando sei soddisfatto.

Come funzionano le revisioni

Ogni progetto e ogni lingua hanno il proprio contatore revision, entrambi inizialmente impostati su 0.

  • La modifica della trascrizione di origine aumenta la revision del progetto. La trascrizione in sé non la aumenta.
  • La modifica di una traduzione aumenta la revision di quella lingua. Non influisce sull’origine né su altre lingue.
  • Una lingua riporta anche output_revision: la revisione da cui è stato generato il suo audio corrente. Quando output_revision è inferiore a revision, l’audio scaricato non è aggiornato e lo stato della lingua diventa stale.

Se possibile, correggi la trascrizione di origine prima di aggiungere lingue. Le traduzioni vengono prodotte dall’origine, quindi correggerla prima fa sì che ogni lingua parta dal testo giusto. Modificare l’origine dopo che una lingua esiste contrassegna quella lingua come stale e richiede una rigenerazione.

Modifica la trascrizione di origine

Leggi la trascrizione di origine per ottenere l’id stabile di ogni segmento, quindi modifica, aggiungi o elimina segmenti.

import os
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs
load_dotenv()
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
# Replace with your project's ID
project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
# Read the source transcript
transcript = elevenlabs.dubbing.project.transcript.get(project_id)
first_segment = transcript.segments[0]
# Correct a segment's text
elevenlabs.dubbing.project.transcript.update_segment(
project_id,
segment_id=first_segment.id,
text="Welcome to our latest product demo.",
)
# Add a segment (reuse an existing speaker_id so it is dubbed with that voice)
added = elevenlabs.dubbing.project.transcript.create_segment(
project_id,
text="Thanks for watching.",
speaker_id=first_segment.speaker_id,
start_s=40.0,
end_s=42.0,
)
# Delete the segment we just added
elevenlabs.dubbing.project.transcript.delete_segment(
project_id,
segment_id=added.segment.id,
)

Quando modifichi i tempi, end_s deve essere maggiore di start_s. I nuovi segmenti richiedono tutti e quattro i campi (text, speaker_id, start_s, end_s); il server assegna l’id del segmento.

Perfeziona una traduzione

La trascrizione di una lingua associa ogni segmento di origine alla relativa traduzione. I valori id dei segmenti corrispondono alla trascrizione di origine, quindi puoi allineare le traduzioni al testo originale. Modifica la traduzione di un singolo segmento per sostituire la traduzione automatica. Passa null per cancellare una traduzione e contrassegnare quel segmento per una nuova traduzione.

project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
language_id = "lang_1001kwkyxp0je6ktn4knsfrasx5s"
# Read the language's translations
target = elevenlabs.dubbing.project.language.transcript.get(project_id, language_id)
first_segment = target.segments[0]
# Refine a single translation
elevenlabs.dubbing.project.language.transcript.update_segment(
project_id,
language_id,
segment_id=first_segment.id,
translation="Bienvenido a nuestra última demostración de producto.",
)

La modifica di una traduzione incrementa la revision della lingua. Se la lingua era già stata completata, diventa stale e mantiene l’audio precedente finché non la rigeneri.

Rigenera l’audio

Dopo aver modificato la trascrizione di origine o una traduzione, rigenera la lingua per produrre un nuovo doppiaggio dalla trascrizione corrente. La rigenerazione viene addebitata come una generazione.

import time
# Regenerate from the current transcript
elevenlabs.dubbing.project.language.transcript.regenerate(project_id, language_id)
# Poll until the new output is ready
while True:
language = elevenlabs.dubbing.project.language.get(project_id, language_id)
if language.status == "completed":
break
if language.status == "failed":
raise RuntimeError("Regeneration failed")
time.sleep(5)
print("Fresh output at", language.outputs.lossless_audio)

La rigenerazione restituisce un 409 Conflict se il progetto non è ready o la lingua non è in uno stato stabile, ad esempio quando sta già generando. Quando la lingua raggiunge di nuovo completed, output_revision è uguale a revision e l’audio scaricato riflette le tue modifiche.

Puoi controllare quanto i doppiatori clonati somigliano alle voci di origine con l’impostazione vocale cloning_strength (da 0 a 10, valore predefinito 7) quando aggiungi una lingua. Consulta il Riferimento API per la creazione della lingua di destinazione.