import base64 import tempfile import os class STTService: def __init__(self): self.initialized = False self.recognizer = None async def initialize(self): """Initialize STT service""" try: import speech_recognition as sr self.recognizer = sr.Recognizer() self.initialized = True print("✓ STT Service initialized (SpeechRecognition)") except ImportError: print("⚠️ SpeechRecognition not available. STT will return placeholder text.") self.initialized = False async def transcribe_audio_base64(self, audio_base64: str, language: str = "en-US") -> str: """Transcribe base64 audio to text""" if not self.initialized or not self.recognizer: return "[Audio received - install SpeechRecognition for transcription]" try: import speech_recognition as sr import io # Decode audio audio_data = base64.b64decode(audio_base64) # Use SpeechRecognition audio_file = sr.AudioFile(io.BytesIO(audio_data)) with audio_file as source: # Adjust for ambient noise self.recognizer.adjust_for_ambient_noise(source) audio = self.recognizer.record(source) return self.recognizer.recognize_google(audio, language=language) except sr.UnknownValueError: return "Could not understand audio" except sr.RequestError as e: return f"Error with speech recognition service: {e}" except Exception as e: return f"Error processing audio: {str(e)}"