R
R
Riders2022-04-20 15:57:32
Python
Riders, 2022-04-20 15:57:32

Assistant after a long silence does not want to perceive the speech?

The problem is in the code, if you don’t say anything to the assistant for a long time, will he stop perceiving speech?
after you don’t speak for a long time, he listens to the microphone but does not perceive speech, you need to solve the problem, but I don’t know how, here is a fragment of the code by which you can identify this bug (There are 3 commands you can say one and wait 5 minutes and he does not perceive speech
Request to moderators not to close the question, how-to " https://qna.habr.com/q/634546"this is not the right answer! there he stops listening after the command is executed, but for me he does not stop at 1 command, he can answer many commands, but after being silent for a long time he stops quickly perceiving speech or delays the definitions of what you said for 5 minutes or does not perceive speech at all, that is, it works in the console like this:

spoiler
d:\Python>ktest.py
Добрый день,создатель!)
Кеша к вашим услугам
[log] Распознано: текущее время
[log] Распознано: кеша текущее время
Сейчас 15:49
[log] Распознано: открой youtube
[log] Распознано: открой youtube
[log] Распознано: яша открой youtube
Открываю Ютуб!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
[log] Голос не распознан!
#После этого начинаю говорить и он ничего не распознает хотя микрофон слушает

Once again I repeat this question is not like the others here is a completely different problem !!
and here is the code itself:
# Голосовой ассистент КЕША 1.1 BETA
import os
import time
import speech_recognition as sr
from fuzzywuzzy import fuzz
import pyttsx3
import datetime
import win32com.client as wincl
import webbrowser
import sys
import random
import pandas as pd
from tkinter import *
import pynput
from pynput.keyboard import Key, Controller
from pynput import mouse
import pyjokes
import pyautogui
import wikipedia

 
# настройки
opts = {
    "alias": ('кеша','кеш','инокентий','иннокентий','кишун','киш',
              'кишаня','кяш','кяша','кэш','кэша',"kesha","яша"),
    "tbr": ('', '', 'покажи', 'сколько', '', 'как','сколько','поставь','переведи', "засеки",'запусти','сколько будет'),
        "cmds": {
    "ctime": ('текущее время', 'сейчас времени', 'который час', 'время', 'какое сейчас время'),
    'startStopwatcdh': ('запусти секундомер', "включи секундомер", "засеки время"),
    'stopStopwatch': ('останови секундомер', "выключи секундомер", "останови"),
    "stupid1": ('расскажи анекдот', 'рассмеши меня', 'ты знаешь анекдоты', "шутка", "прикол"),
    "calc": ('прибавить','умножить','разделить','степень','вычесть','поделить','х','+','-','/'),
    "shutdown": ('выключи', 'выключить', 'отключение', 'отключи', 'выключи компьютер'),
    "conv": ("валюта", "конвертер","доллар",'руб','евро'),
    "Youtube": ("открой ютуб", "", "", "Открой youtube"),
    "Pozdrav": ("",""),
    "deals": ("дела","делишки", 'как сам', 'как дела'),
    "Poka": ("Пока","До свидания", 'Прощай', 'бб'),
    "Radio": ("Музыка","Включи музыку", 'Включи Радио', 'Включи песню'),
    "google": ("","", 'Запусти браузер', 'Запусти гугл', "Запусти Google", 'Открой Google'),
    "Povtori": ("Повтори","Произнеси", 'Скажи', ''),
    "pogoda": ("Какая Погода","Покажи погоду", 'Погода', 'Сегодня солнце?'),
    "zakroigogle": ("Закрой гугл","Закрой Google", 'Закрой Браузер', ""),
    "sozdatel": ("Кто твой создатель?","Как зовут твоего создателя?", 'кто разработчик?', ""),
    "zakroimuziky": ("Останови музыку","", 'вырубай музыку', ""),
    "pause": ("Пауза","Продолжи", 'Поставь паузу', "Продолжить просмотр"),
    "spasibo": ("Спасибо!","Очень помог", 'Благодарен тебе', "я тебе благодарен"),
    "rust": ("Открой раст","", 'Включи раст', ""),
    "sreachyoutube": ("Кеша видео","видео", '', ""),
    "autoclick": ("Включи автокликер","", '', ""),
    "otklavtoclicker": ("Отключи автокликер","", '', ""),
    "Wiki": ("Википедия","", '', "")
    }
}


# функции
def speak(what):
    print( what )
    speak_engine.say( what )
    speak_engine.runAndWait()
    speak_engine.stop()

 
def callback(recognizer, audio):
    try:
        global voice
        voice = recognizer.recognize_google(audio, language = "ru-RU").lower()
        print("[log] Распознано: " + voice)
    
        if voice.startswith(opts["alias"]):
            # обращаются к Кеше
            cmd = voice
 
            for x in opts['alias']:
                cmd = cmd.replace(x, "").strip()
            
            for x in opts['tbr']:
                cmd = cmd.replace(x, "").strip()
            
            # распознаем и выполняем команду
            cmd = recognize_cmd(cmd)
            execute_cmd(cmd['cmd'])
 
    except sr.UnknownValueError:
        print("[log] Голос не распознан!")
    except sr.RequestError as e:
        print("[log] Неизвестная ошибка, проверьте интернет!")
 
def recognize_cmd(cmd):
    RC = {'cmd': '', 'percent': 0}
    for c,v in opts['cmds'].items():
 
        for x in v:
            vrt = fuzz.ratio(cmd, x)
            if vrt > RC['percent']:
                RC['cmd'] = c
                RC['percent'] = vrt
    
    return RC
 
def execute_cmd(cmd):
    #1# сказать текущее время
    if cmd == 'ctime':
        now = datetime.datetime.now()
        speak("Сейчас " + str(now.hour) + ":" + str(now.minute))

    #2# воспроизвести радио
    elif cmd == 'Radio':
        music = ("D:\\Python\\Kesha\\music\\zapomni-derevya-padayut-stoya.mp3","D:\\Python\\Kesha\\music\\zapomni-kozhura-tik-tok.mp3","D:\\Python\\Kesha\\music\\maks-korzh-gnutsya-strely-rvutsya-strely-gnutsya-strely-nad-golovoj.mp3","D:\\Python\\Kesha\\music\\zapomni-ya-so-svoej-duri-tebya-poceluyu.mp3")
        os.system(random.choice(music))
    
    #3# рассказать анекдот
    elif cmd == 'stupid1':
        anigdot = ('Колобок повесился, хаха', "Упавший в воду шоколадный батончик вызвал панику в бассейне.", "Нравится, не нравится, курс рубля вниз катится.", "", "")
        speak(random.choice(anigdot))

    #21#если млямлишь)
    else:
        speak('Команда не распознана, повторите!')
 
# запуск
r = sr.Recognizer()
m = sr.Microphone(device_index = 1)
 
with m as source:
    r.adjust_for_ambient_noise(source)
 
speak_engine = pyttsx3.init()
#Анекдоты
 
# forced cmd test
#speak("Мой разработчик не научил меня анекдотам ... Ха ха ха")
 
speak("Добрый день,создатель!)")
speak("Кеша к вашим услугам")
 
while True:
  with m as source:
    audio = r.listen(source)
  callback(r, audio)

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question