Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import MarianMTModel, MarianTokenizer | |
import torch | |
# Title and Description | |
st.set_page_config(page_title='Language Translation App', layout='centered') | |
st.title('Language Translation App') | |
st.write('Translate text between multiple languages using an open-source model.') | |
# Model Selection | |
def load_model(src_lang, tgt_lang): | |
if not torch.cuda.is_available(): | |
st.warning('CUDA is not available. The model will run on CPU, which may be slower.') | |
model_name = f'Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}' | |
tokenizer = MarianTokenizer.from_pretrained(model_name) | |
model = MarianMTModel.from_pretrained(model_name) | |
return tokenizer, model | |
# Sidebar for Language Selection | |
st.sidebar.header('Language Selection') | |
src_lang = st.sidebar.selectbox('Select Source Language', ['en', 'fr', 'es', 'de', 'it', 'pt', 'ru', 'zh', 'ja', 'ar'], index=0) | |
tgt_lang = st.sidebar.selectbox('Select Target Language', ['en', 'fr', 'es', 'de', 'it', 'pt', 'ru', 'zh', 'ja', 'ar'], index=1) | |
# Main Input Area | |
st.write('### Enter text to translate:') | |
text = st.text_area('Text Input', placeholder='Type your text here...') | |
# Translation Button | |
if st.button('Translate'): | |
if text.strip() == '': | |
st.warning('Please enter text to translate.') | |
else: | |
try: | |
tokenizer, model = load_model(src_lang, tgt_lang) | |
inputs = tokenizer.encode(text, return_tensors='pt') | |
translated = model.generate(inputs, max_length=1000, num_beams=5, early_stopping=True) | |
result = tokenizer.decode(translated[0], skip_special_tokens=True) | |
st.success('### Translated Text:') | |
st.write(result) | |
except Exception as e: | |
st.error(f'Error: {e}') | |
# Footer | |
st.sidebar.write('Powered by Helsinki-NLP/opus-mt') | |
st.sidebar.write('Built with Streamlit') | |
# Instructions for Running | |
st.write('**To run the app:**') | |
st.code('streamlit run app.py') | |