Krishna086 commited on
Commit
a977cc2
·
verified ·
1 Parent(s): da34b5e

Update audio_processor.py

Browse files
Files changed (1) hide show
  1. audio_processor.py +8 -35
audio_processor.py CHANGED
@@ -1,63 +1,36 @@
1
  import streamlit as st
2
  import speech_recognition as sr
3
  from gtts import gTTS
4
- import os
5
  import io
6
 
7
  def transcribe_audio(audio_file):
8
- """Transcribe uploaded audio file to text."""
9
  recognizer = sr.Recognizer()
10
  try:
11
- # Save uploaded file temporarily
12
  with open("temp_audio.wav", "wb") as f:
13
  f.write(audio_file.read())
14
-
15
- # Transcribe using SpeechRecognition
16
  with sr.AudioFile("temp_audio.wav") as source:
17
  audio = recognizer.record(source)
18
  text = recognizer.recognize_google(audio)
19
-
20
- # Clean up
21
- os.remove("temp_audio.wav")
22
  return text
23
  except Exception as e:
24
- st.error(f"Audio transcription failed: {str(e)}")
25
  return ""
26
 
27
  def text_to_speech(text, target_lang):
28
- """Convert translated text to audio with robust handling using memory buffer."""
29
  try:
30
  if not text:
31
- st.error("No text to convert to audio.")
32
  return None
33
-
34
- # Map target language to gTTS codes
35
- lang_map = {
36
- "English": "en",
37
- "French": "fr",
38
- "Spanish": "es",
39
- "German": "de",
40
- "Chinese": "zh-cn",
41
- "Arabic": "ar",
42
- "Russian": "ru",
43
- "Hindi": "hi",
44
- "Japanese": "ja",
45
- }
46
  lang_code = lang_map.get(target_lang, "en")
47
-
48
- # Generate audio in memory
49
- st.write(f"Generating audio for language code: {lang_code}") # Debug output
50
- tts = gTTS(text=text, lang=lang_code, slow=False)
51
  audio_buffer = io.BytesIO()
52
  tts.write_to_fp(audio_buffer)
53
  audio_buffer.seek(0)
54
-
55
- # Save temporarily for debugging (optional)
56
- with open("output_audio.mp3", "wb") as f:
57
- f.write(audio_buffer.getbuffer())
58
-
59
- st.success(f"Audio generated in memory for {target_lang}")
60
  return audio_buffer
61
  except Exception as e:
62
- st.error(f"Audio generation failed: {str(e)}")
63
  return None
 
1
  import streamlit as st
2
  import speech_recognition as sr
3
  from gtts import gTTS
 
4
  import io
5
 
6
  def transcribe_audio(audio_file):
 
7
  recognizer = sr.Recognizer()
8
  try:
 
9
  with open("temp_audio.wav", "wb") as f:
10
  f.write(audio_file.read())
 
 
11
  with sr.AudioFile("temp_audio.wav") as source:
12
  audio = recognizer.record(source)
13
  text = recognizer.recognize_google(audio)
 
 
 
14
  return text
15
  except Exception as e:
16
+ st.error(f"Transcription failed: {str(e)}")
17
  return ""
18
 
19
  def text_to_speech(text, target_lang):
 
20
  try:
21
  if not text:
22
+ st.error("No text to convert.")
23
  return None
24
+ lang_map = {"English": "en", "French": "fr", "Spanish": "es", "German": "de",
25
+ "Chinese": "zh-cn", "Arabic": "ar", "Russian": "ru", "Hindi": "hi", "Japanese": "ja"}
 
 
 
 
 
 
 
 
 
 
 
26
  lang_code = lang_map.get(target_lang, "en")
27
+ st.write(f"Attempting audio for {lang_code}")
28
+ tts = gTTS(text=text[:200], lang=lang_code, slow=False) # Limit to 200 chars
 
 
29
  audio_buffer = io.BytesIO()
30
  tts.write_to_fp(audio_buffer)
31
  audio_buffer.seek(0)
32
+ st.success(f"Audio generated for {target_lang}")
 
 
 
 
 
33
  return audio_buffer
34
  except Exception as e:
35
+ st.error(f"Audio failed: {str(e)}")
36
  return None