@Elacov_top

Как оптимизировать программу?

Я создаю голосовой ассистент. Заметил такую проблему, что после определенного количества времени программа замораживается, и не отзывается на команды. Предполагаю, что программа получает слишком много данных., и она становится не в силах их обработать. Можно ли сделать какую-то очистку? Или как можно еще оптимизировать?
Вот код:
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()
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 1
Maxsior
@Maxsior
loading...
Честно признаюсь, не запускал код, но на первый взгляд кажется, что проблема из-за того, что каждый раз создается новый инстанс рекогнайзера.

Попробуйте вынести r = sr.Recognizer() из функции в глобальную область.

Ещё обратите внимание на этот пример: https://github.com/Uberi/speech_recognition/blob/m...

Ещё для более точной диагностики почитайте про инструменты профилирования для python
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы