> ## Documentation Index
> Fetch the complete documentation index at: https://docs.venice.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Speech-to-Text

> Transcribe audio files with Venice speech-to-text models using the OpenAI-compatible /audio/transcriptions endpoint.

Speech-to-text transcribes spoken audio into written text. Send an audio file to `/audio/transcriptions`, choose a transcription model, and select the response format you want back.

## Basic Usage

<CodeGroup>
  ```python Python theme={"system"}
  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={"system"}
  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={"system"}
  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>

## Supported Inputs

Common audio formats include `mp3`, `mp4`, `mpeg`, `mpga`, `m4a`, `wav`, `webm`, `flac`, and `ogg`. See the [Speech-to-Text Models](/models/speech-to-text) page for current model support and pricing.

## Response Formats

| Format         | Use when                                        |
| -------------- | ----------------------------------------------- |
| `json`         | You want a simple `{ "text": "..." }` response. |
| `text`         | You want plain text without JSON parsing.       |
| `srt`          | You need SubRip subtitles.                      |
| `vtt`          | You need WebVTT subtitles.                      |
| `verbose_json` | You need richer timestamp and segment metadata. |

<Tip>
  Use subtitle formats when the transcript will be paired with media playback. Use `json` or `text` when the transcript feeds summarization, search, or downstream chat prompts.
</Tip>

## Production Tips

* Keep audio clear and avoid overlapping speakers when possible.
* Split very long recordings into smaller chunks if your workflow needs lower latency or easier retries.
* Store the original audio path, model ID, and response format with each transcript for auditability.

## Related Resources

* [Audio Transcriptions API](/api-reference/endpoint/audio/transcriptions)
* [Speech-to-Text Models](/models/speech-to-text)
* [Text-to-Speech Guide](/guides/media/text-to-speech)
