Create audio_processor.py
Browse files- audio_processor.py +16 -4
audio_processor.py
CHANGED
@@ -24,27 +24,39 @@ def transcribe_audio(audio_file):
|
|
24 |
return ""
|
25 |
|
26 |
def text_to_speech(text, target_lang):
|
27 |
-
"""Convert translated text to audio."""
|
28 |
try:
|
|
|
|
|
|
|
|
|
29 |
# Map target language to gTTS codes
|
30 |
lang_map = {
|
31 |
"English": "en",
|
32 |
"French": "fr",
|
33 |
"Spanish": "es",
|
34 |
"German": "de",
|
35 |
-
"Chinese": "zh",
|
36 |
"Arabic": "ar",
|
37 |
"Russian": "ru",
|
38 |
"Hindi": "hi",
|
39 |
-
"Japanese": "ja"
|
40 |
}
|
41 |
lang_code = lang_map.get(target_lang, "en")
|
42 |
|
43 |
# Generate audio
|
|
|
44 |
tts = gTTS(text=text, lang=lang_code, slow=False)
|
45 |
audio_path = "output_audio.mp3"
|
46 |
tts.save(audio_path)
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
except Exception as e:
|
49 |
st.error(f"Audio generation failed: {str(e)}")
|
50 |
return None
|
|
|
24 |
return ""
|
25 |
|
26 |
def text_to_speech(text, target_lang):
|
27 |
+
"""Convert translated text to audio with robust handling."""
|
28 |
try:
|
29 |
+
if not text:
|
30 |
+
st.error("No text to convert to audio.")
|
31 |
+
return None
|
32 |
+
|
33 |
# Map target language to gTTS codes
|
34 |
lang_map = {
|
35 |
"English": "en",
|
36 |
"French": "fr",
|
37 |
"Spanish": "es",
|
38 |
"German": "de",
|
39 |
+
"Chinese": "zh-cn",
|
40 |
"Arabic": "ar",
|
41 |
"Russian": "ru",
|
42 |
"Hindi": "hi",
|
43 |
+
"Japanese": "ja",
|
44 |
}
|
45 |
lang_code = lang_map.get(target_lang, "en")
|
46 |
|
47 |
# Generate audio
|
48 |
+
st.write(f"Generating audio for language code: {lang_code}") # Debug output
|
49 |
tts = gTTS(text=text, lang=lang_code, slow=False)
|
50 |
audio_path = "output_audio.mp3"
|
51 |
tts.save(audio_path)
|
52 |
+
|
53 |
+
# Verify file exists
|
54 |
+
if os.path.exists(audio_path):
|
55 |
+
st.success(f"Audio generated at: {audio_path}")
|
56 |
+
return audio_path
|
57 |
+
else:
|
58 |
+
st.error("Audio file not found after generation. Check server permissions.")
|
59 |
+
return None
|
60 |
except Exception as e:
|
61 |
st.error(f"Audio generation failed: {str(e)}")
|
62 |
return None
|