malek-messaoudii
Refactor requirements and chatbot services; enhance service initialization and error handling for TTS and STT functionalities
691fd14
| 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)}" |