1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
| import os
import time
import speech_recognition as sr
from fuzzywuzzy import fuzz
import pyttsx3
import datetime
import eel
# настройки
token = "."
opts = {
"alias": ('слышь', 'пёрл', 'перлуша', 'перловка', 'perl'),
"tbr": ('скажи','расскажи','сколько','запусти'),
"cmds": {
"ctime": ('текущее время','сейчас времени','который час'),
"radio": ('включи музыку','воспроизведи радио','включи радио'),
"stupid1": ('расскажи анекдот','рассмеши меня','ты знаешь анекдоты'),
"csgo":('ксго', 'cs go', 'csgo'),
"steam":('стим', 'steam'),
"discord":('дискорд', 'дс', 'discord', 'ds'),
"taskmgr":('диспетчер', 'диспетчер задач')
}
}
# функции
def speak(what):
print( what )
speak_engine.say( what )
speak_engine.runAndWait()
speak_engine.stop()
def callback(recognizer, audio):
try:
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):
if cmd == 'ctime':
# сказать текущее время
now = datetime.datetime.now()
speak("Сейчас " + str(now.hour) + ":" + str(now.minute))
elif cmd == 'radio':
# воспроизвести радио
os.system("D:\\perl\\perl\\perl\\res\\radio_record.m3u")
elif cmd == 'stupid1':
# рассказать анекдот
speak("Я не знаю шуток, клоун")
elif cmd == 'csgo':
#запуcтить кс
speak("Запускаю ксго")
os.system('D:/Steam/steamapps/common/"Counter-Strike Global Offensive"/csgo.exe')
elif cmd == 'steam':
#запустить стим
speak("Запускаю стим")
os.system('D:/Steam/steam.exe')
elif cmd == 'discord':
#запустить дискорд
speak("Запускаю дискорд")
os.system('C:/Users/pk/AppData/Local/Discord/app-0.0.308/Discord.exe')
elif cmd == 'taskmgr':
#запустить диспетчер задач
speak("Запускаю диспетчер задач")
os.system('taskmgr.exe')
else:
print('Команда не распознана, повторите!')
# запуск
r = sr.Recognizer()
#m = sr.Microphone(device_index = 1)
with sr.Microphone(device_index = 1) as source:
r.adjust_for_ambient_noise(source)
speak_engine = pyttsx3.init()
# Смена голоса
voices = speak_engine.getProperty('voices')
speak_engine.setProperty('voice', voices[1].id)
# forced cmd test
#speak("looooool")
speak("Добро пожаловать, сэр")
speak("Пёрл слушает")
stop_listening = r.listen_in_background(sr.Microphone(device_index = 1), callback)
while True:
with sr.Microphone(device_index = 1) as source:
audio = r.listen(source)
callback(r, audio)
time.sleep(5) |