On this page
- Why Arabic TTS has to guess the short vowels
- Voice agents hit the ambiguous cases more than audiobooks do
- Why marking every vowel is not the answer either
- The same LLM reply, read four ways
- Research is split between diacritising first and training past the problem
- Where a voice agent should handle tashkeel
- Sources
Why Arabic TTS has to guess the short vowels
Arabic script writes consonants and long vowels, and leaves the short vowels to the reader. The marks that show them are called harakat: fatha for a short a, kasra for i and damma for u. Tashkeel (تشكيل) is the wider set of marks and the act of adding them, which also covers sukun for no vowel, shadda for a doubled consonant and tanween for the -an, -in and -un endings. Everyday Arabic almost never carries any of them.
A fluent reader does not need them, because context settles the word. The spelling علم can be عِلْم (knowledge), عَلَم (flag) or عَلِمَ (he knew), and nobody reading about a football match stops to wonder which. A TTS engine has to make the same choice before it can produce a single sound, and it has no real understanding of the topic to lean on.
The researchers behind SawtArabi, an Arabic TTS benchmark corpus presented at Interspeech 2025, say their results "demonstrate the importance of vowelization" for Arabic speech synthesis (Lodagala and others, 2025). The problem is not a quirk of one engine. It follows from the writing system, so every Arabic TTS model has to deal with it somewhere, and Hebrew, written without its vowel points, has the same problem, as the guide to Hebrew TTS without niqqud shows.
Voice agents hit the ambiguous cases more than audiobooks do
A voice agent speaks short sentences written seconds earlier by a language model. Short sentences carry less context than a paragraph of an audiobook, so the engine has less to go on. The errors cluster in a few places, and most of them are predictable.
Passive verbs are the classic case. In "طلبك شحن أمس" (your order was shipped yesterday), the word شحن can be read as شُحِن (was shipped), شَحَن (he shipped) or شَحْن (shipping). The second person is another: "طلبك" is talabak to a man and talabik to a woman, and the letters do not say which. Names, brand names and rare words complete the list, because the engine has never seen enough of them to know the vowels. The predictable cases are these:
- Passive verbs: شُحِن, دُفِع, أُلغِي (was shipped, paid, cancelled).
- The gender of "you": ـكَ for a man, ـكِ for a woman.
- Names and brands the model rarely saw in training.
- Homographs where context is thin, such as عقد (contract) or عِقْد (necklace) in a one-line reply.
Why marking every vowel is not the answer either
Diacritising a whole reply fixes the guessing but creates a different problem. A fully marked sentence carries i'rab, the system of grammatical case endings on the last letter of words, and a voice that pronounces every ending sounds like formal reading, not like someone on the phone. Spoken Modern Standard Arabic usually drops many of those endings, so a fully diacritised reply can be grammatically correct and still sound wrong for a customer call.
Dialect makes this sharper. Gulf, Egyptian or Levantine Arabic has no fixed spelling, let alone a standard vowelling, and people write it the way it sounds to them, without marks. For a dialect script, write the words as people say them and mark only the odd word that could be misread; the one sentence in ten Arabic varieties shows how much the words themselves change.
The same LLM reply, read four ways
These samples take one reply a model might write after an order lookup and send it to Pāṇini, Sonex Labs' TTS model, four ways. The first has no diacritics, so the voice must choose a reading for شحن and for the ending of طلبك. The second marks only the passive verb. The third rewrites the sentence with تم plus a noun, a construction customer-service Arabic uses constantly, so nothing is left to guess. The fourth is fully diacritised, case endings included, and addressed to a man.
Listen for two things: whether شحن comes out as "was shipped", and how formal the fully marked version sounds next to the others. The rephrased version is the one to aim for, because it removes the ambiguity without asking anyone to add marks at all. You can try your own sentences on the Arabic text-to-speech page.
طلبك شحن أمس، وسيصلك خلال يومين.
طلبك شُحِن أمس، وسيصلك خلال يومين.
تم شحن طلبك أمس، وسيصلك خلال يومين.
طَلَبُكَ شُحِنَ أَمْسِ، وَسَيَصِلُكَ خِلَالَ يَوْمَيْنِ.
Research is split between diacritising first and training past the problem
Two approaches compete. One adds tashkeel to the text before synthesis, with a separate model called a diacritiser. The other trains the TTS model on so much Arabic speech that it learns to supply the vowels itself. Both have evidence behind them, and neither has been tested on live phone calls.
The case for diacritising before synthesis
The author of an Arabic fine-tune of the open F5-TTS model trained it on a mix of diacritised and plain text. He wrote that "large-scale diacritized Arabic datasets are scarce" and suggested running a diacritisation model first when the input is plain (F5-TTS discussion #782, February 2025). Others in the same thread reported output in the wrong language and very poor results, so the advice comes from a working but rough community model.
Dedicated diacritisers have improved. CATT, a character-based transformer published in 2024, reports a 30.83% relative cut in diacritic error rate on the WikiNews test set compared with 11 commercial and open-source systems (Alasmary, Zaafarani and Ghannam, 2024). Against GPT-4-turbo on the authors' own benchmark, the relative cut was 9.36%, and the models and benchmark data are open source. Those are text-accuracy numbers on written Arabic, not measurements of how a phone call sounds.
The GPT-4-turbo comparison answers a common question: can the language model that writes the reply add tashkeel itself? It can, and for short replies it is often good enough, but a dedicated model still made fewer errors. The practical middle path is to ask the model to mark only ambiguous words, then check its marks on a sample of your real replies.
The case for more training data instead
"More Data, Fewer Diacritics" (Musleh, Zhang and Darwish, March 2026) trained voice-cloning TTS on 100, 1,000 and 4,000 hours of Arabic, with and without diacritics (arXiv 2603.01622). Models trained on diacritised text were generally better, but the authors found that larger datasets "compensate for the lack of diacritics to a significant degree". Their direction is a model that needs no diacritiser at all.
Some vendors already sell that approach. Telnyx's Gulf Arabic voices, released in November 2025, list automatic vowel inference for unvowelled text and still accept tashkeel for explicit pronunciation control, and the release note advises testing your own dialect before production (Telnyx release note). Arabic-first vendors also criticise larger rivals here: Munsit, itself an Arabic voice vendor, writes that ElevenLabs has no documented Arabic diacritisation controls (Munsit). That is a competitor's claim, and it has not been tested here.
No published study of tashkeel errors on live voice-agent calls turned up in the research for this guide. Until one exists, treat any vendor's claim to have solved Arabic pronunciation, including Sonex's, as untested until you hear your own prompts.
Where a voice agent should handle tashkeel
In a voice agent, the place to handle tashkeel is between the language model and the TTS engine, and the cheapest fix comes first. Start in the prompt: ask the model to prefer constructions that are unambiguous without marks, such as تم plus a noun instead of a bare passive verb. Then mark only the words that still need it.
The gender of "you" deserves its own rule. If your system knows whether the caller is a man or a woman, pass that to the model and ask it to mark ـكَ or ـكِ, or to phrase the reply so the ending does not matter. If it does not know, phrasing around the ending is safer than guessing.
Add a separate diacritiser only if the remaining errors justify it, and measure what it costs in time. A cascaded voice agent streams its reply to TTS sentence by sentence, so any step that must see a whole sentence before speech starts delays the first sound the caller hears; the comparison of cascaded and speech-to-speech voice agents explains why that pipeline is still the usual design.
Names and brand terms are better handled by a list than by a model. Keep your own table of the words your callers will hear, with the spelling you want spoken, and apply it in your code as a plain text replacement before TTS. It adds almost no delay and fixes the words a model is least likely to know. Numbers, prices and dates need the same treatment, covered in how Arabic TTS reads prices, dates and phone numbers.
Sources
- Lodagala et al., SawtArabi: A Benchmark Corpus for Arabic TTS (Interspeech 2025)Official
- F5-TTS GitHub discussion #782: Arabic fine-tune and diacritics (February 2025)Secondary
- Alasmary, Zaafarani and Ghannam, CATT: Character-based Arabic Tashkeel Transformer (arXiv 2407.03236)Official
- Musleh, Zhang and Darwish, More Data, Fewer Diacritics: Scaling Arabic TTS (arXiv 2603.01622)Official
- Telnyx release note: Arabic TTS with tashkeel support in NaturalHD voices (4 November 2025)Official
- Munsit (an Arabic voice vendor): best Arabic TTS comparisonSecondary
Change log: 24 Oct 2026, First published. Later the same day, rewritten as one continuous guide: tashkeel, harakat, tanween and i'rab defined in the opening sections; the research split into the case for diacritisers and the case for more data, with Telnyx's vowel-inference voices added; takeaways and three FAQs (LLM tashkeel, terms, dialects) folded into the body. Audio samples unchanged




