# Голосовой ассистент КЕША 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
voice = ""
class VoiceAssistant:
speech_language = "ru"
recognition_language = "ru"
# настройки
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").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)