@Riders

Ассистент после долгого молчания не хочет воспринимаить речь?

Проблема в коде, если долго ничего не говорить ассистенту то он перестанет воспринимать речь?
после того как долго не говоришь он слушает микрофон но не воспринимает речь, нужно решить проблему но я не знаю как, вот фрагмент от кода по которому вы сможете определить этот баг(Там 3 команды можете одну сказать и подождать минут 5 и он не воспринимает речь
Просьба к модераторам не закрывать вопрос тк-как "https://qna.habr.com/q/634546" это не тот ответ! там он перестает слушать после выполненой команды, а у меня он не останавливается на 1 команде, может ответить на много команд, но после того как долго молчишь он перестает быстро воспринимать речь либо затягивает опредиления что ты сказал на 5 минут либо вообще не воспринимает речь, тоесть это в консоле работает примерно так:
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] Голос не распознан!
#После этого начинаю говорить и он ничего не распознает хотя микрофон слушает

Еще раз повторяю этот вопрос не похож на другие тут совсем другая проблема!!
а вот и сам код:
# Голосовой ассистент КЕША 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)
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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