Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. #Голосовй ассистент Аида (A.I.D.A) ver. 0.1 Alpha
  2. #A.I.D.A - Artificial Intelligence Digital Assistant ( Цифровой помощник с искусственным интелектом )
  3.  
  4. import os
  5. import time
  6. import speech_recognition as sr
  7. from fuzzywuzzy import fuzz
  8. import pyttsx3
  9. import datetime
  10.  
  11.  
  12. opts = {
  13. "alias": ('аида','аи','адка','помошник','ассистент'),
  14. "tbr": ('скажи','расскажи','покажи','сделай','найди','произнеси','поведай'),
  15. "cmds": {
  16. "ctime": ('сколько времени','который сейчас час','сколько время','сколько на часах','который час','текущее время','сейчас времени'),
  17. "cdate": ('какое сегодня число','какая сейчас дата','какой сегодня день','что на календаре'),
  18. "cmusic": ('включи музыку','запусти музыку','включи радио','запусти радио','хочу музыки','хочу музыку',
  19. 'включить что-то послушать','душа просит музыки'),
  20. "cstupid": ('расскажи шутку','расскажи анекдот','расскажи что-то смешное','можешь рассказать шутку',
  21. 'хочу посмеяться','можешь развеселить меня'),
  22. "ccinema": ('какой фильм выбрать','что сегодня можно посмотреть','какой выбрать фильм','помоги выбрать фильм',
  23. 'есть хорошие фильмы'),
  24. "ccooks": ('что сегодня приготовить','подскажи рецепт','знаешь хорошие рецепты','что можно приготовить',
  25. 'помоги выбрать рецепт','какое блюдо приготовить сегодня','покажи список рецептов')
  26. }
  27. }
  28.  
  29.  
  30. def speak(what):
  31. print(what)
  32. speak_engine.say(what)
  33. speak_engine.runAndWait()
  34. speak_engine.stop()
  35.  
  36.  
  37. def callback(recognizer, audio):
  38. try:
  39. voice = recognizer.recognize_google(audio, language="ru-RU").lower()
  40. print("[log] Распознано: " + voice)
  41.  
  42. if voice.startswith(opts["alias"]):
  43. # обращаются к Кеше
  44. cmd = voice
  45.  
  46. for x in opts['alias']:
  47. cmd = cmd.replace(x, "").strip()
  48.  
  49. for x in opts['tbr']:
  50. cmd = cmd.replace(x, "").strip()
  51.  
  52. # распознаем и выполняем команду
  53. cmd = recognize_cmd(cmd)
  54. execute_cmd(cmd['cmd'])
  55.  
  56. except sr.UnknownValueError:
  57. print("[log] Слушаю...")
  58. except sr.RequestError as e:
  59. print("[log] Неизвестная ошибка, проверьте интернет!")
  60.  
  61.  
  62. def recognize_cmd(cmd):
  63. RC = {'cmd': '', 'percent': 0}
  64. for c, v in opts['cmds'].items():
  65.  
  66. for x in v:
  67. vrt = fuzz.ratio(cmd, x)
  68. if vrt > RC['percent']:
  69. RC['cmd'] = c
  70. RC['percent'] = vrt
  71.  
  72. return RC
  73.  
  74.  
  75. def execute_cmd(cmd):
  76. if cmd == 'ctime':
  77. # сказать текущее время
  78. now = datetime.datetime.now()
  79. speak("Сейчас " + str(now.hour) + ":" + str(now.minute))
  80.  
  81. elif cmd == 'cmusic':
  82. # воспроизвести радио
  83. os.system("D:\\Jarvis\\res\\radio_record.m3u")
  84.  
  85. elif cmd == 'cstupid':
  86. # рассказать анекдот
  87. speak("Пока не знаю не одной, возможно в ближайшее время выучу")
  88.  
  89. else:
  90. print('Команда не распознана, повторите!')
  91.  
  92.  
  93. # запуск
  94. r = sr.Recognizer()
  95. m = sr.Microphone(device_index=1)
  96.  
  97. with m as source:
  98. r.adjust_for_ambient_noise(source)
  99.  
  100. speak_engine = pyttsx3.init()
  101.  
  102. # Только если у вас установлены голоса для синтеза речи!
  103. voices = speak_engine.getProperty('voices')
  104. speak_engine.setProperty('voice', voices[6].id)
  105.  
  106.  
  107. #speak("Добрый день, создатель")
  108. speak("Аида слушает")
  109.  
  110. stop_listening = r.listen_in_background(m, callback)
  111. while True: time.sleep(0.1) # infinity loop
  112.  
  113. #opts.polling(none_stop=True, interval=0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement