Заявление об ограничении ответственности: это не проверено. У меня не установлен этот пакет.
Однако, просто прочитав исходный код на https://github.com/Uberi/speech_recognition/blob/master/speech_recognition/__init__.py, я обнаружил следующее:
Вызов listen_in_background
возвращает ссылка на функцию stopper()
, которая приемлемо завершает поток прослушивания. Чтобы использовать это, попробуйте следующее:
import time
import speech_recognition as sr
import sys
stop_it = False
def callback(recognizer, audio): # this is called from the background thread
global stop_it
try:
print("You said " + recognizer.recognize_google(audio))
if text.lower() == 'terminate':
stop_it = True
except:
pass
r = sr.Recognizer()
just_try_and_stop_me = r.listen_in_background(sr.Microphone(), callback)
while True:
if stop_it:
just_try_and_stop_me(wait_for_stop=True)
break
time.sleep(0.1)
NB: Глобальные переменные - это своего рода хакерство sh, поэтому для следующей задачи попробуйте инкапсулировать все это в соответствующий класс. . Но пока для начала это должно быть неплохо. Также нет необходимости заключать ваше условие в круглые скобки (это не C). Кроме того, метод .lower()
для строки вернет версию в нижнем регистре для более простых сравнений без учета регистра.