Проблема с обнаружением горячих слов в SnowBoy - PullRequest
0 голосов
/ 08 февраля 2019

Привет, ребята. Я пытаюсь запустить цикл while в моем коде, который запускает распознавание речи всякий раз, когда произносится горячее слово "virgo".Проблема в том, что снежный человек обнаруживает горячее слово, но я не знаю, как выполнить цикл while, когда горячее слово сработало.Любая помощь, пожалуйста?это может звучать глупо и должно быть относительно легко, но мой мозг горит прямо сейчас.благодарю вас!

import speech_recognition as sr
from textblob import TextBlob
import snowboydecoder

recognizer_instance = sr.Recognizer()

def detected_callback():
    print ("tell me!")

detector = snowboydecoder.HotwordDetector("virgo.pmdl",sensitivity=0.5)

detector.start(detected_callback=snowboydecoder.play_audio_file,sleep_time=0.03)
detector.terminate()


while True:
    with sr.Microphone() as source:
        recognizer_instance.adjust_for_ambient_noise(source)
        print("Listening...")
        audio = recognizer_instance.listen(source)
        print("copy that!")

    try:
        text = recognizer_instance.recognize_google(audio, language = "it-IT")
        print("you said:\n", text) 

    except Exception as e:
        break

1 Ответ

0 голосов
/ 08 февраля 2019

Ваша петля while всегда 'срабатывает', учитывая TRUE, пока вы не break выйдете из нее.Чтобы вызвать код внутри цикла, выполните, например:

while True:
    if YOUR_TRIGGER_CONDITION:
        with sr.Microphone() as source:
            recognizer_instance.adjust_for_ambient_noise(source)
            print("Listening...")
            audio = recognizer_instance.listen(source)
            print("copy that!")

        try:
            text = recognizer_instance.recognize_google(audio, language = "it-IT")
            print("you said:\n", text) 

        except Exception as e:
            break
...