ntam0001's picture
Update app.py
dea2cef verified
import gradio as gr
from transformers import MarianMTModel, MarianTokenizer
# Assuming the environment is set up for GPU use if available
# This is more about the environment setup than code modification
# Define a function that loads a model and tokenizer based on the chosen language
def load_model(lang_pair):
model_name = {
"English to French": 'Helsinki-NLP/opus-mt-en-fr',
"Kinyarwanda to English": 'Helsinki-NLP/opus-mt-rw-en'
}[lang_pair]
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
return model, tokenizer
# Example function that could be used for caching (conceptual implementation)
cache = {}
def get_translation_from_cache_or_model(model, tokenizer, text):
if text in cache:
return cache[text]
model_inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
gen = model.generate(**model_inputs)
translation = tokenizer.batch_decode(gen, skip_special_tokens=True)[0]
cache[text] = translation
return translation
# Function to translate text based on selected language
def translate(lang_pair, text):
model, tokenizer = load_model(lang_pair)
# Use the caching function
translation = get_translation_from_cache_or_model(model, tokenizer, text)
return translation
# Create a Gradio interface with a dropdown menu for language selection
iface = gr.Interface(
fn=translate,
inputs=[gr.Dropdown(choices=["English to French", "Kinyarwanda to English"], label="Select Language Pair"),
gr.Textbox(lines=2, placeholder="Enter Text...")],
outputs=gr.Textbox(label="Translation")
)
# Launch the interface
iface.launch(debug=True,inline=False)