import streamlit as st
import asyncio
import edge_tts
import os
# تحسين مظهر التطبيق للموبايل
st.set_page_config(page_title="مُحول الصوت المصري", page_icon="🎙️")
st.markdown("
🎙️ محول النص لصوت مصري حماسي
", unsafe_allow_index=True)
# قائمة الأصوات
VOICES = {
"شاكر (رجل - مصري حماسي)": "ar-EG-ShakirNeural",
"سلمى (أنثى - مصرية هادئة)": "ar-EG-SalmaNeural"
}
# واجهة بسيطة
voice_choice = st.selectbox("اختر الصوت:", list(VOICES.keys()))
text_to_say = st.text_area("اكتب النص بالعامية المصرية:", "يا مساء الفل! التطبيق ده شغال مية مية على الموبايل يا بطل!", height=150)
# إعدادات الحماس
col1, col2 = st.columns(2)
with col1:
speed = st.slider("السرعة (الحماس):", 0, 50, 15)
with col2:
pitch = st.slider("النبرة:", -20, 20, 0)
async def generate_audio(text, voice, rate, pitch):
rate_str = f"+{rate}%"
pitch_str = f"{pitch:+}Hz"
communicate = edge_tts.Communicate(text, voice, rate=rate_str, pitch=pitch_str)
await communicate.save("output.mp3")
if st.button("تحويل وتشغيل الصوت 🚀", use_container_width=True):
if text_to_say:
with st.spinner("جاري التحويل..."):
asyncio.run(generate_audio(text_to_say, VOICES[voice_choice], speed, pitch))
# تشغيل الصوت
audio_file = open("output.mp3", "rb")
audio_bytes = audio_file.read()
st.audio(audio_bytes, format="audio/mp3")
# تحميل الملف
st.download_button(
label="حفظ الصوت MP3 على الموبايل",
data=audio_bytes,
file_name="egypt_voice.mp3",
mime="audio/mp3",
use_container_width=True
)
else:
st.error("اكتب نص أولاً!")