Update app.py
Browse files
app.py
CHANGED
|
@@ -7,14 +7,14 @@ from deep_translator import GoogleTranslator
|
|
| 7 |
# Enhanced transliteration map with proper Arabic characters
|
| 8 |
translit_map = {
|
| 9 |
# Two-character combinations (must be checked first)
|
| 10 |
-
"
|
| 11 |
"aa": "آ", "ee": "ي", "oo": "و", "uu": "و", "ii": "ي",
|
| 12 |
|
| 13 |
# Single characters
|
| 14 |
"a": "ا", "b": "ب", "t": "ت", "j": "ج", "H": "ح",
|
| 15 |
"d": "د", "r": "ر", "z": "ز", "s": "س",
|
| 16 |
"S": "ص", "D": "ض", "T": "ط", "Z": "ظ",
|
| 17 |
-
"'": "ع", "
|
| 18 |
"l": "ل", "m": "م", "n": "ن", "h": "ه",
|
| 19 |
"w": "و", "y": "ي", "x": "ء",
|
| 20 |
|
|
@@ -34,18 +34,18 @@ translit_map = {
|
|
| 34 |
# Proper Arabic romanization to IPA mapping
|
| 35 |
latin_to_ipa = {
|
| 36 |
# Two-character combinations (must be checked first)
|
| 37 |
-
"
|
| 38 |
-
"
|
| 39 |
-
"
|
| 40 |
-
"
|
| 41 |
-
"
|
| 42 |
|
| 43 |
# Long vowels
|
| 44 |
-
"
|
| 45 |
-
"
|
| 46 |
-
"
|
| 47 |
-
"
|
| 48 |
-
"
|
| 49 |
|
| 50 |
# Consonants
|
| 51 |
"b": "b", # ب
|
|
@@ -87,9 +87,9 @@ latin_to_ipa = {
|
|
| 87 |
"^": "", # sukun (no vowel)
|
| 88 |
|
| 89 |
# Tanween
|
| 90 |
-
"
|
| 91 |
-
"
|
| 92 |
-
"
|
| 93 |
|
| 94 |
# Space and punctuation
|
| 95 |
" ": " ",
|
|
@@ -328,23 +328,23 @@ with gr.Blocks(title="Arabic Transliterator with Google Translate") as demo:
|
|
| 328 |
gr.Markdown("#### Two-Character Combinations:")
|
| 329 |
with gr.Row():
|
| 330 |
with gr.Column(scale=1):
|
| 331 |
-
gr.Button("🔊
|
| 332 |
fn=generate_letter_audio, inputs=gr.State("ث"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 333 |
)
|
| 334 |
with gr.Column(scale=1):
|
| 335 |
-
gr.Button("🔊
|
| 336 |
fn=generate_letter_audio, inputs=gr.State("خ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 337 |
)
|
| 338 |
with gr.Column(scale=1):
|
| 339 |
-
gr.Button("🔊
|
| 340 |
fn=generate_letter_audio, inputs=gr.State("ذ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 341 |
)
|
| 342 |
with gr.Column(scale=1):
|
| 343 |
-
gr.Button("🔊
|
| 344 |
fn=generate_letter_audio, inputs=gr.State("ش"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 345 |
)
|
| 346 |
with gr.Column(scale=1):
|
| 347 |
-
gr.Button("🔊
|
| 348 |
fn=generate_letter_audio, inputs=gr.State("غ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 349 |
)
|
| 350 |
|
|
@@ -352,23 +352,23 @@ with gr.Blocks(title="Arabic Transliterator with Google Translate") as demo:
|
|
| 352 |
gr.Markdown("#### Long Vowels:")
|
| 353 |
with gr.Row():
|
| 354 |
with gr.Column(scale=1):
|
| 355 |
-
gr.Button("🔊
|
| 356 |
fn=generate_letter_audio, inputs=gr.State("آ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 357 |
)
|
| 358 |
with gr.Column(scale=1):
|
| 359 |
-
gr.Button("🔊
|
| 360 |
fn=generate_letter_audio, inputs=gr.State("ي"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 361 |
)
|
| 362 |
with gr.Column(scale=1):
|
| 363 |
-
gr.Button("🔊
|
| 364 |
fn=generate_letter_audio, inputs=gr.State("و"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 365 |
)
|
| 366 |
with gr.Column(scale=1):
|
| 367 |
-
gr.Button("🔊
|
| 368 |
fn=generate_letter_audio, inputs=gr.State("و"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 369 |
)
|
| 370 |
with gr.Column(scale=1):
|
| 371 |
-
gr.Button("🔊
|
| 372 |
fn=generate_letter_audio, inputs=gr.State("ي"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 373 |
)
|
| 374 |
|
|
|
|
| 7 |
# Enhanced transliteration map with proper Arabic characters
|
| 8 |
translit_map = {
|
| 9 |
# Two-character combinations (must be checked first)
|
| 10 |
+
"TH": "ث", "KH": "خ", "DH": "ذ", "SH": "ش", "GH": "غ",
|
| 11 |
"aa": "آ", "ee": "ي", "oo": "و", "uu": "و", "ii": "ي",
|
| 12 |
|
| 13 |
# Single characters
|
| 14 |
"a": "ا", "b": "ب", "t": "ت", "j": "ج", "H": "ح",
|
| 15 |
"d": "د", "r": "ر", "z": "ز", "s": "س",
|
| 16 |
"S": "ص", "D": "ض", "T": "ط", "Z": "ظ",
|
| 17 |
+
"'": "ع", "f": "ف", "q": "ق", "k": "ك",
|
| 18 |
"l": "ل", "m": "م", "n": "ن", "h": "ه",
|
| 19 |
"w": "و", "y": "ي", "x": "ء",
|
| 20 |
|
|
|
|
| 34 |
# Proper Arabic romanization to IPA mapping
|
| 35 |
latin_to_ipa = {
|
| 36 |
# Two-character combinations (must be checked first)
|
| 37 |
+
"TH": "θ", # ث - voiceless dental fricative
|
| 38 |
+
"KH": "x", # خ - voiceless velar fricative
|
| 39 |
+
"DH": "ð", # ذ - voiced dental fricative
|
| 40 |
+
"SH": "ʃ", # ش - voiceless postalveolar fricative
|
| 41 |
+
"GH": "ɣ", # غ - voiced velar fricative
|
| 42 |
|
| 43 |
# Long vowels
|
| 44 |
+
"AA": "aː", # آ - long a
|
| 45 |
+
"EE": "iː", # long i
|
| 46 |
+
"OO": "uː", # long u
|
| 47 |
+
"UU": "uː", # long u (alternative)
|
| 48 |
+
"II": "iː", # long i (alternative)
|
| 49 |
|
| 50 |
# Consonants
|
| 51 |
"b": "b", # ب
|
|
|
|
| 87 |
"^": "", # sukun (no vowel)
|
| 88 |
|
| 89 |
# Tanween
|
| 90 |
+
"AN": "an", # فتحتان
|
| 91 |
+
"UN": "un", # ضمتان
|
| 92 |
+
"IN": "in", # كسرتان
|
| 93 |
|
| 94 |
# Space and punctuation
|
| 95 |
" ": " ",
|
|
|
|
| 328 |
gr.Markdown("#### Two-Character Combinations:")
|
| 329 |
with gr.Row():
|
| 330 |
with gr.Column(scale=1):
|
| 331 |
+
gr.Button("🔊 TH → ث", size="sm").click(
|
| 332 |
fn=generate_letter_audio, inputs=gr.State("ث"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 333 |
)
|
| 334 |
with gr.Column(scale=1):
|
| 335 |
+
gr.Button("🔊 KH → خ", size="sm").click(
|
| 336 |
fn=generate_letter_audio, inputs=gr.State("خ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 337 |
)
|
| 338 |
with gr.Column(scale=1):
|
| 339 |
+
gr.Button("🔊 DH → ذ", size="sm").click(
|
| 340 |
fn=generate_letter_audio, inputs=gr.State("ذ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 341 |
)
|
| 342 |
with gr.Column(scale=1):
|
| 343 |
+
gr.Button("🔊 SH → ش", size="sm").click(
|
| 344 |
fn=generate_letter_audio, inputs=gr.State("ش"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 345 |
)
|
| 346 |
with gr.Column(scale=1):
|
| 347 |
+
gr.Button("🔊 GH → غ", size="sm").click(
|
| 348 |
fn=generate_letter_audio, inputs=gr.State("غ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 349 |
)
|
| 350 |
|
|
|
|
| 352 |
gr.Markdown("#### Long Vowels:")
|
| 353 |
with gr.Row():
|
| 354 |
with gr.Column(scale=1):
|
| 355 |
+
gr.Button("🔊 AA → آ", size="sm").click(
|
| 356 |
fn=generate_letter_audio, inputs=gr.State("آ"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 357 |
)
|
| 358 |
with gr.Column(scale=1):
|
| 359 |
+
gr.Button("🔊 EE → ي", size="sm").click(
|
| 360 |
fn=generate_letter_audio, inputs=gr.State("ي"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 361 |
)
|
| 362 |
with gr.Column(scale=1):
|
| 363 |
+
gr.Button("🔊 OO → و", size="sm").click(
|
| 364 |
fn=generate_letter_audio, inputs=gr.State("و"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 365 |
)
|
| 366 |
with gr.Column(scale=1):
|
| 367 |
+
gr.Button("🔊 UU → و", size="sm").click(
|
| 368 |
fn=generate_letter_audio, inputs=gr.State("و"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 369 |
)
|
| 370 |
with gr.Column(scale=1):
|
| 371 |
+
gr.Button("🔊 II → ي", size="sm").click(
|
| 372 |
fn=generate_letter_audio, inputs=gr.State("ي"), outputs=gr.Audio(visible=False, autoplay=True)
|
| 373 |
)
|
| 374 |
|