MohamedRashad commited on
Commit
e9fd913
1 Parent(s): ec1f04c

Added requirements.txt with dependencies

Browse files
Files changed (2) hide show
  1. app.py +494 -0
  2. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,494 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import tempfile
2
+
3
+ import requests
4
+ import edge_tts
5
+ import gradio as gr
6
+
7
+ tashkil_url = "http://www.7koko.com/api/tashkil/index.php"
8
+
9
+ language_dict = {
10
+ "English": {
11
+ "Jenny": "en-US-JennyNeural",
12
+ "Guy": "en-US-GuyNeural",
13
+ "Ana": "en-US-AnaNeural",
14
+ "Aria": "en-US-AriaNeural",
15
+ "Christopher": "en-US-ChristopherNeural",
16
+ "Eric": "en-US-EricNeural",
17
+ "Michelle": "en-US-MichelleNeural",
18
+ "Roger": "en-US-RogerNeural",
19
+ "Natasha": "en-AU-NatashaNeural",
20
+ "William": "en-AU-WilliamNeural",
21
+ "Clara": "en-CA-ClaraNeural",
22
+ "Liam": "en-CA-LiamNeural",
23
+ "Libby": "en-GB-LibbyNeural",
24
+ "Maisie": "en-GB-MaisieNeural",
25
+ "Ryan": "en-GB-RyanNeural",
26
+ "Sonia": "en-GB-SoniaNeural",
27
+ "Thomas": "en-GB-ThomasNeural",
28
+ "Sam": "en-HK-SamNeural",
29
+ "Yan": "en-HK-YanNeural",
30
+ "Connor": "en-IE-ConnorNeural",
31
+ "Emily": "en-IE-EmilyNeural",
32
+ "Neerja": "en-IN-NeerjaNeural",
33
+ "Prabhat": "en-IN-PrabhatNeural",
34
+ "Asilia": "en-KE-AsiliaNeural",
35
+ "Chilemba": "en-KE-ChilembaNeural",
36
+ "Abeo": "en-NG-AbeoNeural",
37
+ "Ezinne": "en-NG-EzinneNeural",
38
+ "Mitchell": "en-NZ-MitchellNeural",
39
+ "James": "en-PH-JamesNeural",
40
+ "Rosa": "en-PH-RosaNeural",
41
+ "Luna": "en-SG-LunaNeural",
42
+ "Wayne": "en-SG-WayneNeural",
43
+ "Elimu": "en-TZ-ElimuNeural",
44
+ "Imani": "en-TZ-ImaniNeural",
45
+ "Leah": "en-ZA-LeahNeural",
46
+ "Luke": "en-ZA-LukeNeural"
47
+ },
48
+ "Spanish": {
49
+ "Elena": "es-AR-ElenaNeural",
50
+ "Tomas": "es-AR-TomasNeural",
51
+ "Marcelo": "es-BO-MarceloNeural",
52
+ "Sofia": "es-BO-SofiaNeural",
53
+ "Gonzalo": "es-CO-GonzaloNeural",
54
+ "Salome": "es-CO-SalomeNeural",
55
+ "Juan": "es-CR-JuanNeural",
56
+ "Maria": "es-CR-MariaNeural",
57
+ "Belkys": "es-CU-BelkysNeural",
58
+ "Emilio": "es-DO-EmilioNeural",
59
+ "Ramona": "es-DO-RamonaNeural",
60
+ "Andrea": "es-EC-AndreaNeural",
61
+ "Luis": "es-EC-LuisNeural",
62
+ "Alvaro": "es-ES-AlvaroNeural",
63
+ "Elvira": "es-ES-ElviraNeural",
64
+ "Teresa": "es-GQ-TeresaNeural",
65
+ "Andres": "es-GT-AndresNeural",
66
+ "Marta": "es-GT-MartaNeural",
67
+ "Carlos": "es-HN-CarlosNeural",
68
+ "Karla": "es-HN-KarlaNeural",
69
+ "Federico": "es-NI-FedericoNeural",
70
+ "Yolanda": "es-NI-YolandaNeural",
71
+ "Margarita": "es-PA-MargaritaNeural",
72
+ "Roberto": "es-PA-RobertoNeural",
73
+ "Alex": "es-PE-AlexNeural",
74
+ "Camila": "es-PE-CamilaNeural",
75
+ "Karina": "es-PR-KarinaNeural",
76
+ "Victor": "es-PR-VictorNeural",
77
+ "Mario": "es-PY-MarioNeural",
78
+ "Tania": "es-PY-TaniaNeural",
79
+ "Lorena": "es-SV-LorenaNeural",
80
+ "Rodrigo": "es-SV-RodrigoNeural",
81
+ "Alonso": "es-US-AlonsoNeural",
82
+ "Paloma": "es-US-PalomaNeural",
83
+ "Mateo": "es-UY-MateoNeural",
84
+ "Valentina": "es-UY-ValentinaNeural",
85
+ "Paola": "es-VE-PaolaNeural",
86
+ "Sebastian": "es-VE-SebastianNeural"
87
+ },
88
+ "Arabic": {
89
+ "Hamed": "ar-SA-HamedNeural",
90
+ "Zariyah": "ar-SA-ZariyahNeural",
91
+ "Fatima": "ar-AE-FatimaNeural",
92
+ "Hamdan": "ar-AE-HamdanNeural",
93
+ "Ali": "ar-BH-AliNeural",
94
+ "Laila": "ar-BH-LailaNeural",
95
+ "Ismael": "ar-DZ-IsmaelNeural",
96
+ "Salma": "ar-EG-SalmaNeural",
97
+ "Shakir": "ar-EG-ShakirNeural",
98
+ "Bassel": "ar-IQ-BasselNeural",
99
+ "Rana": "ar-IQ-RanaNeural",
100
+ "Sana": "ar-JO-SanaNeural",
101
+ "Taim": "ar-JO-TaimNeural",
102
+ "Fahed": "ar-KW-FahedNeural",
103
+ "Noura": "ar-KW-NouraNeural",
104
+ "Layla": "ar-LB-LaylaNeural",
105
+ "Rami": "ar-LB-RamiNeural",
106
+ "Iman": "ar-LY-ImanNeural",
107
+ "Omar": "ar-LY-OmarNeural",
108
+ "Jamal": "ar-MA-JamalNeural",
109
+ "Mouna": "ar-MA-MounaNeural",
110
+ "Abdullah": "ar-OM-AbdullahNeural",
111
+ "Aysha": "ar-OM-AyshaNeural",
112
+ "Amal": "ar-QA-AmalNeural",
113
+ "Moaz": "ar-QA-MoazNeural",
114
+ "Amany": "ar-SY-AmanyNeural",
115
+ "Laith": "ar-SY-LaithNeural",
116
+ "Hedi": "ar-TN-HediNeural",
117
+ "Reem": "ar-TN-ReemNeural",
118
+ "Maryam": "ar-YE-MaryamNeural",
119
+ "Saleh": "ar-YE-SalehNeural"
120
+ },
121
+ "Korean": {
122
+ "Sun-Hi": "ko-KR-SunHiNeural",
123
+ "InJoon": "ko-KR-InJoonNeural"
124
+ },
125
+ "Thai": {
126
+ "Premwadee": "th-TH-PremwadeeNeural",
127
+ "Niwat": "th-TH-NiwatNeural"
128
+ },
129
+ "Vietnamese": {
130
+ "HoaiMy": "vi-VN-HoaiMyNeural",
131
+ "NamMinh": "vi-VN-NamMinhNeural"
132
+ },
133
+ "Japanese": {
134
+ "Nanami": "ja-JP-NanamiNeural",
135
+ "Keita": "ja-JP-KeitaNeural"
136
+ },
137
+ "French": {
138
+ "Denise": "fr-FR-DeniseNeural",
139
+ "Eloise": "fr-FR-EloiseNeural",
140
+ "Henri": "fr-FR-HenriNeural",
141
+ "Sylvie": "fr-CA-SylvieNeural",
142
+ "Antoine": "fr-CA-AntoineNeural",
143
+ "Jean": "fr-CA-JeanNeural",
144
+ "Ariane": "fr-CH-ArianeNeural",
145
+ "Fabrice": "fr-CH-FabriceNeural",
146
+ "Charline": "fr-BE-CharlineNeural",
147
+ "Gerard": "fr-BE-GerardNeural"
148
+ },
149
+ "Portuguese": {
150
+ "Francisca": "pt-BR-FranciscaNeural",
151
+ "Antonio": "pt-BR-AntonioNeural",
152
+ "Duarte": "pt-PT-DuarteNeural",
153
+ "Raquel": "pt-PT-RaquelNeural"
154
+ },
155
+ "Indonesian": {
156
+ "Ardi": "id-ID-ArdiNeural",
157
+ "Gadis": "id-ID-GadisNeural"
158
+ },
159
+ "Hebrew": {
160
+ "Avri": "he-IL-AvriNeural",
161
+ "Hila": "he-IL-HilaNeural"
162
+ },
163
+ "Italian": {
164
+ "Isabella": "it-IT-IsabellaNeural",
165
+ "Diego": "it-IT-DiegoNeural",
166
+ "Elsa": "it-IT-ElsaNeural"
167
+ },
168
+ "Dutch": {
169
+ "Colette": "nl-NL-ColetteNeural",
170
+ "Fenna": "nl-NL-FennaNeural",
171
+ "Maarten": "nl-NL-MaartenNeural",
172
+ "Arnaud": "nl-BE-ArnaudNeural",
173
+ "Dena": "nl-BE-DenaNeural"
174
+ },
175
+ "Malay": {
176
+ "Osman": "ms-MY-OsmanNeural",
177
+ "Yasmin": "ms-MY-YasminNeural"
178
+ },
179
+ "Norwegian": {
180
+ "Pernille": "nb-NO-PernilleNeural",
181
+ "Finn": "nb-NO-FinnNeural"
182
+ },
183
+ "Swedish": {
184
+ "Sofie": "sv-SE-SofieNeural",
185
+ "Mattias": "sv-SE-MattiasNeural"
186
+ },
187
+ "Greek": {
188
+ "Athina": "el-GR-AthinaNeural",
189
+ "Nestoras": "el-GR-NestorasNeural"
190
+ },
191
+ "German": {
192
+ "Katja": "de-DE-KatjaNeural",
193
+ "Amala": "de-DE-AmalaNeural",
194
+ "Conrad": "de-DE-ConradNeural",
195
+ "Killian": "de-DE-KillianNeural",
196
+ "Ingrid": "de-AT-IngridNeural",
197
+ "Jonas": "de-AT-JonasNeural",
198
+ "Jan": "de-CH-JanNeural",
199
+ "Leni": "de-CH-LeniNeural"
200
+ },
201
+ "Afrikaans": {
202
+ "Adri": "af-ZA-AdriNeural",
203
+ "Willem": "af-ZA-WillemNeural"
204
+ },
205
+ "Amharic": {
206
+ "Ameha": "am-ET-AmehaNeural",
207
+ "Mekdes": "am-ET-MekdesNeural"
208
+ },
209
+ "Azerbaijani": {
210
+ "Babek": "az-AZ-BabekNeural",
211
+ "Banu": "az-AZ-BanuNeural"
212
+ },
213
+ "Bulgarian": {
214
+ "Borislav": "bg-BG-BorislavNeural",
215
+ "Kalina": "bg-BG-KalinaNeural"
216
+ },
217
+ "Bengali": {
218
+ "Nabanita": "bn-BD-NabanitaNeural",
219
+ "Pradeep": "bn-BD-PradeepNeural",
220
+ "Bashkar": "bn-IN-BashkarNeural",
221
+ "Tanishaa": "bn-IN-TanishaaNeural"
222
+ },
223
+ "Bosnian": {
224
+ "Goran": "bs-BA-GoranNeural",
225
+ "Vesna": "bs-BA-VesnaNeural"
226
+ },
227
+ "Catalan": {
228
+ "Joana": "ca-ES-JoanaNeural",
229
+ "Enric": "ca-ES-EnricNeural"
230
+ },
231
+ "Czech": {
232
+ "Antonin": "cs-CZ-AntoninNeural",
233
+ "Vlasta": "cs-CZ-VlastaNeural"
234
+ },
235
+ "Welsh": {
236
+ "Aled": "cy-GB-AledNeural",
237
+ "Nia": "cy-GB-NiaNeural"
238
+ },
239
+ "Danish": {
240
+ "Christel": "da-DK-ChristelNeural",
241
+ "Jeppe": "da-DK-JeppeNeural"
242
+ },
243
+ "Estonian": {
244
+ "Anu": "et-EE-AnuNeural",
245
+ "Kert": "et-EE-KertNeural"
246
+ },
247
+ "Persian": {
248
+ "Dilara": "fa-IR-DilaraNeural",
249
+ "Farid": "fa-IR-FaridNeural"
250
+ },
251
+ "Finnish": {
252
+ "Harri": "fi-FI-HarriNeural",
253
+ "Noora": "fi-FI-NooraNeural"
254
+ },
255
+ "Irish": {
256
+ "Colm": "ga-IE-ColmNeural",
257
+ "Orla": "ga-IE-OrlaNeural"
258
+ },
259
+ "Galician": {
260
+ "Roi": "gl-ES-RoiNeural",
261
+ "Sabela": "gl-ES-SabelaNeural"
262
+ },
263
+ "Gujarati": {
264
+ "Dhwani": "gu-IN-DhwaniNeural",
265
+ "Niranjan": "gu-IN-NiranjanNeural"
266
+ },
267
+ "Hindi": {
268
+ "Madhur": "hi-IN-MadhurNeural",
269
+ "Swara": "hi-IN-SwaraNeural"
270
+ },
271
+ "Croatian": {
272
+ "Gabrijela": "hr-HR-GabrijelaNeural",
273
+ "Srecko": "hr-HR-SreckoNeural"
274
+ },
275
+ "Hungarian": {
276
+ "Noemi": "hu-HU-NoemiNeural",
277
+ "Tamas": "hu-HU-TamasNeural"
278
+ },
279
+ "Icelandic": {
280
+ "Gudrun": "is-IS-GudrunNeural",
281
+ "Gunnar": "is-IS-GunnarNeural"
282
+ },
283
+ "Javanese": {
284
+ "Dimas": "jv-ID-DimasNeural",
285
+ "Siti": "jv-ID-SitiNeural"
286
+ },
287
+ "Georgian": {
288
+ "Eka": "ka-GE-EkaNeural",
289
+ "Giorgi": "ka-GE-GiorgiNeural"
290
+ },
291
+ "Kazakh": {
292
+ "Aigul": "kk-KZ-AigulNeural",
293
+ "Daulet": "kk-KZ-DauletNeural"
294
+ },
295
+ "Khmer": {
296
+ "Piseth": "km-KH-PisethNeural",
297
+ "Sreymom": "km-KH-SreymomNeural"
298
+ },
299
+ "Kannada": {
300
+ "Gagan": "kn-IN-GaganNeural",
301
+ "Sapna": "kn-IN-SapnaNeural"
302
+ },
303
+ "Lao": {
304
+ "Chanthavong": "lo-LA-ChanthavongNeural",
305
+ "Keomany": "lo-LA-KeomanyNeural"
306
+ },
307
+ "Lithuanian": {
308
+ "Leonas": "lt-LT-LeonasNeural",
309
+ "Ona": "lt-LT-OnaNeural"
310
+ },
311
+ "Latvian": {
312
+ "Everita": "lv-LV-EveritaNeural",
313
+ "Nils": "lv-LV-NilsNeural"
314
+ },
315
+ "Macedonian": {
316
+ "Aleksandar": "mk-MK-AleksandarNeural",
317
+ "Marija": "mk-MK-MarijaNeural"
318
+ },
319
+ "Malayalam": {
320
+ "Midhun": "ml-IN-MidhunNeural",
321
+ "Sobhana": "ml-IN-SobhanaNeural"
322
+ },
323
+ "Mongolian": {
324
+ "Bataa": "mn-MN-BataaNeural",
325
+ "Yesui": "mn-MN-YesuiNeural"
326
+ },
327
+ "Marathi": {
328
+ "Aarohi": "mr-IN-AarohiNeural",
329
+ "Manohar": "mr-IN-ManoharNeural"
330
+ },
331
+ "Maltese": {
332
+ "Grace": "mt-MT-GraceNeural",
333
+ "Joseph": "mt-MT-JosephNeural"
334
+ },
335
+ "Burmese": {
336
+ "Nilar": "my-MM-NilarNeural",
337
+ "Thiha": "my-MM-ThihaNeural"
338
+ },
339
+ "Nepali": {
340
+ "Hemkala": "ne-NP-HemkalaNeural",
341
+ "Sagar": "ne-NP-SagarNeural"
342
+ },
343
+ "Polish": {
344
+ "Marek": "pl-PL-MarekNeural",
345
+ "Zofia": "pl-PL-ZofiaNeural"
346
+ },
347
+ "Pashto": {
348
+ "Gul Nawaz": "ps-AF-GulNawazNeural",
349
+ "Latifa": "ps-AF-LatifaNeural"
350
+ },
351
+ "Romanian": {
352
+ "Alina": "ro-RO-AlinaNeural",
353
+ "Emil": "ro-RO-EmilNeural"
354
+ },
355
+ "Russian": {
356
+ "Svetlana": "ru-RU-SvetlanaNeural",
357
+ "Dmitry": "ru-RU-DmitryNeural"
358
+ },
359
+ "Sinhala": {
360
+ "Sameera": "si-LK-SameeraNeural",
361
+ "Thilini": "si-LK-ThiliniNeural"
362
+ },
363
+ "Slovak": {
364
+ "Lukas": "sk-SK-LukasNeural",
365
+ "Viktoria": "sk-SK-ViktoriaNeural"
366
+ },
367
+ "Slovenian": {
368
+ "Petra": "sl-SI-PetraNeural",
369
+ "Rok": "sl-SI-RokNeural"
370
+ },
371
+ "Somali": {
372
+ "Muuse": "so-SO-MuuseNeural",
373
+ "Ubax": "so-SO-UbaxNeural"
374
+ },
375
+ "Albanian": {
376
+ "Anila": "sq-AL-AnilaNeural",
377
+ "Ilir": "sq-AL-IlirNeural"
378
+ },
379
+ "Serbian": {
380
+ "Nicholas": "sr-RS-NicholasNeural",
381
+ "Sophie": "sr-RS-SophieNeural"
382
+ },
383
+ "Sundanese": {
384
+ "Jajang": "su-ID-JajangNeural",
385
+ "Tuti": "su-ID-TutiNeural"
386
+ },
387
+ "Swahili": {
388
+ "Rafiki": "sw-KE-RafikiNeural",
389
+ "Zuri": "sw-KE-ZuriNeural",
390
+ "Daudi": "sw-TZ-DaudiNeural",
391
+ "Rehema": "sw-TZ-RehemaNeural"
392
+ },
393
+ "Tamil": {
394
+ "Pallavi": "ta-IN-PallaviNeural",
395
+ "Valluvar": "ta-IN-ValluvarNeural",
396
+ "Kumar": "ta-LK-KumarNeural",
397
+ "Saranya": "ta-LK-SaranyaNeural",
398
+ "Kani": "ta-MY-KaniNeural",
399
+ "Surya": "ta-MY-SuryaNeural",
400
+ "Anbu": "ta-SG-AnbuNeural"
401
+ },
402
+ "Telugu": {
403
+ "Mohan": "te-IN-MohanNeural",
404
+ "Shruti": "te-IN-ShrutiNeural"
405
+ },
406
+ "Turkish": {
407
+ "Ahmet": "tr-TR-AhmetNeural",
408
+ "Emel": "tr-TR-EmelNeural"
409
+ },
410
+ "Ukrainian": {
411
+ "Ostap": "uk-UA-OstapNeural",
412
+ "Polina": "uk-UA-PolinaNeural"
413
+ },
414
+ "Urdu": {
415
+ "Gul": "ur-IN-GulNeural",
416
+ "Salman": "ur-IN-SalmanNeural",
417
+ "Asad": "ur-PK-AsadNeural",
418
+ "Uzma": "ur-PK-UzmaNeural"
419
+ },
420
+ "Uzbek": {
421
+ "Madina": "uz-UZ-MadinaNeural",
422
+ "Sardor": "uz-UZ-SardorNeural"
423
+ },
424
+ "Mandarin": {
425
+ "Xiaoxiao": "zh-CN-XiaoxiaoNeural",
426
+ "Yunyang": "zh-CN-YunyangNeural",
427
+ "Yunxi": "zh-CN-YunxiNeural",
428
+ "Xiaoyi": "zh-CN-XiaoyiNeural",
429
+ "Yunjian": "zh-CN-YunjianNeural",
430
+ "Yunxia": "zh-CN-YunxiaNeural",
431
+ "Xiaobei": "zh-CN-liaoning-XiaobeiNeural",
432
+ "Xiaoni": "zh-CN-shaanxi-XiaoniNeural",
433
+ "HiuMaan": "zh-HK-HiuMaanNeural",
434
+ "HiuGaai": "zh-HK-HiuGaaiNeural",
435
+ "WanLung": "zh-HK-WanLungNeural",
436
+ "HsiaoChen": "zh-TW-HsiaoChenNeural",
437
+ "HsiaoYu": "zh-TW-HsiaoYuNeural",
438
+ "YunJhe": "zh-TW-YunJheNeural"
439
+ },
440
+ "Zulu": {
441
+ "Thando": "zu-ZA-ThandoNeural",
442
+ "Themba": "zu-ZA-ThembaNeural"
443
+ }
444
+ }
445
+
446
+ async def text_to_speech_edge(text, language_code, speaker, tashkeel_checkbox=False):
447
+
448
+ if language_code == "Arabic" and tashkeel_checkbox:
449
+ data = {"textArabic": text}
450
+ response = requests.post(tashkil_url, data=data)
451
+ response.encoding = 'utf-8'
452
+ text = response.text.strip()
453
+ voice = language_dict[language_code][speaker]
454
+ communicate = edge_tts.Communicate(text, voice)
455
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
456
+ tmp_path = tmp_file.name
457
+ await communicate.save(tmp_path)
458
+
459
+ print(tmp_path)
460
+ return text, tmp_path
461
+
462
+
463
+ def get_speakers(language):
464
+ print(language)
465
+ speakers = list(language_dict[language].keys())
466
+ return gr.Dropdown(choices=speakers, value=speakers[0], interactive=True), gr.Checkbox(visible=language == "Arabic", interactive=True)
467
+
468
+
469
+ default_language = None
470
+ default_speaker = None
471
+ with gr.Blocks(title="Multilingual TTS") as demo:
472
+ gr.HTML("<center><h1>Multilingual TTS (Edge TTS)</h1></center>")
473
+ gr.HTML(f"<h2 style='color:Tomato;'> {len(language_dict)} languages supported</h3>")
474
+ gr.HTML(f"<p> {', '.join(language_dict.keys())} </h3>")
475
+ gr.Markdown("**Note:** A special feature is added for Arabic language only.")
476
+ with gr.Row():
477
+ with gr.Column():
478
+ input_text = gr.Textbox(lines=5, label="Input Text", placeholder="Enter text to convert to speech")
479
+ language = gr.Dropdown(
480
+ choices=list(language_dict.keys()), value=default_language, label="Languages", interactive=True
481
+ )
482
+ speaker = gr.Dropdown(choices=[], value=default_speaker, label="Speakers", interactive=False)
483
+ tashkeel_checkbox = gr.Checkbox(label="Tashkeel", value=False, visible=False, interactive=False)
484
+ run_btn = gr.Button(value="Generate Audio", variant="primary")
485
+
486
+ with gr.Column():
487
+ output_text = gr.Textbox(label="Output Text")
488
+ output_audio = gr.Audio(type="filepath", label="Audio Output")
489
+
490
+ language.change(get_speakers, inputs=[language], outputs=[speaker, tashkeel_checkbox])
491
+ run_btn.click(text_to_speech_edge, inputs=[input_text, language, speaker, tashkeel_checkbox], outputs=[output_text, output_audio])
492
+
493
+ if __name__ == "__main__":
494
+ demo.queue().launch(share=False)
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio
2
+ edge-tts
3
+ requests