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