Spaces:
Sleeping
Sleeping
File size: 4,882 Bytes
8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b 60c97aa e4dc2fb 60c97aa e4dc2fb 60c97aa 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb 8404c1b e4dc2fb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | 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()
|