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

# Traducción y doblaje

> Tutorial de traducción y doblaje de video con IA. Traduce videos a cualquier idioma con movimientos de boca sincronizados usando la API de sync. labs y ElevenLabs.

## Traducción/Doblaje

> **Note**
>
> Si solo necesitas traducción de idioma estándar con lipsync, el flujo de una sola llamada `dubParams` es más simple. Consulta la [guía de Doblaje](/docs/tutorials/doblaje). Este tutorial es para usuarios que quieren control detallado de la orquestación entre ElevenLabs, OpenAI y Sync Labs.

La traducción y el doblaje de video te permite convertir tu contenido a distintos idiomas manteniendo movimientos labiales naturales y calidad de voz. Este tutorial te mostrará cómo traducir y doblar videos de forma programática para que tu contenido sea accesible a audiencias globales.

Sigue estos pasos para ejecutar el ejemplo de traducción/doblaje:

#### Clonar repositorio de Github

Clona el [repositorio sync-examples](https://github.com/synchronicity-labs/sync-examples).

```bash
git clone https://github.com/synchronicity-labs/sync-examples.git
cd sync-examples/translation/python
```

#### Configurar entorno

Crea un entorno virtual e instala las dependencias requeridas:

```bash
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```

#### Configurar entradas y ajustes

Modifica el archivo `args.py` para configurar las siguientes entradas y ajustes:

* `SYNCLABS_API_KEY`: Tu API key de Sync Labs
* `ELEVENLABS_API_KEY`: Tu API key de ElevenLabs
* `OPENAI_API_KEY`: Tu API key de OpenAI

Ajustes requeridos:

* `input_vid_url`: URL del video que se va a traducir/doblar.
* `target_language`: Idioma objetivo para la traducción (por ejemplo, "Spanish")
* `output_json_path`: Ruta de archivo para guardar los datos JSON de salida

Ajustes opcionales:

* `source_language`: Idioma fuente del video (déjalo vacío para detección automática)
* `voice_id`: Voice ID de ElevenLabs (déjalo vacío para clonar automáticamente la voz del video de entrada)
* `sync_mode`: Modo para sincronizar texto con video cuando las longitudes no coinciden (por defecto: "bounce")
* `lipsync_model`: Modelo de lipsync de Sync.so (por defecto: "lipsync-2")
* `tts_model`: Modelo de texto a voz de ElevenLabs (por defecto: "eleven\_multilingual\_v2")
* `gpt_model`: Modelo GPT de OpenAI para traducción (por defecto: "gpt-3.5-turbo")
* `transcription_model`: Modelo de OpenAI para transcripción (por defecto: "whisper-1")
* `segment_start`: Tiempo de inicio del segmento de video a traducir/doblar (en segundos, -1 para todo el video)
* `segment_end`: Tiempo de fin del segmento de video a traducir/doblar (en segundos, -1 para todo el video)

> **Note**
>
> * El archivo de video de entrada debe contener audio que se usará para clonado de voz, si no se proporciona un voice ID.
> * Consulta [ElevenLabs](https://elevenlabs.io/docs/overview/models) y [OpenAI](https://developers.openai.com/api/docs/guides/speech-to-text) para más información sobre idiomas y modelos compatibles.

#### Traducir/Doblar videos

Ejecuta el script de Python:

```bash
python main.py
```

Este comando iniciará el proceso de traducir/doblar el video según la configuración de `args.py`.

Al completar, se guardará un archivo JSON en la ruta especificada en `output_json_path`, que contendrá la siguiente información:

* `input_video`: URL del video original que se procesó
* `generated_audio`: URL del archivo de audio traducido
* `lipsync_jobID`: ID único del trabajo de lip-sync
* `outputUrl`: URL para acceder al video final traducido/doblado
* `voice_id`: ID de la voz usada en la traducción (se genera automáticamente si no se proporciona)

> **Note**
>
> * **Alojamiento temporal de archivos**: Este código usa el servicio de alojamiento temporal [Uguu](https://uguu.se/) para generar URLs de archivos de audio TTS. Estas URLs caducan después de 3 horas. Para usar tu propio servicio de hosting, modifica `upload_file_uguu()` en `FileProcessor.py`.
> * **Sondeo de trabajos**: El sondeo para finalización del trabajo de lipsync vence después de 60 mins. Ajusta el límite de tiempo en `LipSyncService.py` o usa `fetch_updates.py` para recuperar URLs de salida usando `output_json_path`.