> For the documentation index, fetch https://sync.so/docs/llms.txt. Append .md to a page URL for Markdown. Documentation-search MCP: https://sync.so/docs/_mcp/server.

# Doublage

> Traduisez l’audio d’une vidéo vers une autre langue et appliquez le lipsync sur l’audio doublé en un seul appel API.

Le doublage est pris en charge nativement sur `POST /v2/generate`. Passez l’objet `dubParams` avec votre requête de génération habituelle et Sync Labs extraira l’audio de l’entrée vidéo, le doublera dans la langue cible, puis exécutera le lipsync sur le résultat doublé, le tout dans un seul job.

> **Note**
>
> Une vidéo avec audio suffit pour que le doublage fonctionne, une entrée vidéo seule, avec piste audio intégrée, est acceptée. Vous n’avez pas besoin de fournir une entrée audio séparée, toutes les entrées audio du tableau `input` sont ignorées quand `dubParams` est présent. Vous devez passer les paramètres de doublage (`dubParams`) pour activer le doublage.

## Quand utiliser le doublage

* **Flux natif `dubParams` (cette page)** : un seul appel API, recommandé pour les workflows standard traduction plus lipsync.
* **Orchestration manuelle** : si vous avez besoin d’un contrôle personnalisé sur la transcription, le clonage de voix TTS ou les étapes intermédiaires, consultez le [tutoriel traduction et doublage](/docs/tutorials/translation) qui connecte manuellement ElevenLabs, OpenAI et Sync Labs.

## Workflow

#### Préparer une vidéo avec audio

Assurez-vous que votre fichier source est une vidéo dont vous voulez traduire la piste audio. Aucune entrée audio séparée n’est requise.

#### Choisir une langue cible

Choisissez l’un des codes `targetLang` pris en charge (voir l’enum [`DubLanguage`](/api-reference/api/generate-api/create#request.body.dubParams.targetLang) dans l’API Reference pour la liste complète).

#### Envoyer la requête de génération

Incluez `dubParams` dans le corps de la requête. `providerName` et `targetLang` sont requis, `sourceLang` vaut `auto` par défaut.

#### Interroger jusqu’à la fin

Interrogez `GET /v2/generate/{id}` jusqu’à ce que `status` soit `COMPLETED`, `outputUrl` contiendra la vidéo doublée et lipsynced.

## Champs DubDto

Voir la référence API complète pour [`dubParams`](/api-reference/api/generate-api/create#request.body.dubParams).

* `providerName` (`DubProviderName`, requis) : fournisseur de doublage à utiliser. Actuellement, `elevenlabs` est la seule valeur prise en charge.
* `targetLang` (`DubLanguage`, requis) : code de langue cible pour le doublage, par exemple `es`, `fr`, `ja`.
* `sourceLang` (`DubSourceLanguage`, optionnel, par défaut `auto`) : code de langue source, ou `auto` pour laisser le moteur la détecter.
* `numSpeakers` (`integer`, optionnel) : déprécié et ignoré, Doublage v2 détecte les intervenants automatiquement. Accepté uniquement pour rétrocompatibilité.

Si vous avez besoin d’une langue cible non listée dans `DubLanguage`, générez ou enregistrez vous-même l’audio traduit et envoyez-le comme entrée `audio` normale au lieu d’utiliser `dubParams`. Les modèles lipsync peuvent aligner un audio clair dans n’importe quelle langue.

## Exemples de requête

#### TypeScript SDK

```typescript
import { SyncClient } from "@sync.so/sdk";

const sync = new SyncClient();

const response = await sync.generations.create({
  model: "lipsync-2",
  input: [
    { type: "video", url: "https://assets.sync.so/docs/example-video.mp4" }
  ],
  dubParams: {
    providerName: "elevenlabs",
    targetLang: "es"
  }
});
```

#### Python SDK

```python
from sync import Sync

client = Sync()

response = client.generations.create(
    model="lipsync-2",
    input=[
        {"type": "video", "url": "https://assets.sync.so/docs/example-video.mp4"}
    ],
    dub_params={
        "provider_name": "elevenlabs",
        "target_lang": "es"
    },
)
```

#### cURL (HTTP)

```bash
curl -X POST https://api.sync.so/v2/generate \
  -H "x-api-key: $SYNC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "lipsync-2",
    "input": [
      { "type": "video", "url": "https://assets.sync.so/docs/example-video.mp4" }
    ],
    "dubParams": {
      "providerName": "elevenlabs",
      "targetLang": "es"
    }
  }'
```

## Notes de comportement

* Quand `dubParams` est fourni, l’audio est extrait de l’entrée vidéo, doublé via ElevenLabs dans la langue cible, puis le lipsync est exécuté sur l’audio doublé.
* Toutes les entrées audio du tableau `input` sont ignorées quand le doublage est activé, passez uniquement l’entrée vidéo.
* Une durée audio détectée est requise sur la vidéo source, les requêtes de doublage sans piste audio décodable sont rejetées.
* La facturation est reportée par minute de sortie doublée. Consultez la page [facturation](/docs/product/facturation) pour les détails.

## Voir aussi

* [Models -> Lipsync](/docs/models/lipsync) - modèle lipsync sous-jacent utilisé après doublage.
* [Tutoriel traduction et doublage](/docs/tutorials/translation) - orchestration multi-services héritée avec contrôle fin.