Nehal07 commited on
Commit
3854d49
·
verified ·
1 Parent(s): 9cb40d6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -25
app.py CHANGED
@@ -1,9 +1,9 @@
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:
@@ -11,11 +11,8 @@ except ImportError:
11
  os.system("pip install sentencepiece")
12
  import sentencepiece
13
 
14
- # Streamlit app
15
- st.title("Text Translator with Voice")
16
-
17
- # Input text
18
- user_text = st.text_input("Enter the text you want to translate:")
19
 
20
  # Define a dictionary of language codes and their full names
21
  language_names = {
@@ -70,28 +67,43 @@ def translate_text(text, target_language_code):
70
  except Exception as e:
71
  return f"Translation failed: {str(e)}"
72
 
73
- # Target language selection
 
 
 
 
 
 
 
 
 
 
74
  st.subheader("Select the target language for translation:")
75
- selected_target_language = st.selectbox("Select a target language:", list(language_names.keys()))
76
 
77
- # Display the translated text and speak it
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)
 
1
  import streamlit as st
2
  from transformers import MarianMTModel, MarianTokenizer
3
+ import pyttsx3
4
+ import time
5
 
6
+ # Install required libraries if not already installed
7
  try:
8
  import sentencepiece
9
  except ImportError:
 
11
  os.system("pip install sentencepiece")
12
  import sentencepiece
13
 
14
+ # Streamlit app title
15
+ st.title("🌍 Advanced Text Translator with Voice")
 
 
 
16
 
17
  # Define a dictionary of language codes and their full names
18
  language_names = {
 
67
  except Exception as e:
68
  return f"Translation failed: {str(e)}"
69
 
70
+ # Function to initialize the TTS engine
71
+ def init_tts_engine():
72
+ engine = pyttsx3.init()
73
+ engine.setProperty('rate', 150) # Speed of speech
74
+ engine.setProperty('volume', 1.0) # Volume level (0.0 to 1.0)
75
+ return engine
76
+
77
+ # Streamlit UI
78
+ st.subheader("Enter the text you want to translate:")
79
+ user_text = st.text_input("Input text:", placeholder="Type your text here...")
80
+
81
  st.subheader("Select the target language for translation:")
82
+ selected_target_language = st.selectbox("Target language:", list(language_names.keys()))
83
 
84
+ # Translate and speak the text
85
  if user_text:
86
+ with st.spinner("Translating text..."):
87
+ translated_text = translate_text(user_text, language_names[selected_target_language])
88
 
89
  if "Translation failed" not in translated_text:
90
+ # Display translated text in a styled box
91
+ st.success("Translation successful! 🎉")
92
+ st.markdown(
93
+ f'<div style="border: 2px solid #0072B5; padding: 10px; background-color: #E5E5E5; border-radius: 5px; color: black;">'
94
+ f'<b>Translated Text:</b> {translated_text}'
95
+ f'</div>',
96
+ unsafe_allow_html=True
97
+ )
 
 
 
98
 
99
+ # Convert translated text to speech
100
+ with st.spinner("Generating audio..."):
101
+ try:
102
+ engine = init_tts_engine()
103
+ engine.say(translated_text)
104
+ engine.runAndWait()
105
+ st.success("Audio playback complete! 🔊")
106
+ except Exception as e:
107
+ st.error(f"Text-to-speech failed: {str(e)}")
108
  else:
109
  st.error(translated_text)