Горячее слово SpeechRecognition не работает должным образом

Я новичок, я мало знаю о распознавании речи и горячих словах.

До сих пор я использовал модуль SpeechRecognition, но он не так точен, как:

  1. Мне нужно дождаться, пока программа получит доступ к моему микрофону
  2. Это не точно, даже сложно, я использую ambient_noise

Это то, что я пробовал до сих пор

          try:
        with sr.Microphone() as source:
            r.adjust_for_ambient_noise(source, duration=2)
            listening_audio = r.listen(source, phrase_time_limit=3)
            try:
                command = r.recognize_google(listening_audio, language='en-in')
                self.Command.emit(command)
            except sr.UnknownValueError:
                print('')
            except Exception as e:
                print('First error:', str(e))
    except Exception as e:
        print("Second error:", str(e))

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

1 ответ

Попробуйте использовать pyttsx3модуль с speech_recognition

      import speech_recognition as sr
import pyttsx3

engine = pyttsx3.init('sapi5')

voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)

rate = engine.getProperty('rate')
engine.setProperty('rate', rate-70)

volume = engine.getProperty('volume')
engine.setProperty('volume', 1)

i = 0
n = 0

def speak(audio):
    print(audio)
    engine.say(audio)
    engine.runAndWait()

while (i<1):
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.adjust_for_ambient_noise(source)
        n=(n+1)
        print("Waiting For Voice Input...")
        audio = r.listen(source)
                                                   # interprete audio (Google Speech Recognition)
    try:
        s = (r.recognize_google(audio))
        message = (s.lower())
        print(message)
        
    except sr.UnknownValueError:
        print("Retry")
    except sr.RequestError as e:
        print("Could not request results$; {0}".format(e))
        try:
            speak("Sir Bad Signal")
        except:
            print("Sir Bad Signal")

Это должно работать и должно быть лучше вашего кода. Попробуйте.

Другие вопросы по тегам