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("اكتب نص أولاً!")