Instructions to use MBZUAI/speecht5_tts_clartts_ar with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MBZUAI/speecht5_tts_clartts_ar with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-to-speech", model="MBZUAI/speecht5_tts_clartts_ar")# Load model directly from transformers import AutoProcessor, AutoModelForTextToSpectrogram processor = AutoProcessor.from_pretrained("MBZUAI/speecht5_tts_clartts_ar") model = AutoModelForTextToSpectrogram.from_pretrained("MBZUAI/speecht5_tts_clartts_ar", device_map="auto") - Notebooks
- Google Colab
- Kaggle
ArTST does not speak numerals: 0/30 in digits, and Arabic-Indic digits are absent from the tokenizer vocabulary
Thanks for releasing this model — the notes below are a limitation report from
an external benchmark, not a defect claim. ArTST is fine-tuned on ClArTTS, a Classical
Arabic corpus, and the model card nowhere claims numeral coverage. The reason it seemed
worth writing up is that the failure is total and silent: a pipeline containing a
date or a price ships audio with the number missing and nothing raises an error.
Measured on a 45-utterance set (15 sentences x 3 numeral forms), speecht5_tts_clartts_ar
recovers 0 of 30 numerals written in digits — 0/15 Western (2026), 0/15 Arabic-Indic
(٢٠٢٦). Spelled out in Arabic words the same numbers score 4/15.
The two digit failures look identical in the output and are not the same bug.
1. Arabic-Indic digits are not in the vocabulary
The tokenizer is character-level SentencePiece with 87 tokens. All ten Western digits are
present. None of ٠١٢٣٤٥٦٧٨٩ are:
from transformers import SpeechT5Processor
tk = SpeechT5Processor.from_pretrained("MBZUAI/speecht5_tts_clartts_ar").tokenizer
v = tk.get_vocab()
[d for d in "٠١٢٣٤٥٦٧٨٩" if d in v] # -> []
[d for d in "0123456789" if d in v] # -> all ten
Because it is character-level, a run of unknown characters collapses to a single<unk>, so the whole year is gone before synthesis starts:
'في عام ٢٠٢٦ ارتفعت'
-> [..., '▁', '<unk>', '▁', ...]
-> decodes back as 'في عام ارتفعت'
Reproducible in three lines, no audio and no GPU needed.
2. Western digits reach the model and still produce no audio
Western digits tokenise cleanly (15/15) and reach the decoder. They are still not spoken.
Measured without ASR in the loop, by synthesising each sentence twice — as written, and
with the numeral deleted — and comparing durations:
| mean delta (digits present − digits deleted) | |
|---|---|
| ArTST | +0.19 s |
Apple Majed, same sentences, as a control |
+2.44 s |
ArTST's own spelled-out renderings of the same 15 numbers run +1.41 s over its
Western-digit renderings, so the digit run yields roughly an eighth of the audio the
same model produces when it actually says the figure. Transcripts show it directly —
the sentence survives with a number-shaped hole in it:
| written | heard back |
|---|---|
شارك أكثر من 1500 موظف في ورش العمل |
شارك أكثر موظف في ورش العمل |
في عام 2026 ارتفعت نسبة المشاركة |
في عامة ارتفعت نسبة المشاركة |
Re-scoring the same audio with whisper-medium instead of whisper-small moves the
spelled baseline from 4/15 to 6/15 and leaves both digit forms at 0/15 — floored
regardless of listener capacity, which is what you expect when there is nothing in the
audio to hear.
3. The honest baseline
ArTST scores 4/15 (27%) on the spelled form, where every character is in-vocab. So part
of the 0% is general intelligibility on this set, not numerals — the sentences are Modern
Standard Arabic news-register copy and this is a Classical Arabic model being run outside
its domain. The numeral-specific effect is the drop from 27% to 0%, not the whole 0%.
Quoting 0/30 without that qualifier would overstate it.
4. Two practical suggestions
- A one-line vocabulary/preprocessing fix mapping
٠-٩to0-9would convert the
Arabic-Indic failure into the Western-digit failure. It fixes neither, but it stops
the tokenizer silently deleting input, which is the part that hurts most in
production. - A line on the model card saying numerals must be spelled out upstream would save
integrators the debugging. Western-digit normalisation alone is not enough here —
unlike other engines, ArTST fails on both digit forms.
Happy to share the full 45-sentence set, the per-utterance transcripts and the duration
control script if useful. Data and method: https://huggingface.co/datasets/syamjithnk/arnum-tts
— Syamjith NK