> 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.

# Een nasynchronisatie verfijnen en opnieuw genereren

> **Note**
>
> **Handleiding** · Hierbij gaan we ervan uit dat je een nasynchronisatieproject hebt gemaakt en minstens één taal hebt gegenereerd,
> zoals weergegeven in de [korte introductie voor nasynchronisatie](/docs/nl/eleven-api/guides/cookbooks/dubbing).

> **Warning**
>
> De endpoints voor transcriptbewerking en regeneratie die in deze handleiding worden gebruikt, zijn alleen beschikbaar voor
> Enterprise-workspaces. Neem contact op met [sales](https://elevenlabs.io/contact-sales) voor toegang.

Een nasynchronisatie is slechts zo nauwkeurig als het transcript waarop deze is gebaseerd. In deze handleiding lees je op welke twee plekken je correcties kunt aanbrengen — in het bronteksttranscript en in de vertaling van een taal — en hoe je de audio regenereert zodra je tevreden bent.

## Hoe revisies werken

Elk project en elke taal hebben een eigen teller voor `revision`, die beide beginnen bij `0`.

* Door het bronteksttranscript te bewerken, wordt de `revision` van het project verhoogd. Transcriptie zelf doet dat niet.
* Door een vertaling te bewerken, wordt de `revision` van die taal verhoogd. Dit heeft geen invloed op de bron of andere talen.
* Een taal rapporteert ook `output_revision`: de revisie waarop de huidige audio is gegenereerd. Wanneer `output_revision` achterloopt op `revision`, is de gedownloade audio verouderd en wordt de status van de taal `stale`.

Corrigeer waar mogelijk het bronteksttranscript voordat je talen toevoegt. Vertalingen worden gemaakt op basis van de bron, dus als je de bron eerst corrigeert, begint elke taal met de juiste tekst. Als je de bron bewerkt nadat er een taal bestaat, wordt die taal gemarkeerd als `stale` en moet je deze regenereren.

## Het bronteksttranscript bewerken

Lees het bronteksttranscript om de stabiele `id` van elk segment op te halen en bewerk, voeg toe of verwijder vervolgens segmenten.

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

Bij het bewerken van timing moet `end_s` groter zijn dan `start_s`. Nieuwe segmenten vereisen alle vier de velden (`text`, `speaker_id`, `start_s`, `end_s`); de server wijst de `id` van het segment toe.

## Een vertaling verfijnen

Een taaltranscript koppelt elk bronsegment aan de vertaling ervan. De waarden van segment-`id` komen overeen met het bronteksttranscript, zodat je vertalingen naast de oorspronkelijke tekst kunt zetten. Bewerk de vertaling van één segment om de machinevertaling te overschrijven. Geef `null` door om een vertaling te wissen en dat segment te markeren voor hervertaling.

```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." }
);
```

Door een vertaling te bewerken, wordt de `revision` van de taal verhoogd. Als de taal al was voltooid, wordt deze `stale` en behoudt deze de vorige audio totdat je regenereert.

## De audio regenereren

Na het bewerken van het bronteksttranscript of een vertaling regenereer je de taal om een nieuwe nasynchronisatie te maken op basis van het huidige transcript. Voor regeneratie worden dezelfde kosten in rekening gebracht als voor een generatie.

```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!);
```

Regenereren retourneert een `409 Conflict` als het project niet `ready` is of de taal niet in een stabiele status verkeert, bijvoorbeeld omdat deze al wordt gegenereerd. Zodra de taal weer `completed` bereikt, is `output_revision` gelijk aan `revision` en weerspiegelt de gedownloade audio je bewerkingen.

> **Note**
>
> Je kunt bij het toevoegen van een taal bepalen hoe sterk de nagesynchroniseerde sprekers de bronstemmen klonen met de
> steminstelling `cloning_strength` (0 tot 10, standaard 7). Raadpleeg de API-referentie voor [taaldoel maken](/docs/nl/api-reference/dubbing/language-targets/create-language-target).