Я думаю, что нашел свой ответ. Я читал документацию в интерпретаторе python с функцией help(r.Recognizer)
. Я нашел listen_in_background
метод. listen_in_background
будет делать то, что мне нужно? Я знаю, что это глупая программа, но я планирую сделать что-то практичное для себя. Если это сработает, вы, ребята, можете закрыть эту ветку. Я чувствую себя очень глупо, ха-ха. Я попробую это, и если это плохо сработает, опубликуйте мое решение. Еще раз спасибо!
[ПРАВИТЬ] Это сработало! Я определил эту функцию: def callback(r,audio)
, которая необходима для stop_listening = r.listen_in_background(m, callback)
. Мне сложно понять цель этой строки: stop_listening(wait_for_stop=True)
. Если кто-то может объяснить немного, чтобы я мог использовать его лучше в будущем. Наконец, я добавил 'magi c word', чтобы выйти из программы (просто произнесите 'quit', и sys.quit()
завершит программу.). Есть лучший способ сделать это?
Вот новый код:
import time
import speech_recognition as sr
import sys
def callback(r, audio):
global done
try:
print(f"[PocketSphinx]: Thinks you said: '{r.recognize_sphinx(audio)}'. Read some more ")
except sr.UnknownValueError:
print(f"[PocketSphinx]: Fatal error! Unknown Value Error! Exiting program.")
except sr.RequestError as ex:
print(f"[PocketSphinx]: Fatal error! Could not process request! {ex}")
if r.recognize_sphinx(audio) == 'quit':
print(f"[PocketSphinx]: You said the magic word: 'quit'... Exiting program.")
done = True
r = sr.Recognizer()
r.energy_threshold = 4000
m = sr.Microphone()
done = False
with m as source:
r.adjust_for_ambient_noise(source)
print(f"[PocketSphinx]: Read to me... Say 'quit' to exit...")
stop_listening = r.listen_in_background(m, callback)
# 5 second delay
for _ in range(50):
time.sleep(0.1)
while not done:
time.sleep(0.1)
if done:
stop_listening(wait_for_stop=True)
sys.exit()