import speech_recognition as sr

class Voice: #create Class
    @staticmethod
    def listen():   #define function listen()
        recognizer = sr.Recognizer()

        try:
            with sr.Microphone() as source:
                print("Adjusting for ambient noise...")
                recognizer.adjust_for_ambient_noise(source, duration=0.5) #listen to surrounding for .5sec to adjust backgroundnoise
                print("Listening...")
                audio_data = recognizer.listen(source) #listen to user until user stops speaking
                print("Audio captured")
                try:
                    text = recognizer.recognize_sphinx(audio_data)  # Using Sphinx convert audio to text (also works offline)
                #if any Exceptions or Errors eccur => return ERROR
                except sr.UnknownValueError:
                    text = "ERROR"
                except sr.RequestError as e:
                    text = "ERROR"
                
        except sr.RequestError as e:
            text = "ERROR"
        except sr.UnknownValueError:
            text = "ERROR"
        except Exception as e:
            text = "ERROR"
        return text