NAMAA-Space/Cohere-Speech-Tashkeel-2B
<div align="center">
๐ 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.
<br/>
   
<br/>
๐ Performance at a glance
<sub>Diacritic accuracy = correct แธฅaraka placement on letters the model recognized correctly.</sub>
</div>
โจ 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`](https://huggingface.co/CohereLabs/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.
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:
<div align="right" dir="rtl">
</div>
๐ 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
โ ๏ธ 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}
}