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