models

Mistral: Voxtral Mini TTS

Markdown · JSON

Mistral: Voxtral Mini TTS

Voxtral TTS is Mistral AI's 4B speech-generation model with reference-based voice adaptation across nine languages. It turns prepared text into expressive audio, supports reusable or one-off voice prompts and streaming, and produces 24 kHz output in documented audio formats.

About the model

This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.

Voxtral TTS is Mistral AI's 4B text-to-speech model for generating spoken audio from text and a voice reference. The maker's model page identifies the 2603 edition as voxtral-mini-tts-2603, while the released weight card is named Voxtral 4B TTS 2603. This entry concerns that speech-generation release, distinct from Voxtral Small audio understanding, transcription and later real-time input models.

Expressive speech and voice adaptation

The model is designed to capture a reference voice's pauses, rhythm, intonation, accent and emotional rendering. The voice acts as an instruction for how the text should sound; the maker's overview does not require separate prosody or emotion tags, or a transcript of the reference recording. The source text determines what is said, while the audio reference guides its delivery.

The overview describes adapting a voice from as little as two to three seconds of audio. The architecture description discusses voice prompts of five to twenty-five seconds. Those statements have different scopes: a short adaptation example is not a requirement to use the shortest possible reference. Choose clear speech that represents the style and accent wanted for the final result.

The released card includes twenty preset voices and adaptation to new voices. The maker's speech workflow can use a saved voice profile or a one-off reference clip. Saving a profile allows the same voice reference to be reused across separate speech requests, while a one-off clip supplies it for the current task. A profile and a generated recording are different artifacts.

Languages and cross-language delivery

The release supports English, French, Spanish, German, Italian, Portuguese, Dutch, Arabic and Hindi, with dialect variation, cross-lingual voice transfer and code-mixing described by the maker. For the best result, the speech guide recommends matching the reference language to the text language. Cross-language transfer can preserve the reference's accent while speaking the prepared text in another supported language.

A practical narration task can use the same voice style for an explanation in different supported languages, with each text prepared for the intended listener. A voice-assistant reply can use a short, conversational script rather than reading an unedited document aloud. The text-to-speech model renders the prepared words; any translation or answer-writing stage that produces those words is a separate step.

Preparing the text

The maker's speech guide recommends verbalizable text. Write numbers and symbols in the form that should be spoken so the model does not need to choose between possible readings. A number can be a quantity, time or identifier; define the intended spoken wording before synthesis. Spell out abbreviations when pronunciation matters, using separated letters where that is the intended reading.

Avoid rich formatting, emojis and special characters that will not be rendered as spoken content. Prepare complete sentences with the punctuation and wording needed for the delivery. The guide recommends prompts below 300 words for best results. This is a quality recommendation rather than a declared hard maximum input length.

For a procedural explanation, write the action and the condition in a sentence a listener can follow. For an announcement, place the important information before optional detail. For a voice reply, retain the factual answer and remove display-only formatting or source notation that should not be spoken. These preparations make the script itself suitable for audio before the reference determines its style.

Streaming, output and duration

The maker documents basic and streaming delivery and describes native generation of up to two minutes of audio. The released weight card also lists batch inference for preparing multiple speech tasks. Its longer service generations use interleaving rather than treating one native chunk as unbounded. For longer narration, prepare coherent sections and keep their voice and text preparation consistent with the delivery workflow that handles continuation.

The released card specifies 24 kHz audio and names WAV, PCM, FLAC, MP3, AAC and Opus output formats. The speech-service guide discusses MP3 for compressed delivery, WAV for uncompressed PCM, FLAC for lossless compression and PCM or Opus for streaming. Choose a format supported by the connected workflow and suitable for its player or processing step. Format selection and streaming behavior are distinct from the voice adaptation itself.

Model architecture and practical boundaries

The announcement describes an autoregressive, flow-matching architecture with a 3.4B Transformer decoder backbone, a 390-million-parameter acoustic Transformer and a 300-million-parameter neural audio codec. The decoder predicts semantic content and the acoustic component produces speech representation, while the codec handles audio. These components explain the approximate 4B model label; they are not extra input languages or a different answer-generation model.

