> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-mintlify-de47a659.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Fala para Texto

> Transcreva arquivos de áudio em texto com modelos de fala para texto da Venice via /audio/transcriptions, com formatos de resposta e timestamps de segmento.

A conversão de fala para texto transcreve áudio falado em texto escrito. Envie um arquivo de áudio para `/audio/transcriptions`, escolha um modelo de transcrição e selecione o formato de resposta desejado.

Trabalhando com a gravação de uma conversa? [Notas de Reunião com Fala para Texto](/guides/media/meeting-notes) vai de um arquivo de áudio a decisões e itens de ação que citam o segundo em que foram acordados, incluindo quais modelos retornam os tempos dos segmentos e como lidar com uma transcrição que nunca diz quem está falando.

## Uso Básico

<CodeGroup>
  ```python Python theme={null}
  import os

  import requests

  with open("meeting.mp3", "rb") as audio:
      response = requests.post(
          "https://api.venice.ai/api/v1/audio/transcriptions",
          headers={"Authorization": f"Bearer {os.environ['VENICE_API_KEY']}"},
          files={"file": audio},
          data={
              "model": "nvidia/parakeet-tdt-0.6b-v3",
              "response_format": "json",
          },
      )

  response.raise_for_status()
  print(response.json()["text"])
  ```

  ```javascript Node.js theme={null}
  import { createReadStream } from "node:fs";
  import FormData from "form-data";

  const form = new FormData();
  form.append("file", createReadStream("meeting.mp3"));
  form.append("model", "nvidia/parakeet-tdt-0.6b-v3");
  form.append("response_format", "json");

  const response = await fetch("https://api.venice.ai/api/v1/audio/transcriptions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.VENICE_API_KEY}`,
      ...form.getHeaders(),
    },
    body: form,
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }

  const transcript = await response.json();
  console.log(transcript.text);
  ```

  ```bash cURL theme={null}
  curl https://api.venice.ai/api/v1/audio/transcriptions \
    -H "Authorization: Bearer $VENICE_API_KEY" \
    --form file=@meeting.mp3 \
    --form model=nvidia/parakeet-tdt-0.6b-v3 \
    --form response_format=json
  ```
</CodeGroup>

## Entradas Suportadas

Os formatos de áudio suportados são `wav`, `wave`, `flac`, `m4a`, `aac`, `mp4`, `mp3`, `ogg`, `oga` e `webm`. Um arquivo é aceito quando seu tipo MIME ou sua extensão está nessa lista, e os bytes enviados também precisam passar em uma verificação de magic bytes — renomear um arquivo para uma extensão suportada não fará com que ele passe. Consulte a página [Modelos de Fala para Texto](/models/speech-to-text) para saber quais modelos são suportados atualmente e seus preços.

## Formatos de Resposta

| Formato | Use quando                                                                                       |
| ------- | ------------------------------------------------------------------------------------------------ |
| `json`  | Você quiser uma resposta estruturada: `text`, mais `duration` e `timestamps` quando disponíveis. |
| `text`  | Você quiser texto puro sem precisar fazer parse de JSON.                                         |

<Note>
  Esses são os únicos dois valores que `response_format` aceita. Não existe a opção `srt`, `vtt` ou `verbose_json` — solicitar uma delas retorna um `400`. Para criar legendas, use `timestamps: true` com `response_format: json` e renderize os dados de tempo você mesmo.
</Note>

## Timestamps

Passe `timestamps=true` para receber dados de tempo junto com a transcrição. O suporte é específico de cada modelo, e a granularidade difere:

| Modelo                        | Granularidade |
| ----------------------------- | ------------- |
| `elevenlabs/scribe-v2`        | `word`        |
| `stt-xai-v1`                  | `word`        |
| `openai/whisper-large-v3`     | `segment`     |
| `fal-ai/wizper`               | `segment`     |
| `nvidia/parakeet-tdt-0.6b-v3` | Nenhuma       |

<Warning>
  O modelo padrão, `nvidia/parakeet-tdt-0.6b-v3`, aceita `timestamps=true` e depois o ignora — você recebe uma resposta contendo apenas `text`, sem erro e sem aviso. Escolha um modelo da tabela acima se precisar de tempos, e verifique se a chave `timestamps` existe antes de lê-la.
</Warning>

```bash theme={null}
curl https://api.venice.ai/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  --form file=@meeting.mp3 \
  --form model=elevenlabs/scribe-v2 \
  --form timestamps=true \
  --form response_format=json
```

```json theme={null}
{
  "text": "The quick brown fox jumps over the lazy dog.",
  "duration": 4.099,
  "timestamps": {
    "word": [
      { "word": "The", "start": 0.0, "end": 0.14 },
      { "word": "quick", "start": 0.14, "end": 0.42 }
    ]
  }
}
```

Modelos com granularidade de segmento retornam um array `segment` em vez disso, onde cada entrada é `{ "text": "...", "start": 0.0, "end": 3.2 }`. Todos os tempos estão em segundos.

<Note>
  Nenhum modelo de transcrição da Venice realiza diarização de falantes, então não há campo `speaker` em nenhuma resposta. Uma transcrição é um fluxo único de texto — falantes só podem ser atribuídos quando um nome é dito em voz alta.
</Note>

## Dicas de Produção

* Mantenha o áudio nítido e evite falas sobrepostas quando possível.
* Divida gravações muito longas em pedaços menores se seu fluxo de trabalho precisar de menor latência ou retentativas mais fáceis.
* Armazene o caminho do áudio original, o ID do modelo e o formato de resposta com cada transcrição para fins de auditoria.

## Recursos Relacionados

* [API de Transcrição de Áudio](/api-reference/endpoint/audio/transcriptions)
* [Modelos de Fala para Texto](/models/speech-to-text)
* [Guia de Texto para Fala](/guides/media/text-to-speech)
