Arabic sounds different in Cairo, Riyadh, Casablanca and Beirut. Set dialectId and MenaVoice steers the voice toward that region's accent and rhythm, so your audio sounds local to the people you're speaking to.
Use a dialect
Add dialectId to any text to speech request:
import os
import requests
response = requests.post(
"https://api.menavoice.ai/api/tts",
headers={"x-api-key": os.environ["MENAVOICE_API_KEY"]},
json={
"text": "إزيك يا صاحبي؟ عامل إيه النهارده؟",
"voiceId": "omar",
"dialectId": "egyptian",
},
timeout=120,
)const response = await fetch("https://api.menavoice.ai/api/tts", {
method: "POST",
headers: {
"x-api-key": process.env.MENAVOICE_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "إزيك يا صاحبي؟ عامل إيه النهارده؟",
voiceId: "omar",
dialectId: "egyptian",
}),
});curl -X POST https://api.menavoice.ai/api/tts \
-H "x-api-key: $MENAVOICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "إزيك يا صاحبي؟ عامل إيه النهارده؟", "voiceId": "omar", "dialectId": "egyptian"}'Without a dialectId, the voice reads the text as written, with no dialect steering.
Supported dialects
| dialectId | Dialect | Arabic name | Region |
|---|---|---|---|
egyptian | Egyptian | المصرية | North Africa |
libyan | Libyan | الليبية | North Africa |
tunisian | Tunisian | التونسية | North Africa |
algerian | Algerian | الجزائرية | North Africa |
moroccan | Moroccan | المغربية | North Africa |
mauritanian | Mauritanian | الموريتانية | North Africa |
saudi | Saudi | السعودية | Arabian Peninsula |
emirati | Emirati | الإماراتية | Arabian Peninsula |
kuwaiti | Kuwaiti | الكويتية | Arabian Peninsula |
bahraini | Bahraini | البحرينية | Arabian Peninsula |
qatari | Qatari | القطرية | Arabian Peninsula |
omani | Omani | العمانية | Arabian Peninsula |
yemeni | Yemeni | اليمنية | Arabian Peninsula |
syrian | Syrian | السورية | Levant |
lebanese | Lebanese | اللبنانية | Levant |
palestinian | Palestinian | الفلسطينية | Levant |
jordanian | Jordanian | الأردنية | Levant |
iraqi | Iraqi | العراقية | Mesopotamia |
sudanese | Sudanese | السودانية | East Africa |
somali | Somali | الصومالية | East Africa |
djiboutian | Djiboutian | الجيبوتية | East Africa |
comorian | Comorian | القمرية | East Africa |
msa | Modern Standard Arabic | الفصحى | Standard Arabic |
english | English | الإنجليزية | Other languages |
french | French | الفرنسية | Other languages |
msa, english and french don't add any steering: the voice simply follows the language of your text. They exist so you can store one dialect setting per script or speaker, exactly like the web app does.
Write the script in the dialect
The dialect setting shapes pronunciation, accent and rhythm, but it doesn't translate. A script written in Modern Standard Arabic still sounds formal when read with dialectId: "egyptian". For the most natural result, write the words the way people in that region say them:
| Dialect | Example |
|---|---|
egyptian | إزيك يا صاحبي؟ عامل إيه النهارده؟ |
saudi | هلا والله! وش رايك نبدأ المشروع من اليوم؟ |
moroccan | سلام خويا، كيداير؟ واش كلشي مزيان؟ |
lebanese | كيفك؟ شو عم تعمل اليوم؟ |
emirati | شحالك؟ عساك بخير؟ |
msa | مرحباً بكم، كيف حالكم اليوم؟ |
Good to know
- Every model except Clone. Dialect steering works with MenaVoice 2, 1.5 and 1v. MenaVoice Clone ignores
dialectId: a cloned voice keeps the accent of its recording. - Unknown values are ignored. A
dialectIdthat isn't in the table above doesn't cause an error. The text is read without steering. - Free of charge. The steering instruction isn't counted in your characters. You pay only for your own text.
- Per line in a dialogue. In a multi-speaker dialogue, each line can have its own
dialectId. - Web app default. New scripts in the web app start in Modern Standard Arabic. Pick a dialect for the whole script, or one per speaker.