A practical output is the synthesized recording or audio stream associated with its prepared script and chosen voice. Keep those associations when generating several sections so the application can save, play or assemble the correct material. The model produces audio rather than a transcript, semantic-search vector or newly authored factual answer.

Preserve the 2603 speech edition, supported language and reference style. The read sources provide the native two-minute statement and the under-300-word preparation recommendation, but do not establish a separate hard maximum text-character limit or total stitched-recording duration. Use the actual text, voice and delivery requirements to define the finished audio artifact.

Ailoot Ultra · Text to speech POST /v1/audio/speech mistralai/voxtral-mini-tts-2603

mistralai/voxtral-mini-tts-2603

Mistral /mistralai/voxtral-mini-tts-2603

Overview

Voxtral TTS is Mistral AI's 4B speech-generation model with reference-based voice adaptation across nine languages. It turns prepared text into expressive audio, supports reusable or one-off voice prompts and streaming, and produces 24 kHz output in documented audio formats.

Accepted inputs
Text
Results
Audio

Available in Ailoot · inputs & methods

Ailoot Ultra · Text to speech POST /v1/audio/speech
Input types
text
Output types
audio
Output format
mp3
FieldTypeRequirementValues & limitsDefault
FieldmodelTypestringRequirementRequiredValues & limits
mistralai/voxtral-mini-tts-2603
Default—
FieldinputTypestringRequirementRequiredValues & limits
Minimum length: 1
Unit: Unicode characters
Default—
FieldvoiceTypestringRequirementRequiredValues & limits
en_paul_sad, en_paul_neutral, en_paul_happy, en_paul_frustrated, en_paul_excited, en_paul_confident, en_paul_cheerful, en_paul_angry, gb_oliver_neutral, gb_oliver_sad, gb_oliver_excited, gb_oliver_curious, gb_oliver_confident, gb_oliver_cheerful, gb_oliver_angry, gb_jane_sarcasm, gb_jane_confused, gb_jane_shameful, gb_jane_sad, gb_jane_neutral, gb_jane_jealousy, gb_jane_frustrated, gb_jane_curious, gb_jane_confident, fr_marie_sad, fr_marie_neutral, fr_marie_happy, fr_marie_excited, fr_marie_curious, fr_marie_angry
Default—
Fieldresponse_formatTypestringRequirementRequiredValues & limits
mp3
Default—
Input material combinations

text_to_speech · Required: input

Method parameters and lifecycle
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, input, voice, response_format
Parametervoice_idsContracten_paul_sad, en_paul_neutral, en_paul_happy, en_paul_frustrated, en_paul_excited, en_paul_confident, en_paul_cheerful, en_paul_angry, gb_oliver_neutral, gb_oliver_sad, gb_oliver_excited, gb_oliver_curious, gb_oliver_confident, gb_oliver_cheerful, gb_oliver_angry, gb_jane_sarcasm, gb_jane_confused, gb_jane_shameful, gb_jane_sad, gb_jane_neutral, gb_jane_jealousy, gb_jane_frustrated, gb_jane_curious, gb_jane_confident, fr_marie_sad, fr_marie_neutral, fr_marie_happy, fr_marie_excited, fr_marie_curious, fr_marie_angry
Parameterresponse_formatContractmp3
Parametermax_input_charactersContractnull
Parameterother_optionsContractfalse
ParameterinputContractexact UTF-8 text; Unicode character count without normalization
Parametermaterial_typesContracttext

Lifecycle: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · actual returned task_id or media library record

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Select exact voice from this model profile.

Input characters and audio seconds are different meters.

Pricing

Tariff references do not add request options. Supported parameters are listed for the selected method.

Fast mode
Not specified When fast mode is selected
Flex mode
Not specified When flex mode is selected
Maximum reasoning effort
Not specified When maximum reasoning effort uses the default adjustment

Ailoot rates

Prices by configuration

Match each charge to the conditions shown. Use one rate for each set of alternative configurations.

