Имеется простая функция для распознавания речи:
def speech_to_text():
r = sr.Recognizer()
with sr.Microphone() as source:
r.pause_threshold = 1
r.adjust_for_ambient_noise(source, duration=1)
audio = r.listen(source)
text = r.recognize_google(audio, language="ru-RU").lower()
print("Вы сказали: " + text)
return text
Данная функция выполняется в потоке, который активируется при нажатии кнопки через функцию:
def start():
speech = Thread(target=speech_to_text)
while True:
if speech.is_alive() == False:
speech.start()
if thread_stop == True: return
Принцип работы данной функции проверять активен ли поток, если нет запускать заново, работает отлично за исключением одного 'но', если переменная thread_stop равна True функция start прекращает выполнение, однако поток все равно продолжает выполнение, если находиться на r.listen(source), возможно ли вместе с функцией завершить все дочерние функции и потоки?