# app.py from transformers import pipeline, MBart50Tokenizer, MBartForConditionalGeneration from langdetect import detect import gradio as gr # Summarization pipeline (English) summarizer = pipeline("summarization", model="facebook/bart-large-cnn") # Translation model (MBart multilingual) model_name = "facebook/mbart-large-50-many-to-many-mmt" tokenizer = MBart50Tokenizer.from_pretrained(model_name) translator = MBartForConditionalGeneration.from_pretrained(model_name) # Supported languages mapping lang_map = { "en": "en_XX", "hi": "hi_IN", "fr": "fr_XX", "de": "de_DE", "es": "es_XX", "it": "it_IT", "ta": "ta_IN", "bn": "bn_IN", } def translate_text(text, src_lang, tgt_lang): tokenizer.src_lang = src_lang encoded = tokenizer(text, return_tensors="pt") generated_tokens = translator.generate(**encoded, forced_bos_token_id=tokenizer.lang_code_to_id[tgt_lang]) return tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0] def summarize_multilingual(text): if not text or len(text.strip()) == 0: return "⚠️ Please enter some text to summarize." # Detect language try: lang = detect(text) except: lang = "en" if lang not in lang_map: lang = "en" src_lang = lang_map[lang] tgt_lang = "en_XX" # summarize in English first # If input not English → translate to English if src_lang != "en_XX": text = translate_text(text, src_lang, tgt_lang) # Summarize summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text'] # Translate summary back to original language if src_lang != "en_XX": summary = translate_text(summary, "en_XX", src_lang) return f"🌐 Detected language: {lang}\n\n🧠 Summary:\n{summary}" # Gradio Interface demo = gr.Interface( fn=summarize_multilingual, inputs=gr.Textbox(lines=12, placeholder="Paste text in English, Hindi, French, etc..."), outputs=gr.Textbox(label="🌍 Multilingual Summary"), title="🌍 Multilingual Text Summarizer using Hugging Face 🤗", description="Supports English, Hindi, French, German, Spanish, Tamil, Bengali, and more.", examples=[ ["Artificial Intelligence is transforming industries across the world with automation and intelligent data insights."], ["कृत्रिम बुद्धिमत्ता स्वचालन और डेटा अंतर्दृष्टि के माध्यम से उद्योगों को बदल रही है।"], ["L'intelligence artificielle transforme les industries grâce à l'automatisation et à l'analyse des données."] ] ) if __name__ == "__main__": demo.launch()