ConfigurationRate scheduleBillable quantityBilling unitCharge
ConfigurationBase token ratesRate scheduleBase rateBillable quantity—Billing unit—Charge
Input · Input tokens — / 1K tokens
Output · Output tokens — / 1K tokens
Input · Cache read — / 1K tokens
Input · Cache write — / 1K tokens
Input · Cache write, 1 hour — / 1K tokens
ConfigurationUltraRate schedule—Billable quantityEach Unicode code point counts as one character, including Han characters.Billing unitper 1000 input characterCharge
Input · input character $0.032 per 1000 input character

Reference tariff details

Model-level reference schedules do not change method selection, quotes or charges. Active charges use the selected Ailoot method rates.

Mistral: Voxtral Mini TTS

Prices by configuration

ConfigurationBilling conditionsCharge
ConfigurationMistral: Voxtral Mini TTS · Default configurationBilling conditionsDefault configurationCharge
Input · Input characters $0.000032 per input character

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. How reservation and settlement work →

Example requests

Ailoot Ultra · Text to speech

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}"
export AILOOT_VOICE_ID
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "mistralai/voxtral-mini-tts-2603", "input": "Good afternoon! This is a short voice take."}')
voice=os.environ["AILOOT_VOICE_ID"]
allowed=json.loads('["en_paul_sad", "en_paul_neutral", "en_paul_happy", "en_paul_frustrated", "en_paul_excited", "en_paul_confident", "en_paul_cheerful", "en_paul_angry", "gb_oliver_neutral", "gb_oliver_sad", "gb_oliver_excited", "gb_oliver_curious", "gb_oliver_confident", "gb_oliver_cheerful", "gb_oliver_angry", "gb_jane_sarcasm", "gb_jane_confused", "gb_jane_shameful", "gb_jane_sad", "gb_jane_neutral", "gb_jane_jealousy", "gb_jane_frustrated", "gb_jane_curious", "gb_jane_confident", "fr_marie_sad", "fr_marie_neutral", "fr_marie_happy", "fr_marie_excited", "fr_marie_curious", "fr_marie_angry"]')
if voice not in allowed: raise SystemExit("Choose an accepted voice ID from this exact model profile")
p["voice"]=voice
p["response_format"]="mp3"
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o speech.mp3

Receive and save results

Ailoot Ultra · Text to speech

mp3

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Other content reads
Media libraryTask statusAsset details
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
Keep all completed results

Keep every complete returned response, file and content part.

Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.

If the original response needs checking

Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route.

Response fields
FieldType
Fieldbinary audioTypebytes
Fieldresponse headersTypeheaders
Errors and next steps
ResponseConditionNext step
Response400 · invalid_request_errorConditionInvalid required fields, material representation or parameter valueNext stepCorrect the indicated fields before a new creation request.
Responseserver_errorConditionThe returned response says the operation or result requires a checkNext stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request.

Aliases

Model aliases

Ailoot Ultra mistralai/voxtral-mini-tts-2603

Method path aliases

Use the method paths shown above.

Related caller IDs

mistralai/voxtral-mini-tts-2603

FAQ · Mistral: Voxtral Mini TTS
What inputs and results are available?

POST /v1/audio/speech · mistralai/voxtral-mini-tts-2603: text → audio

Which fields does the request use?

POST /v1/audio/speech · mistralai/voxtral-mini-tts-2603: model, input, voice, response_format

More details

Connect Ailoot to Claude Code, OpenCode, Hermes or your own app.

The company and its project portfolio

The company and its project portfolio: millions of customers; monthly sales in the billions.

Buy tokens at a discount.

Subscription discounts for regular use. Promo codes offer up to 50% off token purchases.

Subscription
Choose a discounted plan for your regular requests.
Promo code: up to 50% off
Enter your code at checkout. The price updates to reflect the current promotion.
Spending in your history
The model, tokens and amount are recorded for each request.

Choose a subscription · View model prices

Connect the API to a product you sell.

Use Ailoot in SaaS, apps and bots under its official service offer and licence agreement. Request a reseller licence for resale.

Commercial application
Add text, image, video and audio generation to paid features in your service.
Reseller licence
Send a description of your project and how you provide access. Request written terms for use and resale.
Documents on the website
The service offer, licence agreement and data processing policy are available before you connect.

Request a reseller licence · Service offer and licence agreement