Mohammed Ali Taher Mohammed
Update app.py
e8355f3 verified
Raw
History Blame Contribute Delete
2.53 kB
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from gtts import gTTS
import os
# 1. استخدام نموذج خفيف وسريع متوافق تماماً مع البيئات المجانية
print("Loading light-weight model and tokenizer...")
model_name = "sshleifer/distilbart-cnn-12-6"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
def process_text(text):
if not text.strip():
return "الرجاء إدخال نص صالح للتلخيص.", None
try:
# 2. تحويل النص إلى تنسيق يفهمه النموذج
inputs = tokenizer([text], max_length=1024, return_tensors="pt", truncation=True)
# 3. توليد التلخيص مباشرة ببارامترات مستقرة
summary_ids = model.generate(
inputs["input_ids"],
num_beams=2,
max_length=140,
min_length=30,
early_stopping=True
)
summary_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
# 4. تحويل التلخيص النصي إلى ملف صوتي
tts = gTTS(text=summary_text, lang='en')
audio_path = "summary_audio.mp3"
tts.save(audio_path)
return summary_text, audio_path
except Exception as e:
return f"حدث خطأ أثناء معالجة النص: {str(e)}", None
# بناء واجهة المستخدم باستخدام Gradio
theme = gr.themes.Soft(primary_hue="blue", secondary_hue="indigo")
with gr.Blocks(theme=theme) as demo:
gr.Markdown("# 🤖 AI Text Summarizer & Audio Generator")
gr.Markdown("قم بلصق أي نص إنجليزي طويل للحصول على تلخيص ذكي وملف صوتي للملخص تلقائياً.")
with gr.Row():
with gr.Column():
input_text = gr.Textbox(label="Input Text (النص الأصلي)", lines=10, placeholder="Enter or paste your long text here...")
submit_btn = gr.Button("Generate Summary & Audio", variant="primary")
with gr.Column():
output_summary = gr.Textbox(label="AI Summary (التلخيص الذكي)", lines=5)
output_audio = gr.Audio(label="Audio Playback (الملف الصوتي)", type="filepath")
submit_btn.click(fn=process_text, inputs=input_text, outputs=[output_summary, output_audio])
if __name__ == "__main__":
demo.launch()