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

# Speech-to-text

> Transcribe audio with Qwen3-ASR, Whisper, Parakeet and Nemotron hosted on Prime Inference

Prime Inference serves six open-weights speech-to-text models on Prime infrastructure as [hosted models](https://docs.primeintellect.ai/inference/overview.md#hosted-and-gateway-models). Each turns an audio file into text, with timestamped segments and words when you ask for them. All six take requests on the [Transcriptions API](https://docs.primeintellect.ai/api-reference/inference-transcriptions.md), not on Chat Completions.

## Models

| Model | Model ID |
| - | - |
| Qwen3-ASR 0.6B | `qwen/qwen3-asr-0.6b` |
| Qwen3-ASR 1.7B | `qwen/qwen3-asr-1.7b` |
| Whisper Large v3 Turbo | `openai/whisper-large-v3-turbo` |
| Parakeet TDT 0.6B v3 | `nvidia/parakeet-tdt-0.6b-v3` |
| Parakeet Ultra | `moondream/parakeet-ultra` |
| Nemotron 3.5 Transcribe 30B A4B | `nvidia/nemotron-3.5-transcribe-30b-a4b` |

All six return segment and word timestamps. Transcription is billed per second of audio. See the [model catalog](https://app.primeintellect.ai/dashboard/inference?tab=models) or the [Models API](https://docs.primeintellect.ai/api-reference/inference-models.md) for pricing and availability.

* **Qwen3-ASR** is Qwen's multilingual model. The 1.7B model is more accurate than the 0.6B. Its word timestamps come from a separate forced aligner that doesn't cover every language: a request for word timestamps in a language it doesn't cover returns a 400, and the same request without word timestamps succeeds.
* **Whisper Large v3 Turbo** is OpenAI's multilingual model, a faster version of Whisper Large v3. Its words start with a space and carry a `probability`.
* **Parakeet TDT 0.6B v3** is NVIDIA's fast multilingual model, with word timestamps from the model itself. It detects the language on its own, ignores `language` and `temperature`, and reports `language` as `null`.
* **Parakeet Ultra** is Moondream's fine-tune of Parakeet TDT 0.6B v3, more accurate at the same speed. It also ignores `language` and `temperature`.
* **Nemotron 3.5 Transcribe** is NVIDIA's 30B mixture-of-experts model, with 4B parameters active per token. It reports `language` as `null`.

## Use Prime Inference

Create a Prime API key with **Inference** permission in the [API keys guide](https://docs.primeintellect.ai/api-reference/api-keys.md), then send a file:

```bash theme={null}
export PRIME_API_KEY="your-api-key"

curl https://api.pinference.ai/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $PRIME_API_KEY" \
  -F model=qwen/qwen3-asr-1.7b \
  -F response_format=verbose_json \
  -F "timestamp_granularities[]=segment" \
  -F "timestamp_granularities[]=word" \
  -F file=@interview.mp3
```

An OpenAI client works too, with Prime Inference's base URL:

```python theme={null}
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.pinference.ai/api/v1", api_key=os.environ["PRIME_API_KEY"], timeout=600)
with open("interview.mp3", "rb") as f:
    transcript = client.audio.transcriptions.create(model="qwen/qwen3-asr-1.7b", file=f)
print(transcript.text)
```

To charge a team instead of your personal account, add `-H "X-Prime-Team-ID: your-team-id"`, or `default_headers={"X-Prime-Team-ID": "your-team-id"}` in the OpenAI client. Keep API keys server-side.

## Transcribe long recordings

The models transcribe recordings of several hours. An upload holds at most 23 MiB of audio, and two hours is usually 30 to 115 MB, so put long files where Prime Inference can download them, such as a signed URL from your storage provider, and send `audio_url`:

```bash theme={null}
curl https://api.pinference.ai/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $PRIME_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 600 \
  -d '{
    "model": "qwen/qwen3-asr-1.7b",
    "audio_url": "https://storage.example.com/recordings/all-hands.m4a?signature=...",
    "response_format": "verbose_json"
  }'
```

The file can be up to 512 MiB. Two hours of audio takes Qwen3-ASR 1.7B about 4 minutes, and a transcription runs for at most 10 minutes, so give your client a 10-minute timeout. If a request returns 429, every server for that model is busy; retry after the `Retry-After` header's seconds.

Send long recordings to Prime Inference directly. Through OpenRouter, a transcription must finish within 60 seconds and the audio must fit in the request.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.