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

# Utiliser votre propre transcription

> **Note**
>
> **Guide pratique** · Suppose que vous savez créer des projets de doublage, comme indiqué dans le
> [guide de démarrage rapide du doublage](/docs/fr/eleven-api/guides/cookbooks/dubbing).

> **Warning**
>
> La fourniture de votre propre transcription et de vos propres traductions est réservée aux Workspaces Enterprise. Contactez
> [les ventes](https://elevenlabs.io/contact-sales) pour y accéder.

Par défaut, l’API de doublage transcrit votre média source et traduit automatiquement la transcription dans chaque langue cible. Si vous disposez déjà d’une transcription précise, de sous-titres, d’un script ou d’un texte traduit par des professionnels, vous pouvez la fournir à la place. Ce guide présente le format du fichier de transcription, la création d’un projet à partir d’une transcription et la fourniture de vos propres traductions lors de l’ajout d’une langue.

## Format du fichier de transcription

Une transcription est un fichier JSON comportant un unique tableau `segments` de premier niveau. Chaque segment correspond à une énonciation : le texte prononcé, ses heures de début et de fin, et éventuellement son locuteur.

**`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."
    }
  ]
}
```

| Champ         | Obligatoire | Description                                                                                                                                                                                            |
| ------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `text`        | Oui         | Le texte prononcé pendant le segment.                                                                                                                                                                  |
| `start_s`     | Oui         | Heure de début du segment, en secondes.                                                                                                                                                                |
| `end_s`       | Oui         | Heure de fin du segment, en secondes.                                                                                                                                                                  |
| `speaker_id`  | Non         | Identifiant regroupant les segments prononcés par le même locuteur, afin que chaque locuteur soit doublé avec une voix cohérente. Les segments qui l’omettent partagent un locuteur par défaut unique. |
| `external_id` | Non         | Votre propre identifiant pour le segment, limité à 128 caractères et unique dans la transcription. Utilisé pour identifier les traductions et renvoyé lors de chaque lecture de transcription.         |
| `translation` | Non         | Texte traduit pour le segment, utilisé pour initialiser la cible de langue créée via `target_language`. Si un segment l’inclut, tous les segments doivent l’inclure.                                   |

### Règles relatives aux segments

La transcription est validée lors de la création du projet :

* Les segments doivent être triés selon `start_s`.
* Un segment doit durer entre 0,1 et 25 secondes, et `end_s` doit être supérieur à `start_s`.
* Les segments ayant le même `speaker_id` ne doivent pas se chevaucher, bien qu’ils puissent se toucher à une extrémité. Les segments de locuteurs différents peuvent se chevaucher pour représenter des paroles simultanées.
* Une transcription peut contenir au maximum 20 000 segments et le fichier peut peser au maximum 4 Mio.

Préférez les segments courts aux segments longs : découpez les phrases à chaque pause d’une seconde ou plus. Les limites des segments déterminent la synchronisation de l’audio doublé avec la source ; une transcription avec des pauses précises et naturelles produit donc un doublage mieux synchronisé.

## Créer un projet à partir de votre transcription

Transmettez le fichier de transcription lors de la création du projet. `source_language` est requis lorsque vous fournissez une transcription, car le média source n’est pas transcrit automatiquement. Les langues sont indiquées sous forme de balises BCP-47, par exemple `es` ou `fr-CA`. Consultez les [langues et dialectes pris en charge](/docs/fr/overview/capabilities/dubbing#supported-languages) pour connaître toutes les valeurs acceptées.

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

Le projet importe toujours le média source avant de pouvoir le doubler. Interrogez donc son état jusqu’à ce qu’il soit `ready`, comme indiqué dans le [guide de démarrage rapide](/docs/fr/eleven-api/guides/cookbooks/dubbing). Vos segments sont utilisés tels quels ; aucune transcription automatique n’est effectuée.

## Fournir vos propres traductions

Lors de l’ajout d’une cible de langue, transmettez une table `translations` pour utiliser vos propres traductions plutôt qu’une traduction automatique. La table est indexée par l’`external_id` de chaque segment source, ou par son `id` de segment interne si vous n’en avez pas fourni. Elle doit couvrir chaque segment source exactement une fois.

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

Chaque cible de langue nécessite un appel de création ; répétez donc cette requête pour chaque langue dans laquelle vous souhaitez doubler. Une table `translations` peut contenir au maximum 20 000 entrées totalisant au plus 4 Mio de texte.

Si vos segments n’ont pas d’`external_id`, lisez la transcription source pour obtenir l’`id` interne de chaque segment et utilisez-les à la place comme clés :

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

### Initialiser les traductions lors de la création du projet

Pour une seule langue cible, vous pouvez éviter la table `translations` distincte en incluant une `translation` dans chaque segment du fichier de transcription et en transmettant `target_language` lors de la création du projet. La cible de langue est créée avec le statut `queued` avec vos traductions, puis commence à générer une fois le projet prêt.

**`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."
    }
  ]
}
```

## Considérations de qualité

La qualité du doublage dépend de celle de la transcription et des traductions sur lesquelles il repose. Les horaires des segments et le texte servent directement à synchroniser et interpréter le doublage ; des horaires ou un texte imprécis dégradent donc le résultat. Les traductions sont restituées pour correspondre à la durée de leur segment : une traduction beaucoup plus longue ou plus courte que l’original affecte le rythme de la parole doublée. Visez donc des traductions de durée parlée comparable.

## Prochaines étapes

#### [Affiner et régénérer un doublage](/docs/fr/eleven-api/guides/how-to/dubbing/refine-and-regenerate)

Modifiez la transcription source et les traductions, puis régénérez le doublage

#### [Doubler dans plusieurs langues](/docs/fr/eleven-api/guides/how-to/dubbing/multiple-languages)

Ajoutez plusieurs langues cibles à un même projet

#### [Guide de l’API](/docs/fr/api-reference/dubbing/create-project)

Explorez tous les paramètres et formats de réponse de l’API de doublage