File size: 4,625 Bytes
13577bb
e304530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ebe552f
 
13577bb
ebe552f
 
 
 
 
e304530
ebe552f
 
 
 
 
 
 
 
 
 
 
 
e304530
 
ebe552f
 
 
 
e304530
ebe552f
 
e304530
 
ebe552f
 
 
 
e304530
 
7ceca8f
e304530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

# 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()



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
}

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

# Output translators (English → target)
output_translators = {
    "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, toggle_translation, output_lang):
    # Step 1: Translate input to English (if needed)
    if input_lang != "English":
        translator = input_translators[input_lang]
        text = translator(text)[0]['translation_text']
    
    # Step 2: Summarize in English
    summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text']
    
    # Step 3: Optionally translate the summary
    if toggle_translation and output_lang in output_translators:
        summary = output_translators[output_lang](summary)[0]['translation_text']
    
    return summary

# Gradio Interface with Toggle
with gr.Blocks() as demo:
    gr.Markdown("#  SummarAI ")
    gr.Markdown("Summarize your content in multiple languages. Optionally translate the summary!")

    with gr.Row():
        input_text = gr.Textbox(lines=10, label="Input Text", placeholder="Paste or type your content here...")
    
    with gr.Row():
        input_lang = gr.Dropdown(choices=["English", "Hindi", "French", "German"], label="Input Language", value="English")
        toggle_translation = gr.Checkbox(label="Translate Summary?", value=False)
        output_lang = gr.Dropdown(choices=["Hindi", "French", "German"], label="Translate Summary To", visible=False)

    output_summary = gr.Textbox(label="Final Summary")

    # Toggle visibility logic
    def update_output_lang_visibility(toggle):
        return gr.update(visible=toggle)

    toggle_translation.change(update_output_lang_visibility, inputs=toggle_translation, outputs=output_lang)

    submit_btn = gr.Button("Summarize")
    submit_btn.click(
        fn=summarize_multilang,
        inputs=[input_text, input_lang, toggle_translation, output_lang],
        outputs=output_summary
    )

demo.launch()