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

# Synchronisation verfeinern und neu generieren

> **Note**
>
> **Anleitung** · Setzt voraus, dass Sie ein Synchronisationsprojekt erstellt und mindestens eine Sprache generiert haben,
> wie im [Synchronisation-Schnellstart](/docs/de/eleven-api/guides/cookbooks/dubbing) gezeigt.

> **Warning**
>
> Die in dieser Anleitung verwendeten Endpunkte zum Bearbeiten und Neugenerieren von Transkripten sind nur für
> Enterprise-Workspaces verfügbar. Kontaktieren Sie den [Vertrieb](https://elevenlabs.io/contact-sales), um Zugriff zu erhalten.

Eine Synchronisation ist nur so präzise wie das Transkript, auf dem sie basiert. Diese Anleitung zeigt die zwei Stellen, an denen Sie Korrekturen vornehmen können – das Quelltranskript und die Übersetzung einer Sprache – sowie, wie Sie das Audio neu generieren, sobald Sie zufrieden sind.

## So funktionieren Überarbeitungen

Jedes Projekt und jede Sprache haben einen eigenen Zähler für `revision`, der jeweils bei `0` beginnt.

* Das Bearbeiten des Quelltranskripts erhöht die `revision` des Projekts. Die Transkription selbst nicht.
* Das Bearbeiten einer Übersetzung erhöht die `revision` dieser Sprache. Die Quelle oder andere Sprachen sind davon nicht betroffen.
* Eine Sprache meldet außerdem `output_revision`: die Überarbeitung, aus der das aktuelle Audio generiert wurde. Wenn `output_revision` hinter `revision` liegt, ist das heruntergeladene Audio nicht aktuell und der Status der Sprache wird zu `stale`.

Korrigieren Sie das Quelltranskript nach Möglichkeit, bevor Sie Sprachen hinzufügen. Übersetzungen werden aus der Quelle erstellt. Wenn Sie die Quelle zuerst korrigieren, beginnt jede Sprache mit dem richtigen Text. Das Bearbeiten der Quelle, nachdem eine Sprache existiert, markiert diese Sprache als `stale` und erfordert eine Neugenerierung.

## Quelltranskript bearbeiten

Lesen Sie das Quelltranskript, um die stabile `id` jedes Segments abzurufen. Anschließend können Sie Segmente bearbeiten, hinzufügen oder löschen.

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

Beim Bearbeiten der Zeitangaben muss `end_s` größer als `start_s` sein. Neue Segmente erfordern alle vier Felder (`text`, `speaker_id`, `start_s`, `end_s`); der Server weist die `id` des Segments zu.

## Übersetzung verfeinern

Ein Sprachtranskript ordnet jedem Quellsegment seine Übersetzung zu. Die `id`-Werte der Segmente stimmen mit denen des Quelltranskripts überein. So können Sie Übersetzungen dem Originaltext gegenüberstellen. Bearbeiten Sie die Übersetzung eines einzelnen Segments, um die maschinelle Übersetzung zu überschreiben. Übergeben Sie `null`, um eine Übersetzung zu löschen und das Segment zur erneuten Übersetzung zu markieren.

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

Das Bearbeiten einer Übersetzung erhöht die `revision` der Sprache. Wenn die Sprache bereits abgeschlossen war, wird sie zu `stale` und behält ihr bisheriges Audio, bis Sie sie neu generieren.

## Audio neu generieren

Nachdem Sie das Quelltranskript oder eine Übersetzung bearbeitet haben, generieren Sie die Sprache neu, um eine aktuelle Synchronisation aus dem aktuellen Transkript zu erstellen. Für die Neugenerierung fallen dieselben Kosten wie für eine Generierung an.

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

Die Neugenerierung gibt `409 Conflict` zurück, wenn das Projekt nicht `ready` ist oder sich die Sprache nicht in einem stabilen Zustand befindet, etwa wenn sie bereits generiert wird. Sobald die Sprache wieder `completed` erreicht, entspricht `output_revision` der `revision` und das heruntergeladene Audio enthält Ihre Änderungen.

> **Note**
>
> Sie können beim Hinzufügen einer Sprache mit der Stimmeinstellung `cloning_strength` (0 bis 10, Standardwert 7) steuern,
> wie stark die synchronisierten Sprecher die Quellstimmen klonen. Siehe die API-Referenz für das [Erstellen eines Sprachziels](/docs/de/api-reference/dubbing/language-targets/create-language-target).