81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
|
|
# КЕША 2.0
|
|||
|
|
|
|||
|
|
import config
|
|||
|
|
import stt
|
|||
|
|
import tts
|
|||
|
|
from fuzzywuzzy import fuzz
|
|||
|
|
import datetime
|
|||
|
|
from num2t4ru import num2text
|
|||
|
|
import webbrowser
|
|||
|
|
import random
|
|||
|
|
|
|||
|
|
|
|||
|
|
print(f"{config.VA_NAME} (v{config.VA_VER}) начал свою работу ...")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def va_respond(voice: str):
|
|||
|
|
print(voice)
|
|||
|
|
if voice.startswith(config.VA_ALIAS):
|
|||
|
|
# обращаются к ассистенту
|
|||
|
|
cmd = recognize_cmd(filter_cmd(voice))
|
|||
|
|
|
|||
|
|
if cmd['cmd'] not in config.VA_CMD_LIST.keys():
|
|||
|
|
tts.va_speak("Что?")
|
|||
|
|
else:
|
|||
|
|
execute_cmd(cmd['cmd'])
|
|||
|
|
|
|||
|
|
|
|||
|
|
def filter_cmd(raw_voice: str):
|
|||
|
|
cmd = raw_voice
|
|||
|
|
|
|||
|
|
for x in config.VA_ALIAS:
|
|||
|
|
cmd = cmd.replace(x, "").strip()
|
|||
|
|
|
|||
|
|
for x in config.VA_TBR:
|
|||
|
|
cmd = cmd.replace(x, "").strip()
|
|||
|
|
|
|||
|
|
return cmd
|
|||
|
|
|
|||
|
|
|
|||
|
|
def recognize_cmd(cmd: str):
|
|||
|
|
rc = {'cmd': '', 'percent': 0}
|
|||
|
|
for c, v in config.VA_CMD_LIST.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: str):
|
|||
|
|
if cmd == 'help':
|
|||
|
|
# help
|
|||
|
|
text = "Я умею: ..."
|
|||
|
|
text += "произносить время ..."
|
|||
|
|
text += "рассказывать анекдоты ..."
|
|||
|
|
text += "и открывать браузер"
|
|||
|
|
tts.va_speak(text)
|
|||
|
|
pass
|
|||
|
|
elif cmd == 'ctime':
|
|||
|
|
# current time
|
|||
|
|
now = datetime.datetime.now()
|
|||
|
|
text = "Сейч+ас " + num2text(now.hour) + " " + num2text(now.minute)
|
|||
|
|
tts.va_speak(text)
|
|||
|
|
|
|||
|
|
elif cmd == 'joke':
|
|||
|
|
jokes = ['Как смеются программисты? ... ехе ехе ехе',
|
|||
|
|
'ЭсКьюЭль запрос заходит в бар, подходит к двум столам и спрашивает .. «м+ожно присоединиться?»',
|
|||
|
|
'Программист это машина для преобразования кофе в код']
|
|||
|
|
|
|||
|
|
tts.va_speak(random.choice(jokes))
|
|||
|
|
|
|||
|
|
elif cmd == 'open_browser':
|
|||
|
|
chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
|
|||
|
|
webbrowser.get(chrome_path).open("http://python.org")
|
|||
|
|
|
|||
|
|
|
|||
|
|
# начать прослушивание команд
|
|||
|
|
stt.va_listen(va_respond)
|