Nehal07 commited on
Commit
9cb40d6
·
verified ·
1 Parent(s): 6b7d89d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -19
app.py CHANGED
@@ -1,9 +1,16 @@
1
  import streamlit as st
2
  from transformers import MarianMTModel, MarianTokenizer
3
- from datasets import load_dataset
4
  from gtts import gTTS
5
  import os
6
 
 
 
 
 
 
 
 
 
7
  # Streamlit app
8
  st.title("Text Translator with Voice")
9
 
@@ -31,11 +38,16 @@ language_names = {
31
  }
32
 
33
  # Function to load the translation model and tokenizer
 
34
  def load_translation_model(language_pair):
35
- model_name = f'Helsinki-NLP/opus-mt-{language_pair}'
36
- model = MarianMTModel.from_pretrained(model_name)
37
- tokenizer = MarianTokenizer.from_pretrained(model_name)
38
- return model, tokenizer
 
 
 
 
39
 
40
  # Function to translate text
41
  def translate_text(text, target_language_code):
@@ -44,6 +56,9 @@ def translate_text(text, target_language_code):
44
  language_pair = f'en-{target_language_code}'
45
  model, tokenizer = load_translation_model(language_pair)
46
 
 
 
 
47
  # Tokenize the input text
48
  inputs = tokenizer(text, return_tensors="pt", padding=True)
49
 
@@ -63,17 +78,20 @@ selected_target_language = st.selectbox("Select a target language:", list(langua
63
  if user_text:
64
  translated_text = translate_text(user_text, language_names[selected_target_language])
65
 
66
- # Apply advanced CSS for better display in a bordered box
67
- styled_text = f'<div style="border: 2px solid #0072B5; padding: 10px; background-color: #E5E5E5; border-radius: 5px; color: black;">{translated_text}</div>'
68
- st.markdown(styled_text, unsafe_allow_html=True)
69
-
70
- # Text-to-Speech (TTS) conversion and playback
71
- tts = gTTS(translated_text, lang=language_names[selected_target_language])
72
- tts_file_path = "translated_audio.mp3"
73
- tts.save(tts_file_path)
74
-
75
- # Play the TTS audio
76
- st.audio(tts_file_path, format="audio/mp3")
77
-
78
- # Clean up the TTS audio file
79
- os.remove(tts_file_path)
 
 
 
 
1
  import streamlit as st
2
  from transformers import MarianMTModel, MarianTokenizer
 
3
  from gtts import gTTS
4
  import os
5
 
6
+ # Install SentencePiece if not already installed
7
+ try:
8
+ import sentencepiece
9
+ except ImportError:
10
+ st.warning("The SentencePiece library is required but not installed. Installing now...")
11
+ os.system("pip install sentencepiece")
12
+ import sentencepiece
13
+
14
  # Streamlit app
15
  st.title("Text Translator with Voice")
16
 
 
38
  }
39
 
40
  # Function to load the translation model and tokenizer
41
+ @st.cache_resource
42
  def load_translation_model(language_pair):
43
+ try:
44
+ model_name = f'Helsinki-NLP/opus-mt-{language_pair}'
45
+ model = MarianMTModel.from_pretrained(model_name)
46
+ tokenizer = MarianTokenizer.from_pretrained(model_name)
47
+ return model, tokenizer
48
+ except Exception as e:
49
+ st.error(f"Failed to load model for language pair {language_pair}: {str(e)}")
50
+ return None, None
51
 
52
  # Function to translate text
53
  def translate_text(text, target_language_code):
 
56
  language_pair = f'en-{target_language_code}'
57
  model, tokenizer = load_translation_model(language_pair)
58
 
59
+ if model is None or tokenizer is None:
60
+ return "Translation failed: Model or tokenizer not loaded."
61
+
62
  # Tokenize the input text
63
  inputs = tokenizer(text, return_tensors="pt", padding=True)
64
 
 
78
  if user_text:
79
  translated_text = translate_text(user_text, language_names[selected_target_language])
80
 
81
+ if "Translation failed" not in translated_text:
82
+ # Apply advanced CSS for better display in a bordered box
83
+ styled_text = f'<div style="border: 2px solid #0072B5; padding: 10px; background-color: #E5E5E5; border-radius: 5px; color: black;">{translated_text}</div>'
84
+ st.markdown(styled_text, unsafe_allow_html=True)
85
+
86
+ # Text-to-Speech (TTS) conversion and playback
87
+ tts = gTTS(translated_text, lang=language_names[selected_target_language])
88
+ tts_file_path = "translated_audio.mp3"
89
+ tts.save(tts_file_path)
90
+
91
+ # Play the TTS audio
92
+ st.audio(tts_file_path, format="audio/mp3")
93
+
94
+ # Clean up the TTS audio file
95
+ os.remove(tts_file_path)
96
+ else:
97
+ st.error(translated_text)