Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Голосовй ассистент Аида (A.I.D.A) ver. 0.1 Alpha
- #A.I.D.A - Artificial Intelligence Digital Assistant ( Цифровой помощник с искусственным интелектом )
- import os
- import time
- import speech_recognition as sr
- from fuzzywuzzy import fuzz
- import pyttsx3
- import datetime
- opts = {
- "alias": ('аида','аи','адка','помошник','ассистент'),
- "tbr": ('скажи','расскажи','покажи','сделай','найди','произнеси','поведай'),
- "cmds": {
- "ctime": ('сколько времени','который сейчас час','сколько время','сколько на часах','который час','текущее время','сейчас времени'),
- "cdate": ('какое сегодня число','какая сейчас дата','какой сегодня день','что на календаре'),
- "cmusic": ('включи музыку','запусти музыку','включи радио','запусти радио','хочу музыки','хочу музыку',
- 'включить что-то послушать','душа просит музыки'),
- "cstupid": ('расскажи шутку','расскажи анекдот','расскажи что-то смешное','можешь рассказать шутку',
- 'хочу посмеяться','можешь развеселить меня'),
- "ccinema": ('какой фильм выбрать','что сегодня можно посмотреть','какой выбрать фильм','помоги выбрать фильм',
- 'есть хорошие фильмы'),
- "ccooks": ('что сегодня приготовить','подскажи рецепт','знаешь хорошие рецепты','что можно приготовить',
- 'помоги выбрать рецепт','какое блюдо приготовить сегодня','покажи список рецептов')
- }
- }
- 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 == 'cmusic':
- # воспроизвести радио
- os.system("D:\\Jarvis\\res\\radio_record.m3u")
- elif cmd == 'cstupid':
- # рассказать анекдот
- 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[6].id)
- #speak("Добрый день, создатель")
- speak("Аида слушает")
- stop_listening = r.listen_in_background(m, callback)
- while True: time.sleep(0.1) # infinity loop
- #opts.polling(none_stop=True, interval=0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement