Krishna086's picture
Update audio_processor.py
a977cc2 verified
raw
history blame
1.32 kB
import streamlit as st
import speech_recognition as sr
from gtts import gTTS
import io
def transcribe_audio(audio_file):
recognizer = sr.Recognizer()
try:
with open("temp_audio.wav", "wb") as f:
f.write(audio_file.read())
with sr.AudioFile("temp_audio.wav") as source:
audio = recognizer.record(source)
text = recognizer.recognize_google(audio)
return text
except Exception as e:
st.error(f"Transcription failed: {str(e)}")
return ""
def text_to_speech(text, target_lang):
try:
if not text:
st.error("No text to convert.")
return None
lang_map = {"English": "en", "French": "fr", "Spanish": "es", "German": "de",
"Chinese": "zh-cn", "Arabic": "ar", "Russian": "ru", "Hindi": "hi", "Japanese": "ja"}
lang_code = lang_map.get(target_lang, "en")
st.write(f"Attempting audio for {lang_code}")
tts = gTTS(text=text[:200], lang=lang_code, slow=False) # Limit to 200 chars
audio_buffer = io.BytesIO()
tts.write_to_fp(audio_buffer)
audio_buffer.seek(0)
st.success(f"Audio generated for {target_lang}")
return audio_buffer
except Exception as e:
st.error(f"Audio failed: {str(e)}")
return None