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

# Démarrage rapide du doublage

Ce guide vous montre comment doubler un fichier multimédia dans une autre langue avec l’API de doublage. Dans cet exemple, vous créez un projet de doublage à partir d’un fichier audio en anglais et générez un doublage en espagnol.

Un projet de doublage comporte deux éléments : un **projet**, qui contient un média source et sa transcription, et une ou plusieurs **cibles de langue**, chacune produisant un résultat doublé dans une seule langue. Vous créez un projet, attendez que sa source soit transcrite, ajoutez une langue, puis téléchargez le doublage terminé.

> **Note**
>
> La création d’un projet vous facture d’emblée une langue, soit le coût minimum d’un projet de doublage.
> Cela prépaye votre première cible de langue : la première langue ajoutée l’utilise, et chaque
> langue supplémentaire est facturée séparément. Consultez [Combien coûte le doublage ?](/docs/fr/help-center/product/dubbing/how-much-does-dubbing-cost) pour plus de détails.

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.

## Utiliser l’API de doublage

#### Créer une clé API

[Créez une clé API dans le Dashboard ici](https://elevenlabs.io/app/api/api-keys), que vous utiliserez pour [accéder à l’API](/docs/fr/api-reference/authentication) en toute sécurité.

Stockez la clé comme secret géré et transmettez-la aux SDK, soit sous forme de variable d’environnement via un fichier `.env`, soit directement dans la configuration de votre application, selon vos préférences.

**`.env`**

```js title=".env"
ELEVENLABS_API_KEY=<your_api_key_here>
```

#### Installer le SDK

#### SDK

Nous utiliserons également la bibliothèque `dotenv` pour charger notre clé API depuis une variable d'environnement.

```python
pip install elevenlabs
pip install python-dotenv
```

```typescript
npm install @elevenlabs/elevenlabs-js
npm install dotenv
```

#### CLI

Installez la CLI ElevenLabs. Homebrew (macOS) et Scoop (Windows) sont recommandés.

**`Homebrew (macOS)`**

```bash title="Homebrew (macOS)"
brew install elevenlabs/tap/elevenlabs
```

**`Scoop (Windows)`**

```powershell title="Scoop (Windows)"
scoop bucket add elevenlabs https://github.com/elevenlabs/scoop-bucket
scoop install elevenlabs
```

**`npm`**

```bash title="npm"
npm install -g @elevenlabs/cli
```

**`curl`**

```bash title="curl"
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/elevenlabs/cli/releases/latest/download/elevenlabs-cli-installer.sh | sh
```

> **Tip**
>
> Vous travaillez avec un assistant de programmation IA ? Exécutez `elevenlabs generate-skills` dans votre projet pour créer un
> fichier `SKILL.md` pour chaque groupe de commandes dans `skills/`, afin que votre assistant connaisse toutes les fonctionnalités de la CLI
> sans que vous ayez à copier la documentation. Utilisez `--output-dir` pour les placer ailleurs. Cette commande lit la propre
> définition d'API intégrée à la CLI, elle ne nécessite donc aucune clé API et fonctionne hors ligne, tout en restant synchronisée avec
> la version de la CLI que vous avez installée.

Authentifiez-vous ensuite, votre navigateur s'ouvrira pour autoriser la CLI :

```bash
elevenlabs auth login
```

> **Note**
>
> L’exemple Python utilise la bibliothèque `requests` pour télécharger l’audio doublé. Installez-la
> avec `pip install requests`.

#### Effectuer la requête API

#### SDK

Créez un nouveau fichier nommé `example.py` ou `example.mts`, selon le langage choisi, et ajoutez le code suivant :

```python maxLines=0
# example.py
import os
import time
import requests
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs

load_dotenv()

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

# 1. Create a project from a source URL
project = elevenlabs.dubbing.project.create(
    source_url="https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
    source_language="en",
    reference="Quickstart dub",
)

# 2. Wait for the source media to be transcribed
while True:
    project = elevenlabs.dubbing.project.get(project.project_id)
    if project.status == "ready":
        break
    if project.status == "failed":
        raise RuntimeError("Project preparation failed")
    print("Preparing project...")
    time.sleep(5)

# 3. Add a Spanish language target
language = elevenlabs.dubbing.project.language.create(
    project.project_id,
    target_language="es",
)

# 4. Wait for the dub to finish generating
while True:
    language = elevenlabs.dubbing.project.language.get(
        project.project_id, language.language_id
    )
    if language.status == "completed":
        break
    if language.status == "failed":
        raise RuntimeError("Dub generation failed")
    print("Generating dub...")
    time.sleep(5)

# 5. Download the dubbed audio from the signed URL
audio = requests.get(language.outputs.lossless_audio)
with open("dubbed.wav", "wb") as f:
    f.write(audio.content)

print("Saved dubbed audio to dubbed.wav")
```

```typescript maxLines=0
// example.mts
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import { writeFile } from "fs/promises";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

// 1. Create a project from a source URL
let project = await elevenlabs.dubbing.project.create({
  sourceUrl:
    "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
  sourceLanguage: "en",
  reference: "Quickstart dub",
});

// 2. Wait for the source media to be transcribed
while (true) {
  project = await elevenlabs.dubbing.project.get(project.projectId);
  if (project.status === "ready") break;
  if (project.status === "failed") throw new Error("Project preparation failed");
  console.log("Preparing project...");
  await new Promise((resolve) => setTimeout(resolve, 5000));
}

// 3. Add a Spanish language target
let language = await elevenlabs.dubbing.project.language.create(project.projectId, {
  targetLanguage: "es",
});

// 4. Wait for the dub to finish generating
while (true) {
  language = await elevenlabs.dubbing.project.language.get(
    project.projectId,
    language.languageId
  );
  if (language.status === "completed") break;
  if (language.status === "failed") throw new Error("Dub generation failed");
  console.log("Generating dub...");
  await new Promise((resolve) => setTimeout(resolve, 5000));
}

// 5. Download the dubbed audio from the signed URL
const response = await fetch(language.outputs!.losslessAudio!);
const buffer = Buffer.from(await response.arrayBuffer());
await writeFile("dubbed.wav", buffer);

console.log("Saved dubbed audio to dubbed.wav");
```

> **Note**
>
> L’URL de téléchargement dans `outputs.lossless_audio` est signée et expire environ une heure après
> son émission. Récupérez de nouveau la langue pour obtenir une nouvelle URL si elle a expiré.

Exécutez-le ensuite :

```python
python example.py
```

```typescript
npx tsx example.mts
```

L’audio doublé est enregistré sous le nom `dubbed.wav` dans votre répertoire de travail.

#### CLI

La CLI suit le même flux. Chaque étape affiche du JSON : copiez les valeurs `project_id` et
`language_id` des réponses dans la commande suivante et interrogez les commandes `get`
jusqu’à ce que l’état soit définitif.

```bash
# 1. Create a project from a source URL (note the returned project_id)
elevenlabs dubbing project create \
  --source-url https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3 \
  --source-language en \
  --reference "Quickstart dub"

# 2. Poll until the project status is "ready"
elevenlabs dubbing project get --project-id <project_id> --query status

# 3. Add a Spanish language target (note the returned language_id)
elevenlabs dubbing project language create --project-id <project_id> --target-language es

# 4. Poll until the language status is "completed"
elevenlabs dubbing project language get \
  --project-id <project_id> --language-id <language_id> --query status

# 5. Get the signed download URL, then save the dubbed audio
elevenlabs dubbing project language get \
  --project-id <project_id> --language-id <language_id> --query outputs.lossless_audio

curl -o dubbed.wav "<lossless_audio_url>"
```

L’audio doublé est enregistré sous le nom `dubbed.wav` dans votre répertoire de travail.

## Gérer les échecs

Si l’ajout d’une langue échoue, ajoutez à nouveau la même langue au projet existant plutôt que de créer un nouveau projet. Le projet et sa source transcrite sont réutilisables ; réessayer la langue est donc plus rapide et vous évite de payer une deuxième fois le [coût minimum d’une langue](/docs/fr/help-center/product/dubbing/how-much-does-dubbing-cost).

Créez un nouveau projet uniquement si le projet lui-même atteint l’état `failed` pendant la préparation, ce qui signifie que sa source n’a pas pu être transcrite. Vérifiez le fichier ou l’URL source, puis créez un nouveau projet.

> **Tip**
>
> Les Workspaces Enterprise peuvent réviser et corriger la transcription source avant d’ajouter une langue, ce qui
> produit des traductions plus précises. Consultez [Affiner et régénérer un doublage](/docs/fr/eleven-api/guides/how-to/dubbing/refine-and-regenerate).

## Prochaines étapes

#### [Utiliser votre propre transcription](/docs/fr/eleven-api/guides/how-to/dubbing/bring-your-own-transcript)

Créez un projet à partir d’une transcription existante et fournissez vos propres traductions

#### [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