Engineer786 commited on
Commit
e84b59a
·
verified ·
1 Parent(s): 5abbe7d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -10
app.py CHANGED
@@ -1,41 +1,40 @@
1
  import streamlit as st
2
  from transformers import MarianMTModel, MarianTokenizer
 
3
 
4
- # Define a function to load the model and tokenizer based on selected languages
5
  def load_model_and_tokenizer(src_lang, tgt_lang):
6
  model_name = f'Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}'
7
  model = MarianMTModel.from_pretrained(model_name)
8
  tokenizer = MarianTokenizer.from_pretrained(model_name)
9
  return model, tokenizer
10
 
11
- # Define a function for translation
12
  def translate_text(text, model, tokenizer):
13
- inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
 
 
14
  translated = model.generate(**inputs)
15
  return tokenizer.decode(translated[0], skip_special_tokens=True)
16
 
17
- # Streamlit UI
18
  st.set_page_config(page_title="Language Translator", layout="wide")
19
  st.title("🌍 Language Translator")
20
  st.markdown("Translate text quickly and easily between multiple languages using open-source models.")
21
 
22
- # Language options (You can extend this list as needed)
23
  language_codes = {
24
- "English": "en", "Spanish": "es", "French": "fr", "German": "de", "Chinese": "zh", "Japanese": "ja", "Hindi": "hi", "Arabic": "ar", "Russian": "ru", "Portuguese": "pt",
 
 
25
  }
26
 
27
- # User inputs for source and target languages
28
  col1, col2 = st.columns(2)
29
  with col1:
30
  source_language = st.selectbox("Select source language:", options=language_codes.keys(), index=0)
31
  with col2:
32
  target_language = st.selectbox("Select target language:", options=language_codes.keys(), index=1)
33
 
34
- # Input text
35
  st.subheader("Input Text")
36
  input_text = st.text_area("Enter the text you want to translate:", height=150)
37
 
38
- # Translation logic
39
  if st.button("Translate"):
40
  if not input_text.strip():
41
  st.error("Please enter text to translate.")
@@ -53,6 +52,5 @@ if st.button("Translate"):
53
  except Exception as e:
54
  st.error(f"An error occurred: {e}")
55
 
56
- # Footer
57
  st.markdown("---")
58
  st.markdown("Developed using [Helsinki-NLP](https://huggingface.co/Helsinki-NLP) open-source models and Streamlit.")
 
1
  import streamlit as st
2
  from transformers import MarianMTModel, MarianTokenizer
3
+ import torch
4
 
5
+ @st.cache_resource
6
  def load_model_and_tokenizer(src_lang, tgt_lang):
7
  model_name = f'Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}'
8
  model = MarianMTModel.from_pretrained(model_name)
9
  tokenizer = MarianTokenizer.from_pretrained(model_name)
10
  return model, tokenizer
11
 
 
12
  def translate_text(text, model, tokenizer):
13
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
14
+ model = model.to(device)
15
+ inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True).to(device)
16
  translated = model.generate(**inputs)
17
  return tokenizer.decode(translated[0], skip_special_tokens=True)
18
 
 
19
  st.set_page_config(page_title="Language Translator", layout="wide")
20
  st.title("🌍 Language Translator")
21
  st.markdown("Translate text quickly and easily between multiple languages using open-source models.")
22
 
 
23
  language_codes = {
24
+ "English": "en", "Spanish": "es", "French": "fr", "German": "de",
25
+ "Chinese": "zh", "Japanese": "ja", "Hindi": "hi", "Arabic": "ar",
26
+ "Russian": "ru", "Portuguese": "pt",
27
  }
28
 
 
29
  col1, col2 = st.columns(2)
30
  with col1:
31
  source_language = st.selectbox("Select source language:", options=language_codes.keys(), index=0)
32
  with col2:
33
  target_language = st.selectbox("Select target language:", options=language_codes.keys(), index=1)
34
 
 
35
  st.subheader("Input Text")
36
  input_text = st.text_area("Enter the text you want to translate:", height=150)
37
 
 
38
  if st.button("Translate"):
39
  if not input_text.strip():
40
  st.error("Please enter text to translate.")
 
52
  except Exception as e:
53
  st.error(f"An error occurred: {e}")
54
 
 
55
  st.markdown("---")
56
  st.markdown("Developed using [Helsinki-NLP](https://huggingface.co/Helsinki-NLP) open-source models and Streamlit.")