Как постоянно проверять ввод с микрофона?

Всем привет! Я на днях ради хиханек да хаханек решил сделать проект на питоне, его суть состоит в проверке моей речи на нецензурную лексику. Я беру ввод с моего микрофона, разбиваю на слова, ну и проверяю есть ли хоть одно слово в списке плохих слов и если оно есть..., то из колонок выдаю ГРОМКИЙ звук. Но прямо сейчас я столкнулся с проблемой, код который я написал работает, но он проверяет предложение которое я сказал только после большой паузы. То есть, я сначала говорю, а потом делаю паузу, чтобы программа записала всё моё предложение в переменную, после разбило на слова, проверила и потом выдала результат, а мне нужно чтобы всё это было как-бы одновременно! Чтобы пока я говорил каждое мое слово проверялось и, в ту секунду, когда я скажу плохое слово, мои колонки выдадут громкий звук! Заранее спасибо, Вот весь мой код:

from bad_words import bad_words #переменная bad_words содержит строку всех самых часто-используемых плохих слов
import speech_recognition as sr

from pydub import AudioSegment
from pydub.playback import play

ALERT = AudioSegment.from_mp3("alert.mp3")

#функция, которая пытается понять что я снёс
def callback(r, audio):
    try:
        #вывод слов на экран чисто для проверки
        print(r.recognize_whisper(audio))
        print(r.recognize_whisper(audio).split(' '))

        #разбивка предложения на слова
        words = r.recognize_whisper(audio).split(' ')
        for word in words:
            #просто убираю из слова лишние знаки препинания
            word = ''.join([i for i in word if  i not in '!,.'])

            #какой же тут жидкий код
            if word.lower() in bad_words and len(word)>2:
                print('АААААААААА')
                play(ALERT)

    except sr.UnknownValueError:
        print("чё")

    except sr.RequestError as e:
        print(f'ААААААААААААААА {e} ЧЁ ЗА НАХЕР')

#обьект рекогнайзер
r = sr.Recognizer()
#обьект микрофон
my_mic = sr.Microphone(device_index=1)


while True:

    with my_mic as source:
        print('Говори!!!')
        #убираю шумы
        r.adjust_for_ambient_noise(source)
        audio = r.listen(source)

    callback(r, audio)

Ответы (0 шт):