🕌 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.


Built on Cohere ASR Task Language License


📊 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
Safetensors
Model size
2B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for NAMAA-Space/Cohere-Speech-Tashkeel-2B

Space 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-reported
    95.300
  • DER (with case-endings) on Held-out Arabic speech (260 clips)
    self-reported
    6.620
  • DER (excluding case-endings) on Held-out Arabic speech (260 clips)
    self-reported
    5.670
  • WER (undiacritized, letter-level) on Held-out Arabic speech (260 clips)
    self-reported
    10.130