import gradio as gr import edge_tts import asyncio import os # Arabic voices from Microsoft Edge TTS (very natural sounding!) ARABIC_VOICES = { "ذكر - صوت عمر (مصري)": "ar-EG-ShakirNeural", "أنثى - صوت سلمى (مصري)": "ar-EG-SalmaNeural", "ذكر - صوت حامد (سعودي)": "ar-SA-HamedNeural", "أنثى - صوت زرياء (سعودي)": "ar-SA-ZariyahNeural", "ذكر - صوت عمر (عام)": "ar-AE-HamdanNeural", "أنثى - صوت فاطمة (عام)": "ar-AE-FatimaNeural", } async def generate_speech(text, voice_name): """Generate speech using Edge TTS""" if not text.strip(): return None, "⚠️ الرجاء إدخال نص" try: output_file = "output.mp3" # Create TTS communication communicate = edge_tts.Communicate(text, voice_name) # Generate and save audio await communicate.save(output_file) return output_file, f"✅ تم توليد الصوت بنجاح باستخدام: {voice_name}" except Exception as e: return None, f"❌ خطأ: {str(e)}" def generate_speech_sync(text, voice_key): """Synchronous wrapper for async function""" voice_name = ARABIC_VOICES.get(voice_key, list(ARABIC_VOICES.values())[0]) return asyncio.run(generate_speech(text, voice_name)) # Build Gradio interface with gr.Blocks( title="Arabic TTS - Professional", theme=gr.themes.Soft() ) as demo: gr.Markdown(""" # 🎙️ محول النص إلى كلام العربي الاحترافي ### باستخدام تقنية Microsoft Azure TTS - أصوات طبيعية جداً! **مميزات:** - ✨ أصوات طبيعية بجودة عالية جداً - 🌍 لهجات عربية متنوعة (مصرية، سعودية، إماراتية) - ⚡ سريع وموثوق - 🎯 دعم كامل للتشكيل والنطق الصحيح """) with gr.Row(): with gr.Column(): # Text input text_input = gr.Textbox( label="📝 النص العربي", placeholder="اكتب النص الذي تريد تحويله إلى كلام...", lines=6, value="مرحباً بك في محول النص إلى كلام العربي الاحترافي. هذا النظام يستخدم تقنية متقدمة لتوليد صوت طبيعي جداً.", ) # Voice selection voice_dropdown = gr.Dropdown( choices=list(ARABIC_VOICES.keys()), value=list(ARABIC_VOICES.keys())[0], label="🎤 اختر الصوت", ) # Generate button generate_btn = gr.Button( "🚀 توليد الصوت", variant="primary", size="lg" ) with gr.Column(): # Audio output audio_output = gr.Audio( label="🔊 الصوت المولد", type="filepath" ) # Status status_output = gr.Textbox( label="الحالة", interactive=False ) # Examples gr.Markdown("---") gr.Markdown("### 💡 أمثلة تجريبية") gr.Examples( examples=[ ["السلام عليكم ورحمة الله وبركاته، كيف حالكم اليوم؟"], ["الذكاء الاصطناعي يُحدث ثورة في عالم التكنولوجيا بشكل سريع ومذهل."], ["مرحباً بكم في عالم التقنية الحديثة والابتكار المستمر."], ["العِلمُ نورٌ والجَهلُ ظلامٌ، فاطلُبوا العِلمَ مِن المَهدِ إلى اللَّحدِ."], ], inputs=[text_input], ) # Notes gr.Markdown(""" --- ### 📌 ملاحظات مهمة: - **اللهجات**: اختر اللهجة المناسبة حسب احتياجك - **التشكيل**: إضافة التشكيل يحسن النطق بشكل كبير - **الجودة**: الأصوات المستخدمة هي من أفضل ما هو متاح حالياً - **السرعة**: التوليد سريع جداً (أقل من 5 ثوانٍ) ### 🎯 اللهجات المتوفرة: - **مصرية**: صوت طبيعي جداً مع لهجة مصرية واضحة - **سعودية**: صوت خليجي احترافي - **إماراتية**: صوت عربي فصيح مع نبرة خليجية """) # Connect button to function generate_btn.click( fn=generate_speech_sync, inputs=[text_input, voice_dropdown], outputs=[audio_output, status_output] ) # Launch if __name__ == "__main__": demo.launch()