HFUsman commited on
Commit
d97878e
·
verified ·
1 Parent(s): 1a90f3e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from transformers import MarianMTModel, MarianTokenizer
3
+
4
+ # Function to load 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
+ # Function to translate text
12
+ def translate_text(text, model, tokenizer):
13
+ inputs = tokenizer(text, return_tensors="pt", padding=True)
14
+ translated = model.generate(**inputs)
15
+ return tokenizer.decode(translated[0], skip_special_tokens=True)
16
+
17
+ # Streamlit app layout
18
+ st.title("Language Translator App")
19
+ st.write("Translate text between multiple languages using open-source models.")
20
+
21
+ # Language options (expand this list based on available models)
22
+ languages = {
23
+ "English": "en",
24
+ "French": "fr",
25
+ "Spanish": "es",
26
+ "German": "de",
27
+ "Italian": "it",
28
+ "Russian": "ru",
29
+ "Chinese": "zh"
30
+ }
31
+
32
+ # Language selection
33
+ source_language = st.selectbox("Select Input Language:", options=list(languages.keys()))
34
+ target_language = st.selectbox("Select Output Language:", options=list(languages.keys()))
35
+
36
+ # Check if source and target languages are different
37
+ if source_language == target_language:
38
+ st.warning("Input and output languages must be different.")
39
+ else:
40
+ src_lang_code = languages[source_language]
41
+ tgt_lang_code = languages[target_language]
42
+
43
+ # Load model and tokenizer
44
+ with st.spinner("Loading translation model..."):
45
+ model, tokenizer = load_model_and_tokenizer(src_lang_code, tgt_lang_code)
46
+
47
+ # Input text
48
+ text_to_translate = st.text_area("Enter text to translate:")
49
+
50
+ if st.button("Translate"):
51
+ if text_to_translate.strip():
52
+ with st.spinner("Translating..."):
53
+ translated_text = translate_text(text_to_translate, model, tokenizer)
54
+ st.success("Translation Completed!")
55
+ st.text_area("Translated Text:", value=translated_text, height=200)
56
+ else:
57
+ st.error("Please enter text to translate.")