Migrate from Voxtral 2
This page is for anyone who calls a Voxtral 2 audio model. It maps each model to its Voxtral 3 replacement, then lists what changes in speech to text and text to speech, and what to do about each change.
Model mapping
Model mapping
Replace each Voxtral 2 model ID with the ID of its Voxtral 3 replacement. Each Voxtral 3 model also answers to the aliases in the last column.
| Voxtral 2 model | Voxtral 3 model | Model ID | Aliases |
|---|---|---|---|
voxtral-mini-2602 | Voxtral Mini Transcribe 3 | voxtral-mini-transcribe-3-0 | voxtral-mini-transcribe-3, voxtral-mini-transcribe-latest |
voxtral-mini-transcribe-realtime-2602 | Voxtral Mini Transcribe Realtime 3 | voxtral-mini-transcribe-realtime-3-0 | voxtral-mini-transcribe-realtime-3, |
voxtral-small-2507 | Voxtral Small Transcribe 3 | voxtral-small-transcribe-latest | voxtral-small-transcribe-3, voxtral-small-transcribe-latest |
voxtral-mini-tts-2603 | Voxtral TTS 3 | voxtral-mini-tts-3-0 | voxtral-mini-tts-3, voxtral-mini-tts-latest will point to Voxtral 3 within a month of GA. |
Speech to text changes
Speech to text changes
The following table lists the changes that can affect a transcription integration, with breaking changes first.
| Change | Breaks existing code? | What to do |
|---|---|---|
Word timestamps are gone. timestamp_granularities accepts segment only, and word returns a 400 error. | Yes, if you request word timestamps. | Request segment timestamps. See Timestamps. |
A realtime session locks its settings when the first audio chunk arrives. A later session.update gets an error event. | Send every setting in the first session.update, before any audio. See Realtime transcription. | |
| Yes, if your display assumes that segments never overlap. | Keep both segments when they overlap. See Overlapping segments. | |
context_bias entries can be phrases with spaces, such as a full product name, and a free-form context sentence works offline. | No. | See Bias context and vocabulary. |
context_bias has no fixed number of entries. | No. | Keep the list short: the entries share the context window with the audio, and a request over the limit returns a 400 error. See Limits and errors. |
| Transcription covers more languages. | No. | Omit language to detect the language automatically, or set it when you know it. See Languages. |
| New: realtime diarization, speaker references, and turn detection in realtime sessions. | No. | Opt in when you need them. See Diarize speakers and Turn detection. |
Text to speech changes
Text to speech changes
The following table lists the changes that can affect a speech generation integration.
| Change | Breaks existing code? | What to do |
|---|---|---|
Emotion moves from the voice to inline tags. With Voxtral 2, each preset speaker has one variant per emotion, such as gb_jane_sad. Voxtral 3 adds [emotion=...] tags in input for finer control. | No. The Voxtral 2 presets are still accepted. | To vary the emotion of one voice, use emotion and pace tags. |
Voice cloning for a single request with ref_audio. | No. ref_audio is still accepted. | To reuse a cloned voice, save it once and pass its ID as voice_id. See Voice cloning. |
| New: Voxtral 3 voices, pace tags, custom pronunciation, | No. | Opt in when you need them. See Voices, Custom pronunciation, Style instructions, and Expressiveness. |
Deprecation timeline
Deprecation timeline
Migration checklist
Migration checklist
Follow these steps to move an integration to Voxtral 3:
- Replace each model ID with its Voxtral 3 ID. See Model mapping.
- If you request word timestamps, switch to segment timestamps.
- In realtime sessions, send every setting before the first audio chunk.
- If you diarize, check that your display handles overlapping segments.
- Review your
context_biasentries: write multi-word terms with spaces. - Generate a few samples with your voices, and move emotion variants to emotion tags if you want one voice in several moods. See Text to speech changes.
- Measure latency again from your application. See Latency.
Going further