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