Skip to content

Speech models

mistral.rs supports two speech-related model families:

  • Voxtral Realtime: multimodal model accepting audio input for speech transcription through /v1/chat/completions.
  • Dia: dedicated text-to-speech model served via /v1/audio/speech.

Voxtral Realtime is classified as a multimodal model because audio is an input modality. Dia is a dedicated speech model.

Terminal window
mistralrs serve -m mistralai/Voxtral-Mini-4B-Realtime-2602

The auto-loader recognizes the Voxtral Realtime layout from params.json, consolidated.safetensors, and tekken.json. The earlier VoxtralForConditionalGeneration architecture is not supported.

Voxtral Realtime uses the multimodal chat request shape: audio is an input content part and the response is its transcription. The supported checkpoint is intended for transcription; the text part in these examples does not imply support for summarization, speaker analysis, or other audio tasks.

Terminal window
curl http://localhost:1234/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "default",
"messages": [{
"role": "user",
"content": [
{"type": "audio_url", "audio_url": {"url": "https://raw.githubusercontent.com/google-gemma/cookbook/refs/heads/main/apps/sample-data/journal1.wav"}},
{"type": "text", "text": "Transcribe this."}
]
}]
}'

/v1/audio/speech matches OpenAI:

Terminal window
mistralrs serve -m nari-labs/Dia-1.6B

Dia understands dialogue speaker tags such as [S1] and [S2], and nonverbal parentheticals such as (laughs) or (coughs). Use them in the input string when you want dialogue or expressive speech.

Terminal window
curl http://localhost:1234/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "default",
"input": "[S1] Hello. This is a test of the text-to-speech system.",
"response_format": "wav"
}' \
--output out.wav
  • Output: raw audio bytes.
  • response_format: only wav and pcm are read; mp3/opus/aac/flac return a validation error.
  • Extra OpenAI fields such as voice, speed, and instructions are silently ignored (the request reads only model, input, and response_format).