File size: 1,762 Bytes
56dc677 c7fc3b6 691fd14 56dc677 691fd14 56dc677 691fd14 56dc677 691fd14 56dc677 691fd14 56dc677 691fd14 56dc677 691fd14 56dc677 691fd14 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
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)}" |