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

# Gebruik je eigen transcript

> **Note**
>
> **Handleiding** · Hierbij wordt ervan uitgegaan dat je bekend bent met het maken van nasynchronisatieprojecten, zoals getoond in de
> [Dubbing quickstart](/docs/nl/eleven-api/guides/cookbooks/dubbing).

> **Warning**
>
> Je eigen transcript en vertalingen gebruiken is alleen beschikbaar voor enterprise-workspaces. Neem contact op met
> [sales](https://elevenlabs.io/contact-sales) voor toegang.

Standaard transcribeert de Dubbing API je bronmedia en vertaalt deze het transcript automatisch naar elke doeltaal. Als je al een nauwkeurig transcript hebt — ondertiteling, een script of professioneel vertaalde tekst — kun je dat in plaats daarvan gebruiken. Deze handleiding behandelt de bestandsindeling van het transcript, hoe je een project maakt op basis van een transcript en hoe je je eigen vertalingen opgeeft wanneer je een taal toevoegt.

## Bestandsindeling voor transcript

Een transcript is een JSON-bestand met één `segments`-array op het hoogste niveau. Elk segment is één uiting: de gesproken tekst, de begin- en eindtijd, en optioneel wie deze uitspreekt.

**`transcript.json`**

```json title="transcript.json"
{
  "segments": [
    {
      "external_id": "line_0",
      "speaker_id": "speaker_0",
      "start_s": 0.0,
      "end_s": 14.5,
      "text": "With my soft and whispery American accent, I'm the ideal choice for creating ASMR content, meditation guides, or adding an intimate feel to your narrative projects."
    }
  ]
}
```

| Veld          | Vereist | Beschrijving                                                                                                                                                                                  |
| ------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `text`        | Ja      | De tekst die tijdens het segment wordt uitgesproken.                                                                                                                                          |
| `start_s`     | Ja      | Begintijd van het segment, in seconden.                                                                                                                                                       |
| `end_s`       | Ja      | Eindtijd van het segment, in seconden.                                                                                                                                                        |
| `speaker_id`  | Nee     | ID waarmee segmenten van dezelfde spreker worden gegroepeerd, zodat elke spreker met een consistente stem wordt nagesynchroniseerd. Segmenten zonder dit veld delen één standaardspreker.     |
| `external_id` | Nee     | Je eigen ID voor het segment, maximaal 128 tekens en uniek binnen het transcript. Wordt gebruikt als sleutel voor vertalingen en teruggegeven bij elke keer dat het transcript wordt gelezen. |
| `translation` | Nee     | Vertaalde tekst voor het segment, gebruikt om de via `target_language` gemaakte doeltaal te vullen. Als één segment dit bevat, moeten alle segmenten dit bevatten.                            |

### Regels voor segmenten

Het transcript wordt gevalideerd wanneer je het project maakt:

* Segmenten moeten zijn gesorteerd op `start_s`.
* Een segment moet tussen 0,1 en 25 seconden lang zijn en `end_s` moet groter zijn dan `start_s`.
* Segmenten met dezelfde `speaker_id` mogen niet overlappen, maar mogen elkaar wel raken op een eindpunt. Segmenten van verschillende sprekers mogen overlappen om gelijktijdige spraak weer te geven.
* Een transcript mag maximaal 20.000 segmenten bevatten en het bestand mag maximaal 4 MiB zijn.

Geef de voorkeur aan kortere segmenten boven langere: splits zinnen waar er een pauze van één seconde of langer is. De segmentgrenzen bepalen hoe de nagesynchroniseerde audio wordt getimed ten opzichte van de bron, dus een transcript met nauwkeurige, natuurlijke onderbrekingen levert een beter gesynchroniseerde nasynchronisatie op.

## Een project maken op basis van je transcript

Geef het transcriptbestand door wanneer je het project maakt. `source_language` is vereist wanneer je een transcript opgeeft, omdat de bronmedia niet automatisch worden getranscribeerd. Talen worden opgegeven als BCP-47-tags, bijvoorbeeld `es` of `fr-CA`. Bekijk de [ondersteunde talen en dialecten](/docs/nl/overview/capabilities/dubbing#supported-languages) voor alle geaccepteerde waarden.

```python
import os
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs

load_dotenv()

elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))

with open("transcript.json", "rb") as transcript:
    project = elevenlabs.dubbing.project.create(
        source_url="https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
        source_language="en",
        transcript=transcript,
    )

print(project.project_id)
```

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

const elevenlabs = new ElevenLabsClient();

const project = await elevenlabs.dubbing.project.create({
  sourceUrl: "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
  sourceLanguage: "en",
  transcript: createReadStream("transcript.json"),
});

console.log(project.projectId);
```

Het project verwerkt de bronmedia nog steeds voordat deze kan worden nagesynchroniseerd, dus poll het totdat de status `ready` is, zoals getoond in de [quickstart](/docs/nl/eleven-api/guides/cookbooks/dubbing). Je segmenten worden ongewijzigd gebruikt; er wordt geen automatische transcriptie uitgevoerd.

## Je eigen vertalingen gebruiken

Wanneer je een doeltaal toevoegt, geef je een `translations`-map door om je eigen vertalingen te gebruiken in plaats van automatische vertaling. De map gebruikt als sleutel de `external_id` van elk bronsegment, of de interne segment-`id` als je er geen hebt opgegeven, en moet elk bronsegment precies één keer bevatten.

```python
project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"

language = elevenlabs.dubbing.project.language.create(
    project_id,
    target_language="fr",
    translations={
        "line_0": "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs.",
    },
)
```

```typescript
const projectId = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3";

const language = await elevenlabs.dubbing.project.language.create(projectId, {
  targetLanguage: "fr",
  translations: {
    line_0:
      "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs.",
  },
});
```

Elke doeltaal vereist één create-aanroep, dus herhaal deze aanvraag voor elke taal waarin je wilt nasynchroniseren. Een `translations`-map mag maximaal 20.000 invoeren bevatten, met in totaal maximaal 4 MiB aan tekst.

Als je segmenten geen `external_id` hebben, lees je het brontranscript om de interne `id` van elk segment op te halen en gebruik je die als sleutels:

```python
transcript = elevenlabs.dubbing.project.transcript.get(project_id)
for segment in transcript.segments:
    print(segment.id, segment.text)
```

```typescript
const transcript = await elevenlabs.dubbing.project.transcript.get(projectId);
for (const segment of transcript.segments) {
  console.log(segment.id, segment.text);
}
```

### Vertalingen toevoegen bij het maken van een project

Voor één doeltaal kun je de afzonderlijke `translations`-map overslaan door bij elk segment in het transcriptbestand een `translation` op te nemen en `target_language` door te geven wanneer je het project maakt. De doeltaal wordt in de wachtrij gemaakt met je vertalingen en begint met genereren zodra het project klaar is.

**`transcript.json`**

```json title="transcript.json"
{
  "segments": [
    {
      "external_id": "line_0",
      "speaker_id": "speaker_0",
      "start_s": 0.0,
      "end_s": 14.5,
      "text": "With my soft and whispery American accent, I'm the ideal choice for creating ASMR content, meditation guides, or adding an intimate feel to your narrative projects.",
      "translation": "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs."
    }
  ]
}
```

## Kwaliteitsoverwegingen

De kwaliteit van de nasynchronisatie is afhankelijk van het transcript en de vertalingen waarop deze is gebaseerd. Segmenttimings en tekst worden rechtstreeks gebruikt om de timing en stem van de nagesynchroniseerde uitvoering te bepalen, dus onnauwkeurige timings of tekst verminderen de kwaliteit van de output. Vertalingen worden weergegeven binnen het tijdsbestek van hun segment: een vertaling die veel langer of korter is dan het origineel, beïnvloedt het tempo van de nagesynchroniseerde spraak. Streef daarom naar vertalingen met een vergelijkbare gesproken lengte.

## Volgende stappen

#### [Een nasynchronisatie verfijnen en opnieuw genereren](/docs/nl/eleven-api/guides/how-to/dubbing/refine-and-regenerate)

Bewerk het brontranscript en de vertalingen en genereer de nasynchronisatie opnieuw

#### [Naar meerdere talen nasynchroniseren](/docs/nl/eleven-api/guides/how-to/dubbing/multiple-languages)

Voeg meerdere doeltalen toe aan één project

#### [API-referentie](/docs/nl/api-reference/dubbing/create-project)

Bekijk alle Dubbing API-parameters en responseformaten