NazishHasan commited on
Commit
f57f681
·
verified ·
1 Parent(s): 7fa7122

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +224 -23
app.py CHANGED
@@ -13,35 +13,236 @@ os.makedirs(IMAGE_DIR, exist_ok=True)
13
  os.makedirs(AUDIO_DIR, exist_ok=True)
14
 
15
 
16
- # Placeholder data for Arabic Letters
17
- # YOU MUST REPLACE 'placeholder_image.jpg' and 'placeholder_audio.wav'
18
- # with actual paths to your images and audio files within the 'assets/' directory.
19
- # Ensure your audio files are clear and appropriate for young children.
20
  arabic_letters_data = [
21
  {
22
  "letter": "أ",
23
- "image": os.path.join(IMAGE_DIR, "alif.jpg"), # e.g., 'assets/images/alif.jpg'
24
- "audio": os.path.join(AUDIO_DIR, "alif.wav"), # e.g., 'assets/audio/alif.wav' (pronunciation of 'أ')
25
- "word_example": "أرنب (Arnab - Rabbit)",
26
- "word_image": os.path.join(IMAGE_DIR, "arnab.jpg"), # e.g., 'assets/images/arnab.jpg'
27
- "word_audio": os.path.join(AUDIO_DIR, "arnab.wav"), # e.g., 'assets/audio/arnab.wav' (pronunciation of 'أرنب')
28
  },
29
  {
30
  "letter": "ب",
31
- "image": os.path.join(IMAGE_DIR, "ba.jpg"), # e.g., 'assets/images/baa.jpg'
32
- "audio": os.path.join(AUDIO_DIR, "ba.wav"), # e.g., 'assets/audio/baa.wav'
33
- "word_example": "بيت (Bayt - House)",
34
- "word_image": os.path.join(IMAGE_DIR, "bayt.jpg"), # e.g., 'assets/images/bayt.jpg'
35
- "word_audio": os.path.join(AUDIO_DIR, "bayt.wav"), # e.g., 'assets/audio/bayt.wav'
36
  },
37
  {
38
  "letter": "ت",
39
- "image": os.path.join(IMAGE_DIR, "taa.jpg"), # e.g., 'assets/images/taa.jpg'
40
- "audio": os.path.join(AUDIO_DIR, "taa.wav"), # e.g., 'assets/audio/taa.wav'
41
- "word_example": "تفاح (Tuffah - Apple)",
42
- "word_image": os.path.join(IMAGE_DIR, "tuffah.jpg"), # e.g., 'assets/images/tuffah.jpg'
43
- "word_audio": os.path.join(AUDIO_DIR, "tuffah.wav"), # e.g., 'assets/audio/tuffah.wav'
44
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  # Add more Arabic letters here following the same dictionary structure.
46
  # Make sure to create corresponding image and audio files for each entry!
47
  ]
@@ -161,7 +362,7 @@ def check_pronunciation(audio_input):
161
  (e.g., using phonetic similarity, or a simple string match for initial development).
162
  4. Provide feedback based on the comparison.
163
  """
164
- if audio_input is None:
165
  # If no audio was recorded, prompt the user.
166
  return "من فضلك سجل صوتك أولاً. (Please record your voice first.)"
167
 
@@ -390,7 +591,7 @@ with gr.Blocks(
390
  # Hidden audio component to play the letter sound
391
  letter_audio_output = gr.Audio(
392
  label="صوت الحرف (Letter Sound)",
393
- autoplay=True, # Changed to True
394
  type="filepath",
395
  visible=False
396
  )
@@ -422,7 +623,7 @@ with gr.Blocks(
422
  # Hidden audio component to play the word sound
423
  word_audio_output = gr.Audio(
424
  label="صوت الكلمة (Word Sound)",
425
- autoplay=True, # Changed to True
426
  type="filepath",
427
  visible=False
428
  )
@@ -492,7 +693,7 @@ with gr.Blocks(
492
  # Hidden audio component to play story page audio
493
  story_audio_output = gr.Audio(
494
  label="صوت القصة (Story Audio)",
495
- autoplay=True, # Changed to True
496
  type="filepath",
497
  visible=False
498
  )
 
13
  os.makedirs(AUDIO_DIR, exist_ok=True)
14
 
15
 
16
+ # Data for Arabic Letters
17
+ # Updated to use .jpg for images and .wav for audio, based on your provided file names.
18
+ # For 'word_example', 'word_image', and 'word_audio', placeholders are used as they were not provided.
19
+ # YOU MUST create corresponding .jpg and .wav files in your 'assets/images' and 'assets/audio' directories.
20
  arabic_letters_data = [
21
  {
22
  "letter": "أ",
23
+ "image": os.path.join(IMAGE_DIR, "alif.jpg"),
24
+ "audio": os.path.join(AUDIO_DIR, "alif.wav"),
25
+ "word_example": "أرنب (Arnab - Rabbit)", # Placeholder, replace with actual word
26
+ "word_image": os.path.join(IMAGE_DIR, "arnab.jpg"), # Placeholder, replace with actual image
27
+ "word_audio": os.path.join(AUDIO_DIR, "arnab.wav"), # Placeholder, replace with actual audio
28
  },
29
  {
30
  "letter": "ب",
31
+ "image": os.path.join(IMAGE_DIR, "ba.jpg"),
32
+ "audio": os.path.join(AUDIO_DIR, "ba.wav"),
33
+ "word_example": "بيت (Bayt - House)", # Placeholder
34
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ba.jpg"), # Placeholder
35
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ba.wav"), # Placeholder
36
  },
37
  {
38
  "letter": "ت",
39
+ "image": os.path.join(IMAGE_DIR, "taa.jpg"), # Assuming this is for the letter Taa (ت)
40
+ "audio": os.path.join(AUDIO_DIR, "taa.wav"),
41
+ "word_example": "تفاح (Tuffah - Apple)", # Placeholder
42
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_taa.jpg"), # Placeholder
43
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_taa.wav"), # Placeholder
44
  },
45
+ {
46
+ "letter": "ث",
47
+ "image": os.path.join(IMAGE_DIR, "tha.jpg"),
48
+ "audio": os.path.join(AUDIO_DIR, "tha.wav"),
49
+ "word_example": "ثعلب (Tha'lab - Fox)", # Placeholder
50
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_tha.jpg"), # Placeholder
51
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_tha.wav"), # Placeholder
52
+ },
53
+ {
54
+ "letter": "ج",
55
+ "image": os.path.join(IMAGE_DIR, "jim.jpg"),
56
+ "audio": os.path.join(AUDIO_DIR, "jim.wav"),
57
+ "word_example": "جمل (Jamal - Camel)", # Placeholder
58
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_jim.jpg"), # Placeholder
59
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_jim.wav"), # Placeholder
60
+ },
61
+ {
62
+ "letter": "ح", # Added 'ha' letter
63
+ "image": os.path.join(IMAGE_DIR, "ha.jpg"), # Using the provided 'ha.jpg'
64
+ "audio": os.path.join(AUDIO_DIR, "ha.wav"), # Assuming 'ha.wav' exists
65
+ "word_example": "حصان (Hisan - Horse)", # Placeholder
66
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ha.jpg"), # Placeholder
67
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ha.wav"), # Placeholder
68
+ },
69
+ {
70
+ "letter": "خ",
71
+ "image": os.path.join(IMAGE_DIR, "kha.jpg"),
72
+ "audio": os.path.join(AUDIO_DIR, "kha.wav"),
73
+ "word_example": "خبز (Khubz - Bread)", # Placeholder
74
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_kha.jpg"), # Placeholder
75
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_kha.wav"), # Placeholder
76
+ },
77
+ {
78
+ "letter": "د",
79
+ "image": os.path.join(IMAGE_DIR, "dal.jpg"),
80
+ "audio": os.path.join(AUDIO_DIR, "dal.wav"),
81
+ "word_example": "دب (Dub - Bear)", # Placeholder
82
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_dal.jpg"), # Placeholder
83
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_dal.wav"), # Placeholder
84
+ },
85
+ {
86
+ "letter": "ذ",
87
+ "image": os.path.join(IMAGE_DIR, "dhal.jpg"),
88
+ "audio": os.path.join(AUDIO_DIR, "dhal.wav"),
89
+ "word_example": "ذئب (Dhi'b - Wolf)", # Placeholder
90
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_dhal.jpg"), # Placeholder
91
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_dhal.wav"), # Placeholder
92
+ },
93
+ {
94
+ "letter": "ر",
95
+ "image": os.path.join(IMAGE_DIR, "ra.jpg"),
96
+ "audio": os.path.join(AUDIO_DIR, "ra.wav"),
97
+ "word_example": "رمان (Rumman - Pomegranate)", # Placeholder
98
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ra.jpg"), # Placeholder
99
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ra.wav"), # Placeholder
100
+ },
101
+ {
102
+ "letter": "ز",
103
+ "image": os.path.join(IMAGE_DIR, "za.jpg"),
104
+ "audio": os.path.join(AUDIO_DIR, "za.wav"),
105
+ "word_example": "زهرة (Zahra - Flower)", # Placeholder
106
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_za.jpg"), # Placeholder
107
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_za.wav"), # Placeholder
108
+ },
109
+ {
110
+ "letter": "س",
111
+ "image": os.path.join(IMAGE_DIR, "sin.jpg"),
112
+ "audio": os.path.join(AUDIO_DIR, "sin.wav"),
113
+ "word_example": "سمكة (Samaka - Fish)", # Placeholder
114
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_sin.jpg"), # Placeholder
115
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_sin.wav"), # Placeholder
116
+ },
117
+ {
118
+ "letter": "ش",
119
+ "image": os.path.join(IMAGE_DIR, "shin.jpg"),
120
+ "audio": os.path.join(AUDIO_DIR, "shin.wav"),
121
+ "word_example": "شمس (Shams - Sun)", # Placeholder
122
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_shin.jpg"), # Placeholder
123
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_shin.wav"), # Placeholder
124
+ },
125
+ {
126
+ "letter": "ص",
127
+ "image": os.path.join(IMAGE_DIR, "sad.jpg"),
128
+ "audio": os.path.join(AUDIO_DIR, "sad.wav"),
129
+ "word_example": "صقر (Saqr - Falcon)", # Placeholder
130
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_sad.jpg"), # Placeholder
131
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_sad.wav"), # Placeholder
132
+ },
133
+ {
134
+ "letter": "ض",
135
+ "image": os.path.join(IMAGE_DIR, "dad.jpg"),
136
+ "audio": os.path.join(AUDIO_DIR, "dad.wav"),
137
+ "word_example": "ضفدع (Difda - Frog)", # Placeholder
138
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_dad.jpg"), # Placeholder
139
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_dad.wav"), # Placeholder
140
+ },
141
+ {
142
+ "letter": "ط",
143
+ "image": os.path.join(IMAGE_DIR, "ta.jpg"),
144
+ "audio": os.path.join(AUDIO_DIR, "ta.wav"),
145
+ "word_example": "طائرة (Ta'ira - Airplane)", # Placeholder
146
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ta.jpg"), # Placeholder
147
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ta.wav"), # Placeholder
148
+ },
149
+ {
150
+ "letter": "ظ",
151
+ "image": os.path.join(IMAGE_DIR, "zay.jpg"), # Assuming zay corresponds to ظ
152
+ "audio": os.path.join(AUDIO_DIR, "zay.wav"),
153
+ "word_example": "ظرف (Zarf - Envelope)", # Placeholder
154
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_zay.jpg"), # Placeholder
155
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_zay.wav"), # Placeholder
156
+ },
157
+ {
158
+ "letter": "ع",
159
+ "image": os.path.join(IMAGE_DIR, "ayn.jpg"),
160
+ "audio": os.path.join(AUDIO_DIR, "ayn.wav"),
161
+ "word_example": "عين (Ayn - Eye)", # Placeholder
162
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ayn.jpg"), # Placeholder
163
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ayn.wav"), # Placeholder
164
+ },
165
+ {
166
+ "letter": "غ",
167
+ "image": os.path.join(IMAGE_DIR, "ghayn.jpg"),
168
+ "audio": os.path.join(AUDIO_DIR, "ghayn.wav"),
169
+ "word_example": "غزال (Ghazal - Deer)", # Placeholder
170
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ghayn.jpg"), # Placeholder
171
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ghayn.wav"), # Placeholder
172
+ },
173
+ {
174
+ "letter": "ف",
175
+ "image": os.path.join(IMAGE_DIR, "fa.jpg"),
176
+ "audio": os.path.join(AUDIO_DIR, "fa.wav"),
177
+ "word_example": "فيل (Fil - Elephant)", # Placeholder
178
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_fa.jpg"), # Placeholder
179
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_fa.wav"), # Placeholder
180
+ },
181
+ {
182
+ "letter": "ه",
183
+ "image": os.path.join(IMAGE_DIR, "ha.jpg"),
184
+ "audio": os.path.join(AUDIO_DIR, "ha.wav"),
185
+ "word_example": "هرم (Haram - Pyramid)", # Placeholder
186
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ha.jpg"), # Placeholder
187
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ha.wav"), # Placeholder
188
+ },
189
+ {
190
+ "letter": "ق",
191
+ "image": os.path.join(IMAGE_DIR, "qaf.jpg"),
192
+ "audio": os.path.join(AUDIO_DIR, "qaf.wav"),
193
+ "word_example": "قلم (Qalam - Pen)", # Placeholder
194
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_qaf.jpg"), # Placeholder
195
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_qaf.wav"), # Placeholder
196
+ },
197
+ {
198
+ "letter": "ك",
199
+ "image": os.path.join(IMAGE_DIR, "kaf.jpg"),
200
+ "audio": os.path.join(AUDIO_DIR, "kaf.wav"),
201
+ "word_example": "كتاب (Kitab - Book)", # Placeholder
202
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_kaf.jpg"), # Placeholder
203
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_kaf.wav"), # Placeholder
204
+ },
205
+
206
+ {
207
+ "letter": "ل",
208
+ "image": os.path.join(IMAGE_DIR, "lam.jpg"),
209
+ "audio": os.path.join(AUDIO_DIR, "lam.wav"),
210
+ "word_example": "ليمون (Laymun - Lemon)", # Placeholder
211
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_lam.jpg"), # Placeholder
212
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_lam.wav"), # Placeholder
213
+ },
214
+ {
215
+ "letter": "م",
216
+ "image": os.path.join(IMAGE_DIR, "mim.jpg"),
217
+ "audio": os.path.join(AUDIO_DIR, "mim.wav"),
218
+ "word_example": "موز (Mawz - Banana)", # Placeholder
219
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_mim.jpg"), # Placeholder
220
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_mim.wav"), # Placeholder
221
+ },
222
+ {
223
+ "letter": "ن",
224
+ "image": os.path.join(IMAGE_DIR, "nun.jpg"),
225
+ "audio": os.path.join(AUDIO_DIR, "nun.wav"),
226
+ "word_example": "نجمة (Najma - Star)", # Placeholder
227
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_nun.jpg"), # Placeholder
228
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_nun.wav"), # Placeholder
229
+ },
230
+ {
231
+ "letter": "و",
232
+ "image": os.path.join(IMAGE_DIR, "waw.jpg"),
233
+ "audio": os.path.join(AUDIO_DIR, "waw.wav"),
234
+ "word_example": "وردة (Warda - Rose)", # Placeholder
235
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_waw.jpg"), # Placeholder
236
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_waw.wav"), # Placeholder
237
+ },
238
+ {
239
+ "letter": "ي",
240
+ "image": os.path.join(IMAGE_DIR, "ya.jpg"),
241
+ "audio": os.path.join(AUDIO_DIR, "ya.wav"),
242
+ "word_example": "يد (Yad - Hand)", # Placeholder
243
+ "word_image": os.path.join(IMAGE_DIR, "placeholder_word_ya.jpg"), # Placeholder
244
+ "word_audio": os.path.join(AUDIO_DIR, "placeholder_word_ya.wav"), # Placeholder
245
+ }
246
  # Add more Arabic letters here following the same dictionary structure.
247
  # Make sure to create corresponding image and audio files for each entry!
248
  ]
 
362
  (e.g., using phonetic similarity, or a simple string match for initial development).
363
  4. Provide feedback based on the comparison.
364
  """
365
+ if audio_input === None:
366
  # If no audio was recorded, prompt the user.
367
  return "من فضلك سجل صوتك أولاً. (Please record your voice first.)"
368
 
 
591
  # Hidden audio component to play the letter sound
592
  letter_audio_output = gr.Audio(
593
  label="صوت الحرف (Letter Sound)",
594
+ autoplay=True,
595
  type="filepath",
596
  visible=False
597
  )
 
623
  # Hidden audio component to play the word sound
624
  word_audio_output = gr.Audio(
625
  label="صوت الكلمة (Word Sound)",
626
+ autoplay=True,
627
  type="filepath",
628
  visible=False
629
  )
 
693
  # Hidden audio component to play story page audio
694
  story_audio_output = gr.Audio(
695
  label="صوت القصة (Story Audio)",
696
+ autoplay=True,
697
  type="filepath",
698
  visible=False
699
  )