CoolFace
Modelpublic

NAMAA-Space/Cohere-Speech-Tashkeel-2B

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
28likes1.4kdownloads
Model Card

<div align="center">

๐Ÿ•Œ Cohere-ar-tashkeel

Arabic Speech โ†’ Fully-Diacritized Text &nbsp;ยท&nbsp; ุงู„ุชูŽู‘ุดู’ูƒููŠู„ ู…ูู†ูŽ ุงู„ุตูŽู‘ูˆู’ุช

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/>

![Built on Cohere ASR](https://huggingface.co/CohereLabs/cohere-transcribe-arabic-07-2026) ![Task](#) ![Language](#) ![License](https://www.apache.org/licenses/LICENSE-2.0)

<br/>

๐Ÿ“Š 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%

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

MetricScoreWhat it measures
Diacritic accuracy95.30%Correct แธฅaraka on correctly-recognized letters โ€” the purest tashkeel-quality signal.
DER โ€” with case-endings6.62%Diacritic Error Rate over all letters, including word-final iสฟrฤb.
DER โ€” excluding case-endings5.67%DER on word-internal diacritics only.
WER โ€” undiacritized10.13%Letter-level speech-recognition accuracy.
WER โ€” fully diacritized24.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:

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

python
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
ArchitectureConformer encoder + Transformer decoder (attention encoderโ€“decoder)
TaskArabic speech โ†’ fully-diacritized text
Input16 kHz mono audio
OutputDiacritized Arabic text (with punctuation)
Precisionbfloat16
LicenseApache 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.

bibtex
@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}
}