amnacodes's picture
Upload app.py
be00137 verified
Raw History Blame Contribute Delete
1.84 kB
# -*- coding: utf-8 -*-
"""app.py
Automatically generated by Colab.
Original file is located at
https://colab.research.google.com/drive/1UBKp9Q5WTAiaXvsRK_6KupUXBI3i05wH
"""
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import gradio as gr
# Dictionary mapping target languages to Helsinki models
LANG_MODELS = {
"German": "Helsinki-NLP/opus-mt-en-de",
"French": "Helsinki-NLP/opus-mt-en-fr",
"Spanish": "Helsinki-NLP/opus-mt-en-es",
"Italian": "Helsinki-NLP/opus-mt-en-it",
"Japanese": "Helsinki-NLP/opus-mt-en-jap",
}
# Preload models for speed (optional, you can also load on demand)
model_cache = {}
tokenizer_cache = {}
def translate_text_multi(text, target_lang):
model_name = LANG_MODELS.get(target_lang)
if not model_name:
return "Error: language not supported."
# Load model/tokenizer if not already loaded
if model_name not in model_cache:
tokenizer_cache[model_name] = AutoTokenizer.from_pretrained(model_name)
model_cache[model_name] = AutoModelForSeq2SeqLM.from_pretrained(model_name)
tokenizer = tokenizer_cache[model_name]
model = model_cache[model_name]
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs)
translated = tokenizer.decode(outputs[0], skip_special_tokens=True)
return translated
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("## 🌐 Multi-language Translator")
input_text = gr.Textbox(label="Enter English text", lines=4)
target_language = gr.Dropdown(choices=list(LANG_MODELS.keys()), value="German", label="Target Language")
output_text = gr.Textbox(label="Translation", lines=4)
translate_btn = gr.Button("Translate")
translate_btn.click(fn=translate_text_multi, inputs=[input_text, target_language], outputs=output_text)
demo.launch()