audarai/Audar-ASR-V1-Turbo
<div align="center">
Audar-ASR-V1-Turbo · GGUF
Audar's Arabic-first speech-recognition model — leaderboard-grade, dialect-aware.
From Arabic to the world.

<p><a href="#-what-it-is"><b>🧭 Overview</b></a> · <a href="#-benchmarks"><b>📊 Benchmarks</b></a> · <a href="#-gguf-inference-llamacpp"><b>💻 GGUF Deploy</b></a> · <a href="#-transformers-full-precision-safetensors"><b>🤗 Transformers</b></a> · <a href="#-real-time-streaming"><b>🎙️ Streaming</b></a> · <a href="#-vllm-inference-gpu-serving"><b>⚡ vLLM</b></a> · <a href="https://github.com/AudarAI/Audar-ASR-V1/blob/main/report/Audar-ASR-V1-Technical-Report.pdf"><b>📄 Tech Report</b></a> · <a href="https://github.com/AudarAI/Audar-ASR-V1"><b>🐙 GitHub</b></a> · <a href="https://www.audarai.com"><b>☁️ Audar API</b></a> · <a href="https://www.audarai.com/license/audarai-community-license-v1.0/"><b>📜 License</b></a></p>
</div>
🧭 What it is
Audar-ASR-V1-Turbo is an Arabic-first generative speech-recognition model — the accuracy tier of the Audar-ASR family. It recasts transcription as audio-conditioned next-token prediction over a unified text vocabulary (a language-model decoder rather than a CTC or transducer objective), and is built on a permissively-licensed open-weight audio-LLM foundation and adapted in-house — the contribution is the adaptation (the data curriculum and the alignment rubric), not the foundation:
- 🧱 Large-scale bilingual pretraining — 300,000+ hours of labeled audio, primarily Arabic and English, spanning MSA, Gulf, Egyptian, Levantine and Maghrebi speech, code-switching, and diverse acoustic channels.
- 🎯 Dialect-targeted fine-tuning — hardness sampling and multi-task conditioning focused on proper nouns, code-switching, and dialect-faithful orthography.
- 🧠 KTO preference alignment — Kahneman-Tversky Optimization on accented dialectal Arabic, with unpaired binary-desirability labels from trained native annotators across the Gulf, Levantine, Egyptian, and Maghrebi dialects, along five axes: verbatim accuracy, diacritic correctness, code-switch handling, named-entity preservation, and output formatting.
The result is state-of-the-art dialectal Arabic ASR — the lowest average WER and CER of any evaluated system on the Open Universal Arabic ASR Leaderboard. It transcribes MSA and every major Arabic dialect, code-switched Arabic–English, and English, across 30 languages in total.
Built on a permissively-licensed open-weight audio-LLM foundation; the adaptation, data, and alignment are Audar's. Full method and results: Audar-ASR-V1 Technical Report.
Model summary
<table> <tbody> <tr><td width="200"><b>Model</b></td><td>Audar-ASR-V1-Turbo — Arabic-first generative ASR (accuracy tier)</td></tr> <tr><td><b>Task</b></td><td>Automatic speech recognition (audio → text)</td></tr> <tr><td><b>Approach</b></td><td>Generative ASR — audio encoder + language-model decoder (audio-conditioned next-token prediction)</td></tr> <tr><td><b>Training</b></td><td>built on an open-weight audio-LLM foundation; adapted via a 4-stage curriculum — 300k+ hrs bilingual pretraining → multi-task fine-tuning → dialect PEFT → KTO alignment</td></tr> <tr><td><b>Decoder parameters</b></td><td>2,031,739,904 (2.03B)</td></tr> <tr><td><b>Audio encoder parameters</b></td><td>317,477,504 (0.32B)</td></tr> <tr><td><b>Total parameters</b></td><td>2,349,217,408 (2.35B, bf16)</td></tr> <tr><td><b>Audio input</b></td><td>16 kHz mono; 30 s context (longer audio is chunked/streamed)</td></tr> <tr><td><b>Languages</b></td><td>Arabic (MSA + Gulf/Egyptian/Levantine/Maghrebi dialects) + English + 28 more</td></tr> <tr><td><b>Runtime</b></td><td>GGUF / llama.cpp — CPU · GPU · edge</td></tr> <tr><td><b>License</b></td><td>AudarAI Community License v1.0</td></tr> </tbody> </table>
📊 Benchmarks
Arabic dialectal ASR is hard — heavily dialectal, conversational, code-switched speech is the frontier for every system. On the Open Universal Arabic ASR Leaderboard, Audar-ASR-V1-Turbo ranks #1 of 37 systems with the lowest average WER (23.2 %) and the lowest average CER (9.2 %) of any model evaluated — and it is the single best system on SADA, MASC-clean, MGB-2 and Casablanca.
Open Universal Arabic ASR Leaderboard — full standings
Per-dataset WER % across all six leaderboard test sets, plus the two composite averages. Lower is better; Avg WER is the ranking metric. Audar rows show the leaderboard maintainers' independent reproduction (Aug 2026) under the leaderboard's current normalization; other rows are as previously published by the leaderboard and may shift slightly when the full board is recomputed under the updated normalization. Ours in bold.**
Bold = best in column. The 37th system, our sibling edge model **Audar-ASR-V1-Flash** (0.78B), enters at 32.04 avg WER — see its card for the full row. Audar-ASR-V1-Turbo owns both composite averages and leads on SADA, MASC-clean, MGB-2 and Casablanca; the recent Cohere and OmniASR systems are the closest competitors, each strongest on a subset of the conversational and clean-read sets. Casablanca (Moroccan Darija) is the hardest set for every system.
Emirati Arabic
On Emirati, the real recognition error is ≈ 7.3 % — near-parity with spontaneous English — while the residual up to 19.4 % WER is largely orthographic convention (near-miss spelling of the same word, e.g. انتو↔انتوا, and Latin-vs-Arabic rendering of English loanwords), not misrecognition.
🏁 Benchmark-parity inference (qwen-asr) — recommended
Our leaderboard numbers were produced with the `qwen-asr` package, which implements this model's I/O protocol natively — and were independently reproduced by the leaderboard maintainers with this exact code:
# pip install qwen-asr torch
import torch
from qwen_asr import Qwen3ASRModel
model = Qwen3ASRModel.from_pretrained(
"audarai/Audar-ASR-V1-Turbo",
dtype=torch.bfloat16, device_map="cuda:0",
max_inference_batch_size=16, max_new_tokens=256,
)
results = model.transcribe(audio=["clip.wav"], language=["Arabic"])
print(results[0].text)Protocol handling is mandatory, not optional:
language="Arabic"makes the package prefilllanguage Arabic<asr_text>into the prompt, so the model never free-runs language identification.- The model's no-speech verdict (
language None<asr_text>) is mapped to an empty transcript; without this, non-speech audio (music, silence) can produce repetition loops. max_new_tokens=256and bf16 are the exact decode settings behind our published numbers.
If you use raw transformers (below), you must strip the language <Lang><asr_text> output prefix yourself and expect degraded scores on non-speech-heavy data.
💻 GGUF inference (llama.cpp)
Turbo runs on llama.cpp via the multimodal (mtmd) path — a quantized decoder GGUF plus a BF16 audio projector (mmproj). Build a recent llama.cpp (with Qwen3-ASR support), then:
./llama-mtmd-cli \
-m Audar-ASR-V1-Turbo-Q8_0.gguf \
--mmproj mmproj-Audar-ASR-V1-Turbo.gguf \
--audio clip.wav \
-sys "فرّغ الكلام العربي التالي." \
--temp 0⚠️ The audio projector (`mmproj`) must stay BF16 (its ClippableLinear is numerically sensitive). The decoder quantizes normally.Prefer a managed endpoint? The Audar-ASR family is also available via the **Audar API/SDK** — streaming, speaker-attributed transcription, and diarization, production-hosted.
GGUF variants
🤗 Transformers (full-precision safetensors)
The full-precision bf16 weights are published at the repo root — the reference checkpoint the GGUF and W4A16 builds are derived from (2,349,217,408 params, safetensors). Standard 🤗 Transformers, loaded with trust_remote_code=True (the repo ships the self-contained Qwen3-ASR code).
# pip install "transformers==4.57.6" torch librosa
import torch, librosa
from transformers import AutoProcessor, AutoModelForCausalLM
repo = "audarai/Audar-ASR-V1-Turbo"
proc = AutoProcessor.from_pretrained(repo, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
repo, trust_remote_code=True,
dtype=torch.bfloat16, device_map="cuda:0",
).eval()
SYSTEM = "فرّغ الكلام العربي التالي." # "Transcribe the following Arabic speech."
audio, _ = librosa.load("clip.wav", sr=16000, mono=True)
conv = [{"role": "system", "content": SYSTEM},
{"role": "user", "content": [{"type": "audio"}]}] # audio placeholder (a list, not "<audio>")
text = proc.apply_chat_template(conv, tokenize=False, add_generation_prompt=True)
inputs = proc(text=text, audio=audio, sampling_rate=16000, return_tensors="pt").to(model.device)
inputs["input_features"] = inputs["input_features"].to(model.dtype) # features are fp32 -> cast to bf16
out = model.generate(**inputs, max_new_tokens=440, do_sample=False)
print(proc.batch_decode(out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)[0].strip())The self-contained modeling code targets `transformers==4.57.6` (the version this checkpoint was built and validated with). For version-independent, high-throughput serving, prefer vLLM — it implements Qwen3-ASR natively (no custom code); see below.
⚡ vLLM inference (GPU serving)
Turbo also runs on [vLLM](https://github.com/vllm-project/vllm) for high-throughput GPU serving with an OpenAI-compatible API. vLLM implements the Qwen3-ASR architecture natively (Qwen3ASRForConditionalGeneration + Qwen3ASRRealtimeGeneration) — no custom serving code: point vLLM at a checkpoint and it exposes /v1/chat/completions, /v1/audio/transcriptions, and a realtime /v1/realtime WebSocket.
vLLM serves quantized `compressed-tensors` checkpoints (not the GGUF files — those are for llama.cpp). A vLLM-ready 4-bit (W4A16) build is provided in the `vllm-w4a16/` folder: | Build | Folder | Size | Decoder | Audio encoder /lm_head/ embeddings | Accuracy | |---|---|---:|---|---|---| | W4A16 |vllm-w4a16| ~2.6 GB | INT4 (group-128) | BF16 (kept) | ~+1 pp CER vs BF16 | Only the language-model decoder is quantized; the audio encoder + projector stay BF16 (the projector'sClippableLinearis numerically sensitive — the same rule as the GGUFmmproj), as dolm_headand the token embeddings. An FP8 build (lossless vs BF16, ~3.3 GB) can be produced with the same recipe — see the note at the end.
For full-precision GPU serving, point vLLM at the repo (the full bf16 root weights) instead of the 4-bit build — same native Qwen3-ASR support, no quantization.
1. Install (audio support required)
vLLM needs the audio extras (PyAV + librosa + soundfile) to decode audio; the stock image does not ship them:
FROM vllm/vllm-openai:v0.24.0
RUN pip install --no-cache-dir av librosa soundfiledocker build -t vllm-audio:0.24.0 .(Or in a plain environment: pip install "vllm>=0.24" av librosa soundfile.)
2. Get the weights & serve
# download just the vLLM build
hf download audarai/Audar-ASR-V1-Turbo --include "vllm-w4a16/*" --local-dir ./turbo
docker run -d --name audar-asr --gpus '"device=0"' \
-v $PWD/turbo/vllm-w4a16:/model:ro -p 8000:8000 \
vllm-audio:0.24.0 \
--model /model --served-model-name audar-asr-v1-turbo \
--trust-remote-code --max-model-len 8192 --gpu-memory-utilization 0.4vLLM auto-detects the compressed-tensors quantization (Marlin INT4 kernel). Weights + KV cache fit on any ≥12 GB GPU.
3. Transcribe
Turbo is prompt-steerable: the system message sets the task/language. For Arabic use فرّغ الكلام العربي التالي.; steer other languages with the equivalent instruction. Send 16 kHz mono audio as base64 input_audio and decode greedily (temperature: 0).
import base64, requests
audio = base64.b64encode(open("clip.wav", "rb").read()).decode() # 16 kHz mono wav
r = requests.post("http://localhost:8000/v1/chat/completions", json={
"model": "audar-asr-v1-turbo",
"temperature": 0,
"max_tokens": 320,
"messages": [
{"role": "system", "content": "فرّغ الكلام العربي التالي."},
{"role": "user", "content": [
{"type": "input_audio", "input_audio": {"data": audio, "format": "wav"}}
]},
],
})
print(r.json()["choices"][0]["message"]["content"])The OpenAI-style POST /v1/audio/transcriptions (multipart file upload) endpoint is also available for Whisper-style clients.
4. Accuracy (FLEURS Arabic, greedy)
Character Error Rate vs the BF16 source — CER is the stable cross-precision metric for Arabic, where minor و-segmentation differences inflate WER without changing the characters:
Leaderboard-grade full-test-set numbers are in the Benchmarks section above; 4-bit quantization keeps them within ~1 pp CER (FP8 keeps them exactly).
Notes
- Realtime streaming: vLLM also registers
Qwen3ASRRealtimeGeneration, exposing an OpenAI-Realtime-compatible/v1/realtimeWebSocket; pair it with VAD/endpointing for stable incremental output. - Long audio: the audio encoder is a 30 s window; chunk longer inputs client-side.
- Producing other precisions (needs the BF16 source weights): quantize the decoder Linears only via `llm-compressor`
model_free_ptq, ignoring the audio tower,lm_head, and embeddings —scheme="W4A16"(4-bit) or"FP8_DYNAMIC"(lossless),ignore=["re:.*lm_head.*","re:.*embed_tokens.*","re:.*audio_tower.*"].
🎙️ Real-time streaming
Audar-ASR streams via LocalAgreement-2: as audio arrives the trailing window is re-decoded each hop and a word is committed only once two consecutive decodes agree on it — giving stable, low-latency incremental output over the GGUF runtime. Audar's production realtime engine serves the same policy over an OpenAI-Realtime-compatible WebSocket with model-based endpointing and ≥64 concurrent streams on a single A100-80GB.
🌍 Languages, dialects & tasks
- Primary: Arabic — MSA and dialectal (Gulf/Emirati, Egyptian, Levantine, Maghrebi), plus code-switched Arabic–English; emits dialect-faithful orthography from audio alone.
- Also: English + 28 additional languages.
- Task: transcription (audio → UTF-8 text), prompt-steerable for language and formatting.
Intended use & limitations
Intended use. Broadcast/media transcription, meeting & contact-center intelligence, voice agents, captioning, and accessibility — cloud or on-prem.
Limitations.
- Maghrebi / Moroccan Darija (Casablanca) remains the hardest condition (~63 % WER) for all systems.
- Heavily code-switched telephony and low-SNR audio degrade accuracy relative to clean MSA.
- Long-form audio can drift on very long recordings.
- Not evaluated for, and must not be used for, covert speaker identification.
📜 License
Released under the AudarAI Community License v1.0 — research and limited commercial use for qualifying Community Entities; enterprise / large-scale / MaaS use requires an AudarAI Enterprise License. See audarai.com/license/audarai-community-license-v1.0.
Citation
@misc{audar-asr-turbo-2026,
title = {Audar-ASR-V1: A Multilingual, Arabic-First Generative Speech Recognition Foundation Model},
author = {AudarAI},
year = {2026},
note = {Audar-ASR-V1-Turbo},
url = {https://github.com/AudarAI/Audar-ASR-V1/blob/main/report/Audar-ASR-V1-Technical-Report.pdf}
}About AudarAI
<div align="center">
Leading Arabic-First Multilingual Audio Intelligence
AudarAI starts with Arabic — and expands to the world.
</div>
We are building advanced multilingual audio intelligence that helps individuals, enterprises, and governments communicate across languages, cultures, and borders. By combining Arabic-first speech technology with global multilingual AI, AudarAI transforms voice into understanding, interaction, and connection.
Our work spans speech recognition, speech understanding, voice-enabled digital assistants, human-computer interaction, and intelligent audio systems designed for real-world impact. From empowering people to access technology in their native language to helping organizations communicate globally, AudarAI is shaping a future where every voice can be heard, understood, and connected.
Arabic-first. Multilingual by design. Human-centered at heart.
<div align="center">
[🌐 www.audarai.com](https://www.audarai.com) · 🤗 Hugging Face · GitHub · contact@audarai.com
© 2026 AUDARAI PTE. LTD. · Licensed under the AudarAI Community License v1.0
</div>
