Perfeccionar y regenerar un doblaje

Edita la transcripción y las traducciones de origen, y después regenera el audio de un idioma.

Guía práctica · Da por hecho que has creado un proyecto de doblaje y generado al menos un idioma, como se muestra en la guía de inicio rápido de Doblaje IA.

Las rutas de API para editar transcripciones y regenerar que se usan en esta guía solo están disponibles en espacios de trabajo Enterprise. Ponte en contacto con ventas para obtener acceso.

Un doblaje solo es tan preciso como la transcripción en la que se basa. Esta guía explica los dos lugares donde puedes hacer correcciones —la transcripción de origen y la traducción de un idioma— y cómo regenerar el audio cuando estés conforme.

Cómo funcionan las revisiones

Cada proyecto y cada idioma tienen su propio contador de revision, ambos empiezan en 0.

  • Editar la transcripción de origen aumenta la revision del proyecto. La transcripción en sí no.
  • Editar una traducción aumenta la revision de ese idioma. No afecta al origen ni a ningún otro idioma.
  • Un idioma también informa de output_revision: la revisión a partir de la que se generó su audio actual. Cuando output_revision está por detrás de revision, el audio descargado no está actualizado y el estado del idioma pasa a ser stale.

Corrige la transcripción de origen antes de añadir idiomas siempre que sea posible. Las traducciones se generan a partir del origen, así que corregirlo primero hace que cada idioma parta del texto correcto. Editar el origen después de que exista un idioma marca ese idioma como stale y requiere una regeneración.

Edita la transcripción de origen

Lee la transcripción de origen para obtener el id estable de cada segmento y, después, edita, añade o elimina segmentos.

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

Al editar los tiempos, end_s debe ser mayor que start_s. Los segmentos nuevos requieren los cuatro campos (text, speaker_id, start_s, end_s); el servidor asigna el id del segmento.

Perfecciona una traducción

La transcripción de un idioma vincula cada segmento de origen con su traducción. Los valores de id de los segmentos coinciden con los de la transcripción de origen, por lo que puedes alinear las traducciones con el texto original. Edita la traducción de un solo segmento para anular la traducción automática. Pasa null para borrar una traducción y marcar ese segmento para que se vuelva a traducir.

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

Editar una traducción aumenta la revision del idioma. Si el idioma ya se había completado, pasa a ser stale y conserva su audio anterior hasta que lo regeneres.

Regenera el audio

Después de editar la transcripción de origen o una traducción, regenera el idioma para crear un doblaje actualizado a partir de la transcripción actual. La regeneración tiene el mismo coste que una generación.

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)

Regenerar devuelve un 409 Conflict si el proyecto no está ready o el idioma no se encuentra en un estado estable, por ejemplo, cuando ya se está generando. Cuando el idioma vuelve a alcanzar completed, output_revision es igual a revision y el audio descargado refleja tus cambios.

Puedes controlar cuánto se parecen las voces dobladas a las voces de origen con el ajuste de voz cloning_strength (de 0 a 10, 7 de forma predeterminada) al añadir un idioma. Consulta la referencia de la API de crear idioma de destino.