Update app.py
Browse files
app.py
CHANGED
@@ -23,7 +23,8 @@ def main():
|
|
23 |
if 'translated_text' not in st.session_state:
|
24 |
st.session_state.translated_text = None
|
25 |
st.session_state.audio_path = None
|
26 |
-
st.session_state.source_lang =
|
|
|
27 |
|
28 |
with tab1:
|
29 |
# Text input
|
@@ -49,10 +50,25 @@ def main():
|
|
49 |
|
50 |
# Handle input processing
|
51 |
def handle_input(text, translation, lang_detect, audio_processor):
|
52 |
-
# Auto-detect source language
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
# Target language selection
|
58 |
target_lang = st.selectbox("Target Language", list(translation.LANGUAGES.keys()), index=1, key="target_lang")
|
@@ -79,6 +95,8 @@ def handle_input(text, translation, lang_detect, audio_processor):
|
|
79 |
st.session_state.audio_path = audio_processor.text_to_speech(st.session_state.translated_text, target_lang)
|
80 |
if st.session_state.audio_path:
|
81 |
st.audio(st.session_state.audio_path)
|
|
|
|
|
82 |
|
83 |
# Show footer after translation
|
84 |
st.markdown("""
|
|
|
23 |
if 'translated_text' not in st.session_state:
|
24 |
st.session_state.translated_text = None
|
25 |
st.session_state.audio_path = None
|
26 |
+
st.session_state.source_lang = None
|
27 |
+
st.session_state.detected_options = []
|
28 |
|
29 |
with tab1:
|
30 |
# Text input
|
|
|
50 |
|
51 |
# Handle input processing
|
52 |
def handle_input(text, translation, lang_detect, audio_processor):
|
53 |
+
# Auto-detect source language with options
|
54 |
+
if len(text) < 10: # Minimum length for reliable detection
|
55 |
+
detected_options = [("English", 1.0)] # Default to English with full confidence
|
56 |
+
else:
|
57 |
+
detected_options = lang_detect.detect_language(text)
|
58 |
+
st.session_state.detected_options = detected_options
|
59 |
+
|
60 |
+
# Set initial source language to the top detected option
|
61 |
+
st.session_state.source_lang = detected_options[0][0] if detected_options else "English"
|
62 |
+
|
63 |
+
# Manual language override with detected options
|
64 |
+
override_options = ["Auto"] + [lang for lang, _ in detected_options] + list(translation.LANGUAGES.keys())
|
65 |
+
override_lang = st.selectbox("Override Detected Language", override_options, index=0, key="override_lang")
|
66 |
+
if override_lang != "Auto":
|
67 |
+
st.session_state.source_lang = override_lang
|
68 |
+
elif len(detected_options) > 1:
|
69 |
+
st.write("Multiple detections found (confidence > 0.7):", ", ".join(f"{lang} ({conf:.2f})" for lang, conf in detected_options))
|
70 |
+
|
71 |
+
st.info(f"Selected Source Language: {st.session_state.source_lang}")
|
72 |
|
73 |
# Target language selection
|
74 |
target_lang = st.selectbox("Target Language", list(translation.LANGUAGES.keys()), index=1, key="target_lang")
|
|
|
95 |
st.session_state.audio_path = audio_processor.text_to_speech(st.session_state.translated_text, target_lang)
|
96 |
if st.session_state.audio_path:
|
97 |
st.audio(st.session_state.audio_path)
|
98 |
+
else:
|
99 |
+
st.error("Failed to generate audio. Please try again or check the input.")
|
100 |
|
101 |
# Show footer after translation
|
102 |
st.markdown("""
|