File size: 1,930 Bytes
13577bb
ebe552f
 
13577bb
ebe552f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13577bb
ebe552f
 
 
 
13577bb
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

from transformers import pipeline
import gradio as gr

# Input language translators (to English)
input_translators = {
    "Hindi": pipeline("translation_hi_to_en", model="Helsinki-NLP/opus-mt-hi-en"),
    "French": pipeline("translation_fr_to_en", model="Helsinki-NLP/opus-mt-fr-en"),
    "German": pipeline("translation_de_to_en", model="Helsinki-NLP/opus-mt-de-en"),
    "English": None  # No translation needed
}

# Summarization model
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

# Output translators (English → target)
output_translators = {
    "None": None,
    "Hindi": pipeline("translation_en_to_hi", model="Helsinki-NLP/opus-mt-en-hi"),
    "French": pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr"),
    "German": pipeline("translation_en_to_de", model="Helsinki-NLP/opus-mt-en-de"),
}

def summarize_multilang(text, input_lang, output_lang):
    # Step 1: Translate to English (if needed)
    if input_lang != "English":
        translator = input_translators[input_lang]
        text = translator(text)[0]['translation_text']
    
    # Step 2: Summarize
    summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text']
    
    # Step 3: Translate summary (if needed)
    if output_lang != "None":
        summary = output_translators[output_lang](summary)[0]['translation_text']
    
    return summary

# Gradio interface
gr.Interface(
    fn=summarize_multilang,
    inputs=[
        gr.Textbox(lines=10, label="Input Text"),
        gr.Dropdown(choices=["English", "Hindi", "French", "German"], label="Input Language"),
        gr.Dropdown(choices=["None", "Hindi", "French", "German"], label="Translate Summary To")
    ],
    outputs=gr.Textbox(label="Final Summary"),
    title="SummarAI",
    description="Supports input in Hindi, French, German, or English. Summarizes and optionally translates the summary."
).launch()