> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Refinar e gerar novamente uma dublagem

> **Note**
>
> **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](/docs/pt/eleven-api/guides/cookbooks/dubbing).

> **Warning**
>
> 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](https://elevenlabs.io/contact-sales) 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.

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

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

// Replace with your project's ID
const projectId = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3";

// Read the source transcript
const transcript = await elevenlabs.dubbing.project.transcript.get(projectId);
const firstSegment = transcript.segments[0];

// Correct a segment's text
await elevenlabs.dubbing.project.transcript.updateSegment(projectId, firstSegment.id, {
  text: "Welcome to our latest product demo.",
});

// Add a segment (reuse an existing speakerId so it is dubbed with that voice)
const added = await elevenlabs.dubbing.project.transcript.createSegment(projectId, {
  text: "Thanks for watching.",
  speakerId: firstSegment.speakerId,
  startS: 40.0,
  endS: 42.0,
});

// Delete the segment we just added
await elevenlabs.dubbing.project.transcript.deleteSegment(projectId, 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.

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

```typescript
const projectId = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3";
const languageId = "lang_1001kwkyxp0je6ktn4knsfrasx5s";

// Read the language's translations
const target = await elevenlabs.dubbing.project.language.transcript.get(projectId, languageId);
const firstSegment = target.segments[0];

// Refine a single translation
await elevenlabs.dubbing.project.language.transcript.updateSegment(
  projectId,
  languageId,
  firstSegment.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.

```python
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)
```

```typescript
// Regenerate from the current transcript
await elevenlabs.dubbing.project.language.transcript.regenerate(projectId, languageId);

// Poll until the new output is ready
let language = await elevenlabs.dubbing.project.language.get(projectId, languageId);
while (language.status !== "completed") {
  if (language.status === "failed") throw new Error("Regeneration failed");
  await new Promise((resolve) => setTimeout(resolve, 5000));
  language = await elevenlabs.dubbing.project.language.get(projectId, languageId);
}

console.log("Fresh output at", language.outputs!.losslessAudio!);
```

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.

> **Note**
>
> 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](/docs/pt/api-reference/dubbing/language-targets/create-language-target).