Ported from upstream commit
da5b424
,
pinned 2026-06-05.
Validated against the Transformers reference at transcribe.cpp commit
dac22fa
on 2026-06-05.
Offline audio-LLM speech-to-text and speech translation. A Whisper-large-v3
bidirectional audio encoder feeds a 4-frame-group projector (375 audio tokens
per 30 s chunk) into a Mistral-Small-24B causal LM (40 layers, GQA 32/8, NEOX
RoPE, SwiGLU) via audio-token injection. Takes a 16 kHz mono WAV and produces a
transcript via greedy decoding. The larger sibling of Voxtral Mini 3B — same
encoder, projector, frontend, and tokenizer, with a scaled-up decoder.
WER on the full LibriSpeech test-clean split (2,620 utterances), batch size 8, timestamps none. Figures without a commit were published before provenance was recorded.
Greedy decoding scored with the Whisper English text normalizer on an NVIDIA A100 80
GB. Same-machine HuggingFace transformers reference
(VoxtralForConditionalGeneration, BF16, greedy): 1.57%; the BF16 GGUF matches at
1.56%. Validation for this variant is end-to-end by WER — the family's tensor-level
numerical parity is established by the Voxtral Mini 3B sibling (identical
architecture).
Inherited from the base model:
Apache-2.0
. See the
upstream model card
for full terms.
Original Model Card
The section below is reproduced from
mistralai/Voxtral-Small-24B-2507
at commit
da5b424
for offline reference. The upstream card is the
authoritative source.
Voxtral Small 1.0 (24B) - 2507
Voxtral Small is an enhancement of
Mistral Small 3
, incorporating state-of-the-art audio input capabilities while retaining best-in-class text performance. It excels at speech transcription, translation and audio understanding.
Voxtral builds upon Mistral Small 3 with powerful audio understanding capabilities.
Dedicated transcription mode
: Voxtral can operate in a pure speech transcription mode to maximize performance. By default, Voxtral automatically predicts the source audio language and transcribes the text accordingly
Long-form context
: With a 32k token context length, Voxtral handles audios up to 30 minutes for transcription, or 40 minutes for understanding
Built-in Q&A and summarization
: Supports asking questions directly through audio. Analyze audio and generate structured summaries without the need for separate ASR and language models
Natively multilingual
: Automatic language detection and state-of-the-art performance in the world’s most widely used languages (English, Spanish, French, Portuguese, Hindi, German, Dutch, Italian)
Function-calling straight from voice
: Enables direct triggering of backend functions, workflows, or API calls based on spoken user intents
Highly capable at text
: Retains the text understanding capabilities of its language model backbone, Mistral Small 3.1
Benchmark Results
Audio
Average word error rate (WER) over the FLEURS, Mozilla Common Voice and Multilingual LibriSpeech benchmarks:
Text
Usage
The model can be used with the following frameworks;
Note:
Running Voxtral-Small-24B-2507 on GPU requires ~55 GB of GPU RAM in bf16 or fp16.
To ping the client you can use a simple Python snippet. See the following examples.
Audio Instruct
Leverage the audio capabilities of Voxtral-Small-24B-2507 to chat.
Make sure that your client has
mistral-common
with audio installed:
pip install --upgrade mistral_common\[audio\]
Python snippet
from mistral_common.protocol.instruct.messages import TextChunk, AudioChunk, UserMessage, AssistantMessage, RawAudio
from mistral_common.audio import Audio
from huggingface_hub import hf_hub_download
from openai import OpenAI
# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://<your-server-host>:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
obama_file = hf_hub_download("patrickvonplaten/audio_samples", "obama.mp3", repo_type="dataset")
bcn_file = hf_hub_download("patrickvonplaten/audio_samples", "bcn_weather.mp3", repo_type="dataset")
deffile_to_chunk(file: str) -> AudioChunk:
audio = Audio.from_file(file, strict=False)
return AudioChunk.from_audio(audio)
text_chunk = TextChunk(text="Which speaker is more inspiring? Why? How are they different from each other? Answer in French.")
user_msg = UserMessage(content=[file_to_chunk(obama_file), file_to_chunk(bcn_file), text_chunk]).to_openai()
print(30 * "=" + "USER 1" + 30 * "=")
print(text_chunk.text)
print("\n\n")
response = client.chat.completions.create(
model=model,
messages=[user_msg],
temperature=0.2,
top_p=0.95,
)
content = response.choices[0].message.content
print(30 * "=" + "BOT 1" + 30 * "=")
print(content)
print("\n\n")
# The model could give the following answer:# ```L'orateur le plus inspirant est le président.# Il est plus inspirant parce qu'il parle de ses expériences personnelles# et de son optimisme pour l'avenir du pays.# Il est différent de l'autre orateur car il ne parle pas de la météo,# mais plutôt de ses interactions avec les gens et de son rôle en tant que président.```
messages = [
user_msg,
AssistantMessage(content=content).to_openai(),
UserMessage(content="Ok, now please summarize the content of the first audio.").to_openai()
]
print(30 * "=" + "USER 2" + 30 * "=")
print(messages[-1]["content"])
print("\n\n")
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0.2,
top_p=0.95,
)
content = response.choices[0].message.content
print(30 * "=" + "BOT 2" + 30 * "=")
print(content)
Transcription
Voxtral-Small-24B-2507 has powerful transcription capabilities!
Make sure that your client has
mistral-common
with audio installed:
pip install --upgrade mistral_common\[audio\]
Python snippet
from mistral_common.protocol.transcription.request import TranscriptionRequest
from mistral_common.protocol.instruct.messages import RawAudio
from mistral_common.audio import Audio
from huggingface_hub import hf_hub_download
from openai import OpenAI
# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://<your-server-host>:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
obama_file = hf_hub_download("patrickvonplaten/audio_samples", "obama.mp3", repo_type="dataset")
audio = Audio.from_file(obama_file, strict=False)
audio = RawAudio.from_audio(audio)
req = TranscriptionRequest(model=model, audio=audio, language="en", temperature=0.0).to_openai(exclude=("top_p", "seed"))
response = client.audio.transcriptions.create(**req)
print(response)
Function Calling
Voxtral has some experimental function calling support. You can try as shown below.
Make sure that your client has
mistral-common
with audio installed:
pip install --upgrade mistral_common\[audio\]
Python snippet
from mistral_common.protocol.instruct.messages import AudioChunk, UserMessage, TextChunk
from mistral_common.protocol.transcription.request import TranscriptionRequest
from mistral_common.protocol.instruct.tool_calls import Function, Tool
from mistral_common.audio import Audio
from huggingface_hub import hf_hub_download
from openai import OpenAI
# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://<your-server-host>:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
tool = Tool(
function=Function(
name="get_current_weather",
description="Get the current weather",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The temperature unit to use. Infer this from the user's location.",
},
},
"required": ["location", "format"],
},
)
)
tools = [tool.to_openai()]
weather_like = hf_hub_download("patrickvonplaten/audio_samples", "fn_calling.wav", repo_type="dataset")
deffile_to_chunk(file: str) -> AudioChunk:
audio = Audio.from_file(file, strict=False)
return AudioChunk.from_audio(audio)
audio_chunk = file_to_chunk(weather_like)
print(30 * "=" + "Transcription" + 30 * "=")
req = TranscriptionRequest(model=model, audio=audio_chunk.input_audio, language="en", temperature=0.0).to_openai(exclude=("top_p", "seed"))
response = client.audio.transcriptions.create(**req)
print(response.text) # How is the weather in Madrid at the moment?print("\n")
print(30 * "=" + "Function calling" + 30 * "=")
audio_chunk = file_to_chunk(weather_like)
user_msg = UserMessage(content=[audio_chunk]).to_openai()
response = client.chat.completions.create(
model=model,
messages=[user_msg],
temperature=0.2,
top_p=0.95,
tools=[tool.to_openai()]
)
print(30 * "=" + "BOT 1" + 30 * "=")
print(response.choices[0].message.tool_calls)
print("\n\n")
Transformers 🤗
Starting with
transformers >= 4.54.0
and above, you can run Voxtral natively!
Install Transformers:
pip install -U transformers
Make sure to have
mistral-common >= 1.8.1
installed with audio dependencies:
from transformers import VoxtralForConditionalGeneration, AutoProcessor
import torch
device = "cuda"
repo_id = "mistralai/Voxtral-Small-24B-2507"
processor = AutoProcessor.from_pretrained(repo_id)
model = VoxtralForConditionalGeneration.from_pretrained(repo_id, torch_dtype=torch.bfloat16, device_map=device)
conversation = [
{
"role": "user",
"content": [
{
"type": "audio",
"path": "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/obama.mp3",
},
{
"type": "audio",
"path": "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3",
},
{"type": "text", "text": "Describe briefly what you can hear."},
],
},
{
"role": "assistant",
"content": "The audio begins with the speaker delivering a farewell address in Chicago, reflecting on his eight years as president and expressing gratitude to the American people. The audio then transitions to a weather report, stating that it was 35 degrees in Barcelona the previous day, but the temperature would drop to minus 20 degrees the following day.",
},
{
"role": "user",
"content": [
{
"type": "audio",
"path": "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/winning_call.mp3",
},
{"type": "text", "text": "Ok, now compare this new audio with the previous one."},
],
},
]
inputs = processor.apply_chat_template(conversation)
inputs = inputs.to(device, dtype=torch.bfloat16)
outputs = model.generate(**inputs, max_new_tokens=500)
decoded_outputs = processor.batch_decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)
print("\nGenerated response:")
print("=" * 80)
print(decoded_outputs[0])
print("=" * 80)
Voxtral-Small-24B-2507-gguf huggingface.co is an AI model on huggingface.co that provides Voxtral-Small-24B-2507-gguf's model effect (), which can be used instantly with this handy-computer Voxtral-Small-24B-2507-gguf model. huggingface.co supports a free trial of the Voxtral-Small-24B-2507-gguf model, and also provides paid use of the Voxtral-Small-24B-2507-gguf. Support call Voxtral-Small-24B-2507-gguf model through api, including Node.js, Python, http.
Voxtral-Small-24B-2507-gguf huggingface.co is an online trial and call api platform, which integrates Voxtral-Small-24B-2507-gguf's modeling effects, including api services, and provides a free online trial of Voxtral-Small-24B-2507-gguf, you can try Voxtral-Small-24B-2507-gguf online for free by clicking the link below.
handy-computer Voxtral-Small-24B-2507-gguf online free url in huggingface.co:
Voxtral-Small-24B-2507-gguf is an open source model from GitHub that offers a free installation service, and any user can find Voxtral-Small-24B-2507-gguf on GitHub to install. At the same time, huggingface.co provides the effect of Voxtral-Small-24B-2507-gguf install, users can directly use Voxtral-Small-24B-2507-gguf installed effect in huggingface.co for debugging and trial. It also supports api for free installation.
Voxtral-Small-24B-2507-gguf install url in huggingface.co: