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

# Use sua própria transcrição

> **Note**
>
> **Guia prático** · Pressupõe que você já saiba criar projetos de dublagem, como mostrado no
> [início rápido de Dublagem](/docs/pt/eleven-api/guides/cookbooks/dubbing).

> **Warning**
>
> O fornecimento da sua própria transcrição e traduções está disponível apenas para espaços de trabalho Enterprise. Entre em contato com
> [vendas](https://elevenlabs.io/contact-sales) para obter acesso.

Por padrão, a API de Dublagem transcreve sua mídia de origem e traduz automaticamente a transcrição para cada idioma de destino. Se você já tiver uma transcrição precisa — legendas, um roteiro ou texto traduzido profissionalmente — poderá fornecê-la. Este guia aborda o formato do arquivo de transcrição, como criar um projeto a partir de uma transcrição e como fornecer suas próprias traduções ao adicionar um idioma.

## Formato do arquivo de transcrição

Uma transcrição é um arquivo JSON com um único array `segments` de nível superior. Cada segmento é uma fala: o texto falado, quando começa e termina e, opcionalmente, quem o fala.

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

| Campo         | Obrigatório | Descrição                                                                                                                                                                             |
| ------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `text`        | Sim         | O texto falado durante o segmento.                                                                                                                                                    |
| `start_s`     | Sim         | Horário de início do segmento, em segundos.                                                                                                                                           |
| `end_s`       | Sim         | Horário de término do segmento, em segundos.                                                                                                                                          |
| `speaker_id`  | Não         | Identificador que agrupa segmentos falados pela mesma pessoa, para que cada pessoa seja dublada com uma voz consistente. Segmentos que o omitem compartilham um único falante padrão. |
| `external_id` | Não         | Seu próprio identificador para o segmento, com no máximo 128 caracteres e exclusivo na transcrição. Usado como chave das traduções e retornado em cada leitura da transcrição.        |
| `translation` | Não         | Texto traduzido para o segmento, usado para inicializar o idioma de destino criado por `target_language`. Se algum segmento o incluir, todos deverão incluí-lo.                       |

### Regras dos segmentos

A transcrição é validada quando você cria o projeto:

* Os segmentos devem estar ordenados por `start_s`.
* Um segmento deve ter entre 0,1 e 25 segundos de duração, e `end_s` deve ser maior que `start_s`.
* Segmentos com o mesmo `speaker_id` não podem se sobrepor, embora possam se tocar em um ponto final. Segmentos de falantes diferentes podem se sobrepor para representar falas simultâneas.
* Uma transcrição pode conter no máximo 20.000 segmentos, e o arquivo pode ter no máximo 4 MiB.

Prefira segmentos mais curtos a mais longos: divida as frases sempre que houver uma pausa de um segundo ou mais. Os limites dos segmentos determinam como o áudio dublado é sincronizado com a origem, portanto uma transcrição com pausas precisas e naturais gera uma dublagem mais bem sincronizada.

## Crie um projeto a partir da sua transcrição

Passe o arquivo de transcrição ao criar o projeto. `source_language` é obrigatório ao fornecer uma transcrição, pois a mídia de origem não é transcrita automaticamente. Os idiomas são especificados como tags BCP-47, por exemplo, `es` ou `fr-CA`. Consulte os [idiomas e dialetos compatíveis](/docs/pt/overview/capabilities/dubbing#supported-languages) para ver todos os valores aceitos.

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

O projeto ainda processa a mídia de origem antes de poder ser dublado. Portanto, consulte-o até que o status seja `ready`, como mostrado no [início rápido](/docs/pt/eleven-api/guides/cookbooks/dubbing). Seus segmentos são usados como estão; nenhuma transcrição automática é executada.

## Forneça suas próprias traduções

Ao adicionar um idioma de destino, passe um mapa `translations` para usar suas próprias traduções em vez da tradução automática. O mapa usa como chave o `external_id` de cada segmento de origem ou o `id` interno do segmento caso você não tenha fornecido um, e deve abranger cada segmento de origem exatamente uma vez.

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

Cada idioma de destino requer uma chamada de criação, então repita esta solicitação para cada idioma para o qual você deseja dublar. Um mapa `translations` pode conter no máximo 20.000 entradas, totalizando no máximo 4 MiB de texto.

Se os seus segmentos não tiverem `external_id`, leia a transcrição de origem para obter o `id` interno de cada segmento e use-os como chaves:

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

### Inicialize traduções na criação do projeto

Para um único idioma de destino, você pode ignorar o mapa `translations` separado incluindo uma `translation` em cada segmento do arquivo de transcrição e passando `target_language` ao criar o projeto. O idioma de destino é criado na fila com suas traduções e começa a ser gerado assim que o projeto estiver pronto.

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

## Considerações sobre qualidade

A qualidade da dublagem depende da transcrição e das traduções usadas para criá-la. Os tempos dos segmentos e o texto são usados diretamente para definir o tempo e dar voz à performance dublada, portanto tempos ou textos imprecisos prejudicam o resultado. As traduções são geradas para caber no intervalo de tempo de cada segmento: uma tradução muito mais longa ou mais curta que a original afeta o ritmo da fala dublada. Por isso, busque traduções com duração falada semelhante.

## Próximas etapas

#### [Aprimore e gere novamente uma dublagem](/docs/pt/eleven-api/guides/how-to/dubbing/refine-and-regenerate)

Edite a transcrição de origem e as traduções e, depois, gere a dublagem novamente

#### [Dubле em vários idiomas](/docs/pt/eleven-api/guides/how-to/dubbing/multiple-languages)

Adicione vários idiomas de destino a um único projeto

#### [Referência da API](/docs/pt/api-reference/dubbing/create-project)

Explore todos os parâmetros e formatos de resposta da API de Dublagem