Instructions to use x-square-robot/X2-ASR-4B-0812 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use x-square-robot/X2-ASR-4B-0812 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="x-square-robot/X2-ASR-4B-0812")# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("x-square-robot/X2-ASR-4B-0812") model = AutoModelForMultimodalLM.from_pretrained("x-square-robot/X2-ASR-4B-0812", device_map="auto") - Notebooks
- Google Colab
- Kaggle
X2-ASR-4B-0812
Real-time bilingual streaming ASR (Chinese / English, including mixed speech).
X2-ASR-4B-0812 is Stage 1 of X2-Turn: a full fine-tune of mistralai/Voxtral-Mini-4B-Realtime-2602 on a large-scale aligned Chinese–English corpus. It keeps the original delayed-stream protocol (one token every 80 ms, configurable lookahead τ) and does not add a turn-taking head.
The dual-head model that jointly predicts ASR and turn state is x-square-robot/X2-Turn-4B-0812. Use that checkpoint for voice-assistant endpointing, barge-in, and the Turn Demo. Use this checkpoint when you only need streaming transcription, or as the backbone to train your own Stage 2.
Model summary
| Model ID | x-square-robot/X2-ASR-4B-0812 |
| Parameters | ~4B |
| Languages | Chinese, English (mixed) |
| Frame rate | 80 ms |
| Output | Streaming ASR only (no turn head) |
| Base model | Voxtral-Mini-4B-Realtime-2602 |
| Sibling (Stage 2) | X2-Turn-4B-0812 |
| Paper | arXiv:2608.10878 |
| Code | X-Square-Robot/X2-Turn |
| License | Apache-2.0 (see LICENSE and NOTICE) |
Do not load this checkpoint with load_mtp_checkpoint() from the X2-Turn package. That loader expects vad_lm_head, which this Stage 1 release does not have.
Quick start
This is a stock VoxtralRealtimeForConditionalGeneration checkpoint. No trust_remote_code is required.
pip install --upgrade transformers "mistral-common[audio]"
from transformers import AutoProcessor, VoxtralRealtimeForConditionalGeneration
from mistral_common.tokens.tokenizers.audio import Audio
model_id = "x-square-robot/X2-ASR-4B-0812"
processor = AutoProcessor.from_pretrained(model_id)
model = VoxtralRealtimeForConditionalGeneration.from_pretrained(
model_id,
dtype="bfloat16",
device_map="auto",
).eval()
audio = Audio.from_file("/path/to/input.wav", strict=False)
audio.resample(processor.feature_extractor.sampling_rate)
inputs = processor(audio.audio_array, return_tensors="pt")
inputs = inputs.to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs)
print(processor.batch_decode(outputs, skip_special_tokens=True)[0])
Default streaming delay is τ = 480 ms (6 × 80 ms), matching the pretrained Voxtral Realtime recipe. The same weights cover τ in 80–2400 ms; the tables below show the accuracy–latency trade-off.
A GPU with at least 16 GB of VRAM is recommended.
Relation to X2-Turn
Training follows the two-stage recipe in the paper:
- Stage 1 (this checkpoint) — streaming ASR adaptation on ~26k hours of Chinese–English speech with frame-level ASR labels. Full fine-tune of the causal audio encoder and the language decoder. τ is sampled per batch between 1 and 30 frames (80–2400 ms).
- Stage 2 —
X2-Turn-4B-0812attaches an independent turn head (initialized as a copy of the ASRlm_head) and jointly fine-tunes ASR + turn state.
Stage 2 is stronger at turn-taking. Stage 1 is stronger at ASR on the same streaming test sets (see below). After Stage 2 joint training, recognition degrades on some sets; that is expected.
Benchmark results
Streaming ASR of this checkpoint at three operating points of the delay τ. Chinese numbers are CER (%); English numbers are WER (%). Avg. is the unweighted mean over the listed sets. A subset of the 480 ms / 2400 ms numbers also appears in Table 3 of the paper, together with Stage 2 (X2-Turn) and chunk-based baselines.
Chinese (CER ↓)
| Test set | τ = 480 ms | τ = 960 ms | τ = 2400 ms |
|---|---|---|---|
| AISHELL-1 Dev | 2.14 | 1.45 | 1.30 |
| AISHELL-1 Test | 2.57 | 1.76 | 1.48 |
| AISHELL-2 Android | 4.70 | 3.77 | 3.42 |
| AISHELL-2 iOS | 4.41 | 3.60 | 3.23 |
| AISHELL-2 Mic | 4.54 | 3.77 | 3.54 |
| AISHELL-3 Test | 3.16 | 2.33 | 2.13 |
| AISHELL-4 Test | 18.72 | 17.26 | 16.42 |
| WenetSpeech Dev | 8.13 | 7.79 | 7.81 |
| WenetSpeech Test-Meeting | 9.25 | 8.26 | 7.68 |
| WenetSpeech Test-Net | 9.50 | 8.70 | 8.40 |
| Avg. | 6.71 | 5.87 | 5.54 |
English (WER ↓)
| Test set | τ = 480 ms | τ = 960 ms | τ = 2400 ms |
|---|---|---|---|
| GigaSpeech | 12.23 | 11.05 | 10.87 |
| LibriSpeech test-clean | 2.40 | 1.65 | 1.54 |
| LibriSpeech test-other | 5.87 | 4.25 | 3.77 |
| TED-LIUM Test | 4.62 | 3.76 | 3.66 |
| VoxPopuli | 9.16 | 6.63 | 6.05 |
| VoxPopuli Accented | 27.93 | 25.88 | 25.12 |
| Avg. | 10.37 | 8.87 | 8.50 |
Larger τ uses more lookahead and generally lowers error, at the cost of additional streaming delay. AISHELL-4 and VoxPopuli Accented remain the hardest sets in each language. For Stage 2 turn-taking accuracy and the comparison against Uni-ASR / Freeze-Omni, see the paper.
Training data
Stage 1 uses public Chinese and English speech corpora totaling about 26k hours (about 14k Chinese / 12k English), with word-level timestamps from forced alignment:
- Chinese: AISHELL-1/2/3/4, AliMeeting, WenetSpeech, KeSpeech
- English: LibriSpeech, GigaSpeech, TED-LIUM, VoxPopuli
English words are tokenized with a leading space ( Hello / world), matching Voxtral’s BPE convention; CJK characters are unchanged.
Architecture
Unchanged from Voxtral-Mini-4B-Realtime-2602:
- Causal audio encoder + projector + language decoder
- Single ASR
lm_head(novad_lm_head) - Delayed-stream tokens:
[STREAMING_PAD](id 32),[STREAMING_WORD](id 33), then text - Runtime metadata:
params.json,tekken.json,processor_config.json,generation_config.json
The canonical model.safetensors is a single BF16 file.
Use cases
Recommended for:
- Low-latency Mandarin, English, and mixed-language streaming ASR
- Reproducing the paper’s Stage 1 ASR numbers
- Initializing a custom Stage 2 / turn-taking fine-tune
Not recommended for:
- Turn-taking, endpointing, backchannel detection, or barge-in — use
X2-Turn-4B-0812 - Safety-critical decisions without human oversight
- Legal transcription as the sole basis for action
Limitations
- Accuracy may degrade under noise, reverberation, overlapping speakers, accents, dialects, code-switching, far-field microphones, or packet loss.
- This checkpoint does not predict turn state. Do not treat ASR completeness as a turn-end signal.
- Real-time latency depends on hardware, serving configuration, and the chosen τ.
Speech may contain personal, biometric, confidential, or copyrighted information. Obtain appropriate consent, minimize collection and retention, and avoid logging raw audio or transcripts by default.
Citation
If you use this model, please cite:
@article{fu2026x2turn,
title = {X2-Turn: Frame-Synchronous Dual-Head Modeling for Joint Streaming ASR and Turn State Prediction},
author = {Kaiqi Fu and Rime Wen and Altman Lin and Shawn Qin and Roy Gan and Hao Wang and Qian Wang},
journal = {arXiv preprint arXiv:2608.10878},
year = {2026},
url = {https://arxiv.org/abs/2608.10878}
}
License
Model weights are released under Apache-2.0. Use is also subject to the Mistral base model terms. See NOTICE for attribution details.
- Downloads last month
- 8
Model tree for x-square-robot/X2-ASR-4B-0812
Base model
mistralai/Ministral-3-3B-Base-2512