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

# Tradução/Dublagem

> Tutorial de tradução e dublagem de vídeo com IA. Traduza vídeos para qualquer idioma com movimentos labiais sincronizados usando a API sync. labs e ElevenLabs.

## Tradução/Dublagem

> **Note**
>
> Se você precisa apenas de tradução padrão com sincronização labial, o fluxo de chamada única `dubParams` é mais simples  -  veja o [Guia de Dublagem](/docs/tutorials/dublagem). Este tutorial é para usuários que desejam controle detalhado sobre a orquestração entre ElevenLabs, OpenAI e Sync Labs.

A tradução e dublagem de vídeo permite converter seu conteúdo para diferentes idiomas mantendo movimentos labiais naturais e qualidade de voz. Este tutorial mostrará como traduzir e dublar vídeos programaticamente, tornando seu conteúdo acessível para audiências globais.

Siga estes passos para executar o exemplo de tradução/dublagem:

#### Clonar Repositório Github

Clone o [repositório 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 Ambiente

Crie um ambiente virtual e instale as dependências necessárias:

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

#### Configurar Entradas e Configurações

Modifique o arquivo `args.py` para configurar as seguintes entradas e configurações:

* `SYNCLABS_API_KEY`: Sua chave de API para Sync Labs
* `ELEVENLABS_API_KEY`: Sua chave de API para ElevenLabs
* `OPENAI_API_KEY`: Sua chave de API para OpenAI

Configurações obrigatórias:

* `input_vid_url`: URL do vídeo a ser traduzido/dublado.
* `target_language`: Idioma alvo para tradução (exemplo: "Spanish")
* `output_json_path`: Caminho do arquivo para salvar os dados JSON de saída

Configurações opcionais:

* `source_language`: Idioma de origem do vídeo (deixe em branco para detecção automática)
* `voice_id`: ID da voz ElevenLabs (deixe em branco para clonar automaticamente a voz do vídeo de entrada)
* `sync_mode`: Modo para sincronizar texto com vídeo quando os comprimentos não coincidem (padrão: "bounce")
* `lipsync_model`: Modelo lipsync do Sync.so (padrão: "lipsync-2")
* `tts_model`: Modelo de texto para fala da ElevenLabs (padrão: "eleven\_multilingual\_v2")
* `gpt_model`: Modelo GPT da OpenAI para tradução (padrão: "gpt-3.5-turbo")
* `transcription_model`: Modelo OpenAI para transcrição (padrão: "whisper-1")
* `segment_start`: Tempo inicial do segmento do vídeo para traduzir/dublar (em segundos, -1 para o vídeo inteiro)
* `segment_end`: Tempo final do segmento do vídeo para traduzir/dublar (em segundos, -1 para o vídeo inteiro)

> **Note**
>
> * O arquivo de vídeo de entrada deve conter áudio que será usado para clonagem de voz, caso um voice ID não seja fornecido.
> * Consulte [ElevenLabs](https://elevenlabs.io/docs/overview/models) e [OpenAI](https://developers.openai.com/api/docs/guides/speech-to-text) para mais informações sobre idiomas e modelos suportados.

#### Traduzir/Dublar Vídeos

Execute o script Python:

```bash
python main.py
```

Este comando iniciará o processo de tradução/dublagem do vídeo com base na configuração em `args.py`.

Ao concluir, um arquivo JSON será salvo no caminho especificado em `output_json_path`, contendo as seguintes informações:

* `input_video`: URL do vídeo original processado
* `generated_audio`: URL do arquivo de áudio traduzido
* `lipsync_jobID`: ID único do trabalho de sincronização labial
* `outputUrl`: URL para acessar o vídeo final traduzido/dublado
* `voice_id`: ID da voz usada na tradução (gerado automaticamente se não fornecido)

> **Note**
>
> * **Hospedagem Temporária de Arquivos**: Este código usa o serviço temporário de hospedagem de arquivos [Uguu](https://uguu.se/) para gerar URLs dos arquivos de áudio TTS. Essas URLs expiram após 3 horas. Para usar seu próprio serviço de hospedagem, modifique `upload_file_uguu()` em `FileProcessor.py`.
> * **Polling de Job**: A espera pela conclusão do job de lipsync expira após 60 minutos. Ajuste o limite de timeout em `LipSyncService.py` ou use `fetch_updates.py` para recuperar URLs de saída usando o `output_json_path`.