View difference between Paste ID: Dh0mKYmd and tPD0g802
SHOW: | | - or go back to the newest paste.
1
# Голосовой ассистент КЕША 1.0 BETA
2
import os
3
import time
4
import speech_recognition as sr
5
from fuzzywuzzy import fuzz
6
import pyttsx3
7
import datetime
8
9
# настройки
10
opts = {
11
    "alias": ('кеша','кеш','инокентий','иннокентий','кишун','киш',
12
              'кишаня','кяш','кяша','кэш','кэша'),
13
    "tbr": ('скажи','расскажи','покажи','сколько','произнеси'),
14
    "cmds": {
15
        "ctime": ('текущее время','сейчас времени','который час'),
16
        "radio": ('включи музыку','воспроизведи радио','включи радио'),
17
        "stupid1": ('расскажи анекдот','рассмеши меня','ты знаешь анекдоты')
18
    }
19
}
20
21
# функции
22
def speak(what):
23
    print( what )
24
    speak_engine.say( what )
25
    speak_engine.runAndWait()
26
    speak_engine.stop()
27
28
def callback(recognizer, audio):
29
    try:
30
        voice = recognizer.recognize_google(audio, language = "ru-RU").lower()
31
        print("[log] Распознано: " + voice)
32
    
33
        if voice.startswith(opts["alias"]):
34
            # обращаются к Кеше
35
            cmd = voice
36
37
            for x in opts['alias']:
38
                cmd = cmd.replace(x, "").strip()
39
            
40
            for x in opts['tbr']:
41
                cmd = cmd.replace(x, "").strip()
42
            
43
            # распознаем и выполняем команду
44
            cmd = recognize_cmd(cmd)
45
            execute_cmd(cmd['cmd'])
46
47
    except sr.UnknownValueError:
48
        print("[log] Голос не распознан!")
49
    except sr.RequestError as e:
50
        print("[log] Неизвестная ошибка, проверьте интернет!")
51
52
def recognize_cmd(cmd):
53
    RC = {'cmd': '', 'percent': 0}
54
    for c,v in opts['cmds'].items():
55
56
        for x in v:
57
            vrt = fuzz.ratio(cmd, x)
58
            if vrt > RC['percent']:
59
                RC['cmd'] = c
60
                RC['percent'] = vrt
61
    
62
    return RC
63
64
def execute_cmd(cmd):
65
    if cmd == 'ctime':
66
        # сказать текущее время
67
        now = datetime.datetime.now()
68
        speak("Сейчас " + str(now.hour) + ":" + str(now.minute))
69
    
70
    elif cmd == 'radio':
71
        # воспроизвести радио
72
        os.system("D:\\Jarvis\\res\\radio_record.m3u")
73
    
74
    elif cmd == 'stupid1':
75
        # рассказать анекдот
76
        speak("Мой разработчик не научил меня анекдотам ... Ха ха ха")
77
    
78
    else:
79
        print('Команда не распознана, повторите!')
80
81
# запуск
82
r = sr.Recognizer()
83
m = sr.Microphone(device_index = 1)
84
85
with m as source:
86
    r.adjust_for_ambient_noise(source)
87
88
speak_engine = pyttsx3.init()
89
90
# Только если у вас установлены голоса для синтеза речи!
91
voices = speak_engine.getProperty('voices')
92
speak_engine.setProperty('voice', voices[4].id)
93
94
# forced cmd test
95
speak("Мой разработчик не научил меня анекдотам ... Ха ха ха")
96
97
#speak("Добрый день, повелитель")
98
#speak("Кеша слушает")
99
100
#stop_listening = r.listen_in_background(m, callback)
101
#while True: time.sleep(0.1) # infinity loop