File size: 2,530 Bytes
e7d5023
815a2fa
e7d5023
 
 
1db1c25
 
 
4fa8371
 
 
e7d5023
 
 
 
1db1c25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7d5023
4fa8371
e7d5023
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e8355f3
e7d5023
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
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()