# Голосовой ассистент КЕША 1.0 BETA import os import time import speech_recognition as sr from fuzzywuzzy import fuzz import pyttsx3 import datetime # настройки opts = { "alias": ('кеша','кеш','инокентий','иннокентий','кишун','киш', 'кишаня','кяш','кяша','кэш','кэша'), "tbr": ('скажи','расскажи','покажи','сколько','произнеси'), "cmds": { "ctime": ('текущее время','сейчас времени','который час'), "radio": ('включи музыку','воспроизведи радио','включи радио'), "stupid1": ('расскажи анекдот','рассмеши меня','ты знаешь анекдоты') } } # функции 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:\\Jarvis\\res\\radio_record.m3u") elif cmd == 'stupid1': # рассказать анекдот speak("Мой разработчик не научил меня анекдотам ... Ха ха ха") else: print('Команда не распознана, повторите!') # запуск r = sr.Recognizer() m = sr.Microphone(device_index = 1) with m as source: r.adjust_for_ambient_noise(source) speak_engine = pyttsx3.init() # Только если у вас установлены голоса для синтеза речи! voices = speak_engine.getProperty('voices') speak_engine.setProperty('voice', voices[4].id) # forced cmd test speak("Мой разработчик не научил меня анекдотам ... Ха ха ха") #speak("Добрый день, повелитель") #speak("Кеша слушает") #stop_listening = r.listen_in_background(m, callback) #while True: time.sleep(0.1) # infinity loop
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question