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