Я создаю голосовой ассистент. Заметил такую проблему, что после определенного количества времени программа замораживается, и не отзывается на команды. Предполагаю, что программа получает слишком много данных., и она становится не в силах их обработать. Можно ли сделать какую-то очистку? Или как можно еще оптимизировать?
Вот код:
import speech_recognition as sr
import webbrowser
import os
import time
from fuzzywuzzy import fuzz
import pyttsx3
import subprocess
#Списки
VA_NAME = 'Олег'
VA_ALIAS = ('олег', 'олежа')
VA_CMD_LIST = {
"help": ('список команд', 'команды', 'что ты умеешь', 'твои навыки', 'навыки'),
"ctime": ('время', 'текущее время', 'сейчас времени', 'который час'),
"vk": ('открой vk', 'запусти vk', 'vk', 'открой вк', 'запусти вк', 'вк'),
"gta": ('открой gta 5 rp', 'запусти gta 5 rp', 'откройте gta 5 rp', 'запусти gta 5p', 'открой gta v rp'),
"sleep": ('отключи компьютер', 'выключи компьютер','спокойной ночи'),
'AU': ('открой audition', 'запусти audition', 'пора озвучивать', 'пора вернуться к озвучке')
}
def record_volume():
r = sr.Recognizer()
with sr.Microphone(device_index = 1) as source:
print('Настраиваюсь.')
r.adjust_for_ambient_noise(source, duration=0.9) #настройка посторонних шумов
print('Слушаю...')
audio = r.listen(source)
print('Услышал.')
try:
query = r.recognize_google(audio, language = 'ru-RU')
text = query.lower()
print(f'Вы сказали:' + query.lower())
if any(name in text for name in VA_ALIAS):
if any(vk_cmd in text for vk_cmd in VA_CMD_LIST['vk']):
print('Запускаю...')
webbrowser.open('https://vk.com')
elif any(gta_cmd in text for gta_cmd in VA_CMD_LIST['gta']):
print('Запускаю...')
os.startfile(r'D:\GTA5RP\GTA5RPLauncher.exe')
elif any(au_cmd in text for au_cmd in VA_CMD_LIST['AU']):
print('Запускаю...')
os.startfile(r'D:\GAMES\Portable Adobe Audition\Audition.exe')
elif any(sleep_cmd in text for sleep_cmd in VA_CMD_LIST['sleep']):
print('Засыпаю!')
os.system('shutdown -s')
else:
print('Чего?')
except:
print('Чего?')
while True:
record_volume()