If you run a business in the Gulf, you probably need an Arabic voice somewhere: an ad, a phone menu, a course, a product video, or a voice agent that answers customers. In 2026 four platforms do most of this work: ElevenLabs, Microsoft Azure AI Speech, Google Cloud Text-to-Speech and OpenAI. They are not interchangeable. They differ on dialects, price, licensing and how much control you get. This guide compares them on what their own documentation and pricing pages say, and includes a tested script that catches the mistakes Arabic voices make most often, before you pay for audio.
The short answer
- Most natural, expressive voice and voice cloning: ElevenLabs.
- A specific Arabic dialect (Emirati, Saudi, Egyptian and more): Microsoft Azure, which offers voices labeled by country.
- Cheapest at volume for Modern Standard Arabic: Google Cloud, with a large free monthly allowance.
- Already building on OpenAI's API: OpenAI's TTS models, with a few built-in voices and simple pricing.
ElevenLabs
ElevenLabs is the tool most creators reach for when the voice has to sound human. Its documentation lists Arabic as supported in its current models, including Eleven v4 (launched on 28 September 2026 with 90+ languages), Multilingual v2 and the low-latency Flash v2.5. Eleven v4 adds control over tone and delivery with plain-language instructions and inline tags, and ElevenLabs says its instant voice clones can now work from about 10 seconds of audio.
What to know before you pay:
- The free plan gives 10,000 credits a month (one character is one credit in the web app), but ElevenLabs states that it "does not include a commercial license", and anything you publish from it must credit ElevenLabs.
- All paid plans include a commercial license. List prices start at about $6 a month (Starter) and $22 a month (Creator); first-month discounts are common, so check the pricing page on the day.
- The documentation lists Arabic but does not detail which dialects or accents each voice handles. Test with your own scripts before you commit.
Microsoft Azure AI Speech
Azure's strength for Arabic is coverage. Its neural voice catalog has a female and a male voice for each of 16 Arabic locales, from the UAE (ar-AE-FatimaNeural, ar-AE-HamdanNeural) and Saudi Arabia (ar-SA-ZariyahNeural, ar-SA-HamedNeural) to Egypt, Kuwait, Qatar, Oman, Morocco and more. If your audience expects a local accent, this is the most direct option.
- The free tier includes 0.5 million characters of neural text-to-speech a month.
- Voices are controlled with SSML (speed, pitch, pauses, pronunciation), which takes more setup than ElevenLabs' web app but gives precise control.
- It is a developer platform: you need an Azure account and some technical setup.
Google Cloud Text-to-Speech
Google offers Arabic under one language code, ar-XA, which its documentation describes as Modern Standard Arabic. That covers 30 Chirp 3: HD voices (its most natural tier), plus 4 WaveNet and 4 Standard voices.
- Chirp 3: HD: the first 1 million characters each month are free, then $30 per million.
- WaveNet and Standard: 4 million free characters a month, then $4 per million.
- Every character counts, including spaces and line breaks.
For narration in formal Arabic at volume (training material, accessibility, long articles), Google is hard to beat on cost.
OpenAI
OpenAI's text-to-speech uses gpt-4o-mini-tts, tts-1 and tts-1-hd. Language support follows its Whisper model, which includes Arabic, and it comes with about a dozen built-in voices; gpt-4o-mini-tts also accepts instructions on tone and style. Two points matter: OpenAI's usage policies require you to tell listeners clearly that the voice is AI-generated, and custom voices require a consent recording from the speaker. tts-1-hd costs $30 per million characters; gpt-4o-mini-tts is billed by tokens, which works out to roughly $0.015 per minute of audio by independent estimates.
Side by side
| ElevenLabs | Azure | Google Cloud | OpenAI | |
|---|---|---|---|---|
| Arabic dialect labels | Not specified | 16 country locales | MSA (ar-XA) | Not specified |
| Voice cloning | Yes (paid plans) | Custom neural voice (approval needed) | Instant custom voice ($60 / 1M chars) | Custom voices with consent recording |
| Free allowance | 10k credits/month, non-commercial | 0.5M chars/month | 1M (Chirp 3 HD) or 4M (WaveNet) chars/month | None |
| Easiest for non-developers | Yes (web app) | No | No | No |
The mistakes Arabic voices make, and a script that catches them
Most bad Arabic audio comes from the text, not the voice: digits in dates, currency codes, English acronyms, unformatted phone numbers and a mix of Arabic-Indic (٢٤) and Western (24) digits. Every regeneration costs credits, so it pays to fix the script first. The Python script below needs no API key. It flags those patterns, splits the text into chunks at sentence ends, and estimates the monthly character volume and cost.
"""Pre-flight check for an Arabic text-to-speech script (no API key needed).
Flags what Arabic TTS voices most often get wrong, splits the script into
chunks at sentence ends, and estimates characters and cost before you pay.
"""
import re
SCRIPT = """مرحباً بكم في عيادة النور. مواعيدنا من 9 صباحاً إلى 5 مساءً.
سعر الكشف 250 AED، والاستشارة الأولى مجانية حتى 31/12/2026.
للحجز اتصلوا على 0501234567 أو زوروا موقعنا. فريق IT لدينا يرد خلال ٢٤ ساعة."""
CHECKS = [
(r"\d{1,2}/\d{1,2}/\d{2,4}", "date in digits: write it out (31 ديسمبر 2026) so it isn't misread"),
(r"\b(AED|USD|SAR|\$|€)", "currency code/symbol: write the word (درهم، دولار، ريال)"),
(r"\b(?!AED|USD|SAR)[A-Z]{2,}\b", "Latin acronym: decide how it should sound (آي تي) or keep it on purpose"),
(r"\b0\d{8,}\b", "phone number: group it (050 123 4567) so it's read digit by digit"),
]
def mixed_digits(text):
return bool(re.search(r"[0-9]", text)) and bool(re.search(r"[٠-٩]", text))
def chunks(text, limit):
sentences = re.split(r"(?<=[.!؟?])\s+", text.replace("\n", " "))
out, cur = [], ""
for s in sentences:
if len(cur) + len(s) + 1 > limit and cur:
out.append(cur.strip()); cur = ""
cur += s + " "
if cur.strip():
out.append(cur.strip())
return out
issues = [(m.group(0), why) for pat, why in CHECKS for m in re.finditer(pat, SCRIPT)]
if mixed_digits(SCRIPT):
issues.append(("٢٤ + 9", "mixed Arabic-Indic and Western digits: pick one style"))
print("Issues found:")
for found, why in issues:
print(f" - {found!r}: {why}")
n = len(SCRIPT)
print(f"\nCharacters (spaces and newlines count): {n}")
for i, c in enumerate(chunks(SCRIPT, 120), 1):
print(f"Chunk {i} ({len(c)} chars) ends with: ...{c[-25:]}")
# Price per 1M characters after any free allowance (checked Oct 2026):
PRICES = {"Google Chirp 3: HD": 30, "OpenAI tts-1-hd": 30}
monthly = n * 30 * 20 # this script, 30 variations, 20 regenerations each
print(f"\nMonthly volume if you produce 600 versions: {monthly:,} characters")
print(f" ElevenLabs: {monthly:,} credits (1 character = 1 credit in the UI)")
for name, per_m in PRICES.items():
print(f" {name}: ${monthly / 1_000_000 * per_m:.2f} before any free tier")
Output, run on 2026-10-15:
Issues found:
- '31/12/2026': date in digits: write it out (31 ديسمبر 2026) so it isn't misread
- 'AED': currency code/symbol: write the word (درهم، دولار، ريال)
- 'IT': Latin acronym: decide how it should sound (آي تي) or keep it on purpose
- '0501234567': phone number: group it (050 123 4567) so it's read digit by digit
- '٢٤ + 9': mixed Arabic-Indic and Western digits: pick one style
Characters (spaces and newlines count): 197
Chunk 1 (60 chars) ends with: ... من 9 صباحاً إلى 5 مساءً.
Chunk 2 (104 chars) ends with: ...01234567 أو زوروا موقعنا.
Chunk 3 (31 chars) ends with: ...T لدينا يرد خلال ٢٤ ساعة.
Monthly volume if you produce 600 versions: 118,200 characters
ElevenLabs: 118,200 credits (1 character = 1 credit in the UI)
Google Chirp 3: HD: $3.55 before any free tier
OpenAI tts-1-hd: $3.55 before any free tier
What it shows:
- Five problems in three sentences. Each one is a likely mispronunciation and a paid retry. Writing "31 ديسمبر 2026", "250 درهماً" and a grouped phone number fixes most of them before any audio is made.
- Chunks end at full stops. Long scripts sound better and are easier to fix when each request ends on a full sentence.
- Volume adds up. A 197-character script regenerated 600 times is about 118,000 characters a month. That fits inside Google's free Chirp 3 HD allowance, but it is far beyond ElevenLabs' free 10,000 credits.
Licensing and consent
- Don't use a free plan for paid work unless its terms allow it. ElevenLabs' free plan explicitly does not.
- Clone a voice only with the written permission of the person it belongs to. Each provider requires consent or the rights to the voice in its terms.
- Tell people when they are talking to or hearing an AI voice. OpenAI requires it, and it builds trust in every case.
Which one should you choose?
For ads, videos, courses and voice agents where the voice must sound natural, start with ElevenLabs on a paid plan and test your real scripts. If a Gulf or Egyptian accent matters, try Azure's country voices first. For large volumes of formal Arabic, Google Cloud is the cheapest. If your product already runs on OpenAI, its TTS is the simplest to add. Whichever you pick, run your scripts through a check like the one above before you generate audio.
Sources: ElevenLabs documentation (models and supported languages, publishing and commercial use) and pricing page; Microsoft Azure AI Speech pricing and Arabic neural voice list; Google Cloud Text-to-Speech voices list and pricing; OpenAI text-to-speech guide and API pricing, via independent pricing summaries for per-minute estimates. Checked October 2026. Prices and plans change often, so confirm on each provider's page before buying.