Instructions to use NAMAA-Space/Cohere-Speech-Tashkeel-2B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use NAMAA-Space/Cohere-Speech-Tashkeel-2B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="NAMAA-Space/Cohere-Speech-Tashkeel-2B")# Load model directly from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq processor = AutoProcessor.from_pretrained("NAMAA-Space/Cohere-Speech-Tashkeel-2B") model = AutoModelForSpeechSeq2Seq.from_pretrained("NAMAA-Space/Cohere-Speech-Tashkeel-2B") - Notebooks
- Google Colab
- Kaggle
🕌 Cohere-ar-tashkeel
Arabic Speech → Fully-Diacritized Text · التَّشْكِيل مِنَ الصَّوْت
Restores every ḥaraka — fatḥa, ḍamma, kasra, sukūn, shadda, tanwīn, and case-endings (iʿrāb) — directly from the audio, in a single pass.
📊 Performance at a glance
| 🎯 Diacritic Accuracy | 📉 DER · with iʿrāb | 📉 DER · no iʿrāb | 🔤 Letter WER |
|---|---|---|---|
| 95.30% | 6.62% | 5.67% | 10.13% |
Diacritic accuracy = correct ḥaraka placement on letters the model recognized correctly.
✨ What it does
Cohere-ar-tashkeel takes spoken Arabic and returns fully-voweled text. Instead of guessing diacritics from an unvoweled skeleton, it infers them from how the words are actually pronounced — so the output reflects the real reading, not a statistical best-guess.
It is built on Cohere Labs' cohere-transcribe-arabic-07-2026 (a ~2B-parameter Arabic/English speech model) and specialized for acoustic diacritization.
🎧 Why diacritize from speech?
Restoring tashkeel from text alone is inherently ambiguous — one consonantal skeleton (رَسْم) maps to many valid voweled readings, and text-only tools must guess which one was intended. Speech removes that ambiguity: the vowels and grammatical endings are audible. This model simply listens and writes them down.
That is exactly why it excels at the hardest part of tashkeel — case-endings / iʿrāb (إِعْرَاب) — the word-final marks that text-only systems most often get wrong.
📈 Results
Evaluated on a held-out set of 260 natural Arabic speech clips.
| Metric | Score | What it measures |
|---|---|---|
| Diacritic accuracy | 95.30% | Correct ḥaraka on correctly-recognized letters — the purest tashkeel-quality signal. |
| DER — with case-endings | 6.62% | Diacritic Error Rate over all letters, including word-final iʿrāb. |
| DER — excluding case-endings | 5.67% | DER on word-internal diacritics only. |
| WER — undiacritized | 10.13% | Letter-level speech-recognition accuracy. |
| WER — fully diacritized | 24.35% | Strict: any single wrong ḥaraka marks the whole word wrong. |
How to read this: when the model hears a letter correctly, it places the right diacritic on it 95.3% of the time, and only ~1 diacritic in 15 is wrong even including the tricky grammatical endings. Diacritized WER is strict by design and reads high — DER and diacritic accuracy are the meaningful diacritization metrics.
📝 Example outputs
Fully-diacritized transcriptions produced by the model:
| # | النَّصُّ المُشَكَّل |
|---|---|
| ١ | السَّيِّدْ أُوكِي أُورَامَا رَئِيسُ مَجْلِسِ إِدَارَةِ بَنْكِ التَّنْمِيَةِ الْإِفْرِيقِيّ |
| ٢ | وَالْبُذُورْ لِضَمَانِ نَجَاحِ الْمُوسِمِ الزِّرَاعِيِّ الْقَادِمْ |
| ٣ | نِصْفُ الرِّبْحِ لِرَبِّ الْمَالِ خَاصَّةً ، لِأَنَّ الْمُضَارَبَةَ فِيهِ فَاسِدَةٌ |
🚀 Usage
The model is fully self-contained — it loads and runs just like the Cohere ASR base model (the fine-tuned weights are already merged in).
import torch, soundfile as sf, librosa
from transformers import AutoProcessor, CohereAsrForConditionalGeneration
repo = "NAMAA-Space/Cohere-Speech-Tashkeel-2B"
proc = AutoProcessor.from_pretrained(repo)
model = CohereAsrForConditionalGeneration.from_pretrained(
repo, dtype=torch.bfloat16, device_map="auto"
).eval()
# load audio as 16 kHz mono
wav, sr = sf.read("your_audio.wav", dtype="float32")
if wav.ndim > 1:
wav = wav.mean(1)
if sr != 16000:
wav = librosa.resample(wav, orig_sr=sr, target_sr=16000)
feats = proc.feature_extractor(
[wav], sampling_rate=16000, return_tensors="pt",
padding="longest", return_attention_mask=True,
)
audio_chunk_index = feats.pop("audio_chunk_index")
# request the diacritized Arabic decoding
prompt = proc.get_decoder_prompt_ids(language="ar", punctuation=True)
decoder_input_ids = torch.tensor([prompt], dtype=torch.long, device=model.device)
with torch.no_grad():
out = model.generate(
input_features=feats["input_features"].to(model.device, torch.bfloat16),
attention_mask=feats["attention_mask"].to(model.device),
decoder_input_ids=decoder_input_ids,
max_new_tokens=448,
)
text = proc.decode(out, skip_special_tokens=True,
audio_chunk_index=audio_chunk_index, language="ar")
print(text)
Requirements: transformers, torch, soundfile, librosa, and a CUDA GPU (bf16).
🧩 Model details
| Base model | CohereLabs/cohere-transcribe-arabic-07-2026 |
| Parameters | ~2B |
| Architecture | Conformer encoder + Transformer decoder (attention encoder–decoder) |
| Task | Arabic speech → fully-diacritized text |
| Input | 16 kHz mono audio |
| Output | Diacritized Arabic text (with punctuation) |
| Precision | bfloat16 |
| License | Apache 2.0 |
⚠️ Intended use & limitations
- Intended use: fully-diacritized Arabic transcripts from audio — captioning, language learning, MSA/liturgical read-speech, TTS front-ends, and linguistic annotation where correct harakāt matter.
- Diacritization is inferred from pronunciation, so on noisy audio or unclear articulation the letters and their diacritics can degrade together — a VAD / noise gate is recommended for noisy input.
- Inherits the base model's constraints: optimized for a single pre-specified language, no timestamps or speaker diarization.
📜 Citation & attribution
Released under Apache 2.0. A fine-tuned derivative of CohereLabs/cohere-transcribe-arabic-07-2026 by Cohere Labs; all original terms apply.
@misc{cohere_ar_tashkeel_2026,
title = {Cohere-ar-tashkeel: Arabic Speech Diacritization},
author = {Omer Nacar},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/NAMAA-Space/Cohere-Speech-Tashkeel-2B}},
note = {Built on CohereLabs/cohere-transcribe-arabic-07-2026}
}
- Downloads last month
- 1,772
Model tree for NAMAA-Space/Cohere-Speech-Tashkeel-2B
Base model
CohereLabs/cohere-transcribe-03-2026Space using NAMAA-Space/Cohere-Speech-Tashkeel-2B 1
Collection including NAMAA-Space/Cohere-Speech-Tashkeel-2B
Evaluation results
- Diacritic accuracy (on recognized letters) on Held-out Arabic speech (260 clips)self-reported95.300
- DER (with case-endings) on Held-out Arabic speech (260 clips)self-reported6.620
- DER (excluding case-endings) on Held-out Arabic speech (260 clips)self-reported5.670
- WER (undiacritized, letter-level) on Held-out Arabic speech (260 clips)self-reported10.130