Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import MarianMTModel, MarianTokenizer | |
# Function to load model and tokenizer | |
def load_model_and_tokenizer(model_name): | |
tokenizer = MarianTokenizer.from_pretrained(model_name) | |
model = MarianMTModel.from_pretrained(model_name) | |
return tokenizer, model | |
# Function to perform translation | |
def translate_text(text, tokenizer, model): | |
tokenized_text = tokenizer.prepare_seq2seq_batch([text], return_tensors="pt", padding=True) | |
translated_tokens = model.generate(**tokenized_text) | |
translated_text = tokenizer.decode(translated_tokens[0], skip_special_tokens=True) | |
return translated_text | |
# Available language pairs (from Helsinki-NLP models) | |
language_pairs = { | |
"English to French": "Helsinki-NLP/opus-mt-en-fr", | |
"French to English": "Helsinki-NLP/opus-mt-fr-en", | |
"English to German": "Helsinki-NLP/opus-mt-en-de", | |
"German to English": "Helsinki-NLP/opus-mt-de-en", | |
"English to Spanish": "Helsinki-NLP/opus-mt-en-es", | |
"Spanish to English": "Helsinki-NLP/opus-mt-es-en", | |
# Add more pairs as needed | |
} | |
# Streamlit App | |
st.title("Language Translation App") | |
st.write("Translate text between multiple languages using open-source models.") | |
# User selects language pair | |
language_pair = st.selectbox("Select Language Pair:", list(language_pairs.keys())) | |
model_name = language_pairs[language_pair] | |
# Load model and tokenizer | |
with st.spinner("Loading translation model..."): | |
tokenizer, model = load_model_and_tokenizer(model_name) | |
# Input text | |
input_text = st.text_area("Enter text to translate:") | |
if st.button("Translate"): | |
if input_text.strip(): | |
with st.spinner("Translating..."): | |
translated_text = translate_text(input_text, tokenizer, model) | |
st.success("Translation complete!") | |
st.text_area("Translated Text:", translated_text, height=200) | |
else: | |
st.warning("Please enter text to translate.") | |