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

# Speech-to-Text

> Transkribiere Audiodateien in Text mit Venice-Speech-to-Text-Modellen über /audio/transcriptions, mit wählbaren Antwortformaten und Segment-Zeitstempeln.

Speech-to-Text transkribiert gesprochene Audioaufnahmen in geschriebenen Text. Sende eine Audiodatei an `/audio/transcriptions`, wähle ein Transkriptionsmodell und lege das gewünschte Antwortformat fest.

Du arbeitest mit der Aufnahme eines Gesprächs? [Meeting-Notizen mit Speech-to-Text](/guides/media/meeting-notes) führt von einer Audiodatei zu Entscheidungen und Action Items, die die Sekunde zitieren, in der sie vereinbart wurden – einschließlich der Frage, welche Modelle Segment-Timings zurückgeben und wie du mit einem Transkript umgehst, das nie verrät, wer gerade spricht.

## Grundlegende Nutzung

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

## Unterstützte Eingaben

Unterstützte Audioformate sind `wav`, `wave`, `flac`, `m4a`, `aac`, `mp4`, `mp3`, `ogg`, `oga` und `webm`. Eine Datei wird akzeptiert, wenn entweder ihr MIME-Typ oder ihre Dateiendung auf dieser Liste steht, und die hochgeladenen Bytes müssen zusätzlich einen Magic-Byte-Check bestehen – das bloße Umbenennen einer Datei auf eine unterstützte Endung reicht nicht aus. Aktuelle Modellunterstützung und Preise findest du auf der Seite [Speech-to-Text-Modelle](/models/speech-to-text).

## Antwortformate

| Format | Verwendung                                                                                               |
| ------ | -------------------------------------------------------------------------------------------------------- |
| `json` | Wenn du eine strukturierte Antwort möchtest: `text`, plus `duration` und `timestamps`, sofern verfügbar. |
| `text` | Wenn du reinen Text ohne JSON-Parsing möchtest.                                                          |

<Note>
  Das sind die einzigen beiden Werte, die `response_format` akzeptiert. Es gibt keine Option `srt`, `vtt` oder `verbose_json` – eine solche Anfrage gibt einen `400` zurück. Um Untertitel zu erstellen, verwende `timestamps: true` mit `response_format: json` und rendere die Timing-Daten selbst.
</Note>

## Timestamps

Übergib `timestamps=true`, um Timing-Daten zusammen mit dem Transkript zu erhalten. Die Unterstützung ist modellspezifisch, und die Granularität unterscheidet sich:

| Modell                        | Granularität |
| ----------------------------- | ------------ |
| `elevenlabs/scribe-v2`        | `word`       |
| `stt-xai-v1`                  | `word`       |
| `openai/whisper-large-v3`     | `segment`    |
| `fal-ai/wizper`               | `segment`    |
| `nvidia/parakeet-tdt-0.6b-v3` | Keine        |

<Warning>
  Das Standardmodell, `nvidia/parakeet-tdt-0.6b-v3`, akzeptiert `timestamps=true` und ignoriert es dann – du erhältst eine Antwort, die nur `text` enthält, ohne Fehler und ohne Warnung. Wähle ein Modell aus der Tabelle oben, wenn du Timings brauchst, und prüfe, ob der Schlüssel `timestamps` vorhanden ist, bevor du ihn ausliest.
</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 }
    ]
  }
}
```

Segment-Level-Modelle geben stattdessen ein `segment`-Array zurück, in dem jeder Eintrag `{ "text": "...", "start": 0.0, "end": 3.2 }` ist. Alle Zeiten sind in Sekunden.

<Note>
  Kein Venice-Transkriptionsmodell führt Sprecher-Diarisierung durch, daher gibt es in keiner Antwort ein `speaker`-Feld. Ein Transkript ist ein einzelner Textstrom – Sprecher können nur zugeordnet werden, wenn ein Name laut ausgesprochen wird.
</Note>

## Tipps für den Produktiveinsatz

* Halte das Audio klar und vermeide nach Möglichkeit sich überlappende Sprecher.
* Teile sehr lange Aufnahmen in kleinere Chunks auf, wenn dein Workflow geringere Latenz oder einfachere Wiederholungen benötigt.
* Speichere den ursprünglichen Audiopfad, die Modell-ID und das Antwortformat mit jedem Transkript, um die Nachvollziehbarkeit zu gewährleisten.

## Verwandte Ressourcen

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