Распознавание речи Python listen_in_background при нажатии кнопки?

В настоящее время я пытаюсь заставить модуль voice_recognition слушать в фоновом режиме, когда пользователь нажимает кнопку, созданную с помощью py qt. У меня есть методы инициализации и обратного вызова в классе, однако, когда я пытаюсь прослушать микрофон, похоже, он ничего не регистрирует, даже не выводит ошибки.

class VoiceRecognitionWidget(ScriptedLoadableModuleWidget):
    def callback(self, recognizer, audio):
        try: 
          print(recognizer.recognize_google(audio))
        # handles any api/voice errors  errors 
        except sr.RequestError: 
          print( "There was an issue in handling the request, please try again")
        except sr.UnknownValueError:
          print("Unable to Recognize speech")

    def onApplyButton(self):
        #self.displayLabel.setText("Listening for speech....")

        self.recognizer = sr.Recognizer()
        try: 
          self.microphone = sr.Microphone()

        except(IOError):
          print("ERROR: No default microphone. Check if microphone is plugged in or if you have a default microphone set in your sound settings.")
          self.errors.setText("ERROR: No default microphone. Check if your microphone is plugged in or if you have a default microphone set in your sound settings.")

        with self.microphone as source:
          self.recognizer.adjust_for_ambient_noise(source)
          # audio = self.recognizer.listen(source)

        stop_listening = self.recognizer.listen_in_background(self.microphone, self.callback)

Микрофон работает, когда я просто слушаю его нормально, когда я нажимаю кнопку, просто когда я пытаюсь заставить его постоянно слушать, он, похоже, ничего не делает. Я также попытался создать распознаватель и микрофон в функции того же класса, которая инициализирует весь графический интерфейс (не показан), но это тоже не сработало. Любая помощь будет оценена по достоинству.


person Steve Li    schedule 12.07.2018    source источник


Ответы (1)


В функции обратного вызова я ставлю self.recognizer.recognize_google(audio) независимо от параметра recognizer. Конечно, класс должен иметь recognizer = sr.Recognizer()

person Orahcio    schedule 17.07.2019