CoderHassan's picture
Update app.py
d81bbb8 verified
raw
history blame
1.82 kB
import streamlit as st
from transformers import MarianMTModel, MarianTokenizer
# Function to load a translation model
@st.cache_resource
def load_model(src_lang, tgt_lang):
model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}"
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
return model, tokenizer
def translate_text(text, model, tokenizer):
inputs = tokenizer.encode(text, return_tensors="pt", truncation=True)
outputs = model.generate(inputs, max_length=512, num_beams=5, early_stopping=True)
translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
return translated_text
# Streamlit UI
st.title("Multi-Language Translator")
st.sidebar.header("Translation Settings")
# Input source and target languages
src_lang = st.sidebar.text_input("Enter source language code (e.g., 'en' for English):", "en")
tgt_lang = st.sidebar.text_input("Enter target language code (e.g., 'ur' for Urdu):", "ur")
# Validate language codes
if not src_lang.strip() or not tgt_lang.strip():
st.sidebar.error("Please enter valid source and target language codes.")
else:
# Load the selected model
try:
st.sidebar.write(f"Model: `{src_lang}-{tgt_lang}`")
model, tokenizer = load_model(src_lang.strip(), tgt_lang.strip())
# Input text
text_to_translate = st.text_area("Enter text to translate:")
# Translate and display output
if text_to_translate.strip():
with st.spinner("Translating..."):
translated_text = translate_text(text_to_translate, model, tokenizer)
st.markdown(f"### Translated Text:\n{translated_text}")
except Exception as e:
st.error(f"Error loading model for `{src_lang}-{tgt_lang}`: {str(e)}")