Задать вопрос
@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()
  • Вопрос задан
  • 197 просмотров
Подписаться 2 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Maxsior
@Maxsior
loading...
Честно признаюсь, не запускал код, но на первый взгляд кажется, что проблема из-за того, что каждый раз создается новый инстанс рекогнайзера.

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

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

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

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