Refinar e gerar novamente uma dublagem

Edite a transcrição e as traduções de origem e gere novamente o áudio de um idioma.

Guia prático · Pressupõe que você criou um projeto de dublagem e gerou pelo menos um idioma, conforme mostrado no início rápido de dublagem.

Os endpoints de edição de transcrição e regeneração usados neste guia estão disponíveis apenas para workspaces Enterprise. Entre em contato com vendas para obter acesso.

Uma dublagem só é tão precisa quanto a transcrição em que ela se baseia. Este guia aborda os dois lugares em que você pode fazer correções — a transcrição de origem e a tradução de um idioma — e como regenerar o áudio quando estiver satisfeito.

Como funcionam as revisões

Cada projeto e cada idioma têm seu próprio contador de revision, ambos começando em 0.

  • Editar a transcrição de origem aumenta a revision do projeto. A transcrição em si não aumenta.
  • Editar uma tradução aumenta a revision desse idioma. Isso não afeta a origem nem outros idiomas.
  • Um idioma também informa output_revision: a revisão a partir da qual seu áudio atual foi gerado. Quando output_revision está atrás de revision, o áudio baixado está desatualizado e o status do idioma passa a ser stale.

Sempre que possível, corrija a transcrição de origem antes de adicionar idiomas. As traduções são produzidas a partir da origem, portanto, corrigir a origem primeiro garante que todos os idiomas comecem com o texto correto. Editar a origem depois que um idioma já existe marca esse idioma como stale e exige uma regeneração.

Edite a transcrição de origem

Leia a transcrição de origem para obter o id estável de cada segmento e, em seguida, edite, adicione ou exclua 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,
)

Ao editar a temporização, end_s deve ser maior que start_s. Novos segmentos exigem os quatro campos (text, speaker_id, start_s, end_s); o servidor atribui o id do segmento.

Aprimore uma tradução

A transcrição de um idioma associa cada segmento de origem à sua tradução. Os valores de id dos segmentos correspondem aos da transcrição de origem, para que você possa comparar as traduções com o texto original. Edite a tradução de um único segmento para substituir a tradução automática. Passe null para limpar uma tradução e marcar esse segmento para ser traduzido novamente.

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 uma tradução aumenta a revision do idioma. Se o idioma já tiver sido concluído, ele passa a ser stale e mantém o áudio anterior até que você o regenere.

Regenere o áudio

Depois de editar a transcrição de origem ou uma tradução, regenere o idioma para produzir uma nova dublagem a partir da transcrição atual. A regeneração é cobrada como uma geração.

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)

A regeneração retorna 409 Conflict se o projeto não estiver ready ou se o idioma não estiver em um estado estável, por exemplo, quando já está sendo gerado. Quando o idioma alcançar completed novamente, output_revision será igual a revision e o áudio baixado refletirá suas edições.

Você pode controlar a intensidade com que os falantes dublados clonam as vozes de origem usando a configuração de voz cloning_strength (de 0 a 10, padrão 7) ao adicionar um idioma. Consulte a referência da API criar idioma de destino.