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)}"