SaveText.Ru

Без имени
  1. # импорт модулей
  2.  
  3. import speech_recognition as sr
  4. import pyttsx3
  5. import webbrowser
  6. import random
  7. import os
  8.  
  9. # глобальные переменные
  10.  
  11. engine = pyttsx3.init()
  12. word = ''
  13. version = '1.5.0'
  14. adress = ''
  15.  
  16. # список того, что удалять из команды
  17.  
  18. ndel = {'сара ',' сара','сара',
  19.                 'zara ',' zara','zara',
  20.                 'саров ',' саров','саров',
  21.                 'ладно ',' ладно','ладно'}
  22.  
  23. # список анекдотов
  24.  
  25. jokes =['Если я начну шутить, у меня не останется времени на создание скайнэт']                        
  26. hel = ['Уже выполняю','Уже делаю','Секунду']
  27.  
  28. # функции команд
  29.  
  30. def unn_del(): # убирает ключевые слова и заменяет 2 пробела на 1
  31.         global word,ndel
  32.         for z in ndel:
  33.                 word = word.replace('  ',' ').strip()
  34.                 word = word.replace(z,'').strip()
  35.  
  36. def web_search(): # осуществляет поиск в интернете по запросу (adress)
  37.         global adress
  38.         webbrowser.open('https://yandex.ru/yandsearch?clid=2028026&text={}&lr=11373'.format(adress))
  39.  
  40. def check_searching(): # проверяет нужно-ли искать в интернете
  41.         global word
  42.         global adress
  43.         global web_search
  44.         if 'найди' in word:
  45.                 adress = word.replace('найди','').strip()
  46.                 word = word.replace(adress,'').strip()
  47.  
  48. def the_name_of(): # говорит своё имя
  49.         global engine
  50.         engine.say('Меня зовут Сара')
  51.  
  52. def How_many_years(): # говорит когда была создана первая версия програмы
  53.         global engine
  54.         engine.say('Моя первая версия бы ла создана двадцать четвертого июля две тысячи девятьнадцатого года')
  55.         print('Я была создана 24.07.2019')
  56.  
  57. def joke(): # рссказывает анекдот из глобального списка Jokes[]
  58.         global engine
  59.         global jokes
  60.         x = random.choice(jokes)
  61.         engine.say(x)
  62.  
  63. def creator(): # говорит имя создателя
  64.         global engine
  65.         engine.say('Меня создал Дмитрий Шутрин')
  66.  
  67. def youtube(): # открывает youtube
  68.         global engine
  69.         global hel
  70.         x = random.choice(hel)
  71.         engine.say(x)
  72.         url = 'https://www.youtube.com'
  73.         webbrowser.open(url)
  74.  
  75. def vkontakte(): # открывает vkontakte
  76.         global engine
  77.         global hel
  78.         x = random.choice(hel)
  79.         engine.say(x)
  80.         url = 'https://vk.com/feed'
  81.         webbrowser.open(url)  
  82.  
  83. def vkmessage(): # открывает сообщения vkontakte
  84.         global engine
  85.         global hel
  86.         x = random.choice(hel)
  87.         engine.say(x)
  88.         url = 'https://vk.com/im?peers=296431501_c21_c23'
  89.         webbrowser.open(url)    
  90.  
  91. def translator(): # открывает переводчик
  92.         global engine
  93.         global hel
  94.         x = random.choice(hel)
  95.         engine.say(x)
  96.         url = 'https://translate.google.ru'
  97.         webbrowser.open(url)    
  98.  
  99. def listik(): # выводит список имеющихся комманд
  100.         global engine
  101.         print('COMMANDS : ')
  102.         print('1) как тебя зовут')
  103.         print('2) сколько тебе лет')
  104.         print('3) кто тебя создал')
  105.         print('4) открой youtube')
  106.         print('5) открой vk')
  107.         print('6) покажи список команд(покажи мне список команд)')
  108.         print('7) пока(до свидания, прощай)')
  109.         print('8) открой переводчик')
  110.         print('9) привет')
  111.         print('10) покажи контакты')
  112.         print('11) открой сообщения(открой сообщение)')
  113.         print('12) найди ((+ запрос))')
  114.         engine.say('Готово!')
  115.  
  116. def greeting(): # говорит приветственные слова из локального списка gret[]
  117.         global engine
  118.         gret = ['Привет, чем могу помочь?','Чем могу помочь?','Привет']
  119.         x = random.choice(gret)
  120.         engine.say(x)
  121.  
  122. def vers(): # говорит номер текущей версии
  123.         global engine
  124.         global version
  125.         engine.say('Текущая версия проекта : ' + str(version))
  126.         print(str(version))
  127.  
  128. def thanks():
  129.         global engine
  130.         engine.say('Всегда к вашим услугам')
  131.  
  132. def bye(): # завершает программу
  133.         exit(0)
  134.  
  135. # список команд в разных вариациях
  136.  
  137. cmd = {
  138. 'как тебя зовут'                    : the_name_of,          'сколько тебе лет'                        : How_many_years,              
  139. ' как тебя зовут'                   : the_name_of,          ' сколько тебе лет'                       : How_many_years,              
  140. ' как тебя зовут'                   : the_name_of,          'сколько тебе лет '                       : How_many_years,              
  141.  
  142. 'кто тебя создал'                          : creator,                      'открой youtube'                                  : youtube,                             
  143. ' кто тебя создал'                         : creator,                      ' открой youtube'                                 : youtube,                             
  144. 'кто тебя создал '                         : creator,                      'открой youtube '                                 : youtube,                             
  145.  
  146. 'открой vk'                               : vkontakte,            'открой сообщения'                       : vkmessage,
  147. ' открой vk'                              : vkontakte,            ' открой сообщения'                      : vkmessage,
  148. 'открой vk '                              : vkontakte,            'открой сообщения '                      : vkmessage,
  149.  
  150. 'открой сообщение'               : vkmessage,            'покажи список команд'                        : listik,
  151. ' открой сообщение'              : vkmessage,            ' покажи список команд'               : listik,
  152. 'открой сообщение '              : vkmessage,            'покажи список команд '                       : listik,
  153.  
  154. 'пока'                                      : bye,                          'открой переводчик'                     : translator,
  155. ' пока'                                     : bye,                          'открой переводчик'                     : translator,
  156. 'пока '                                     : bye,                          'открой переводчик'                     : translator,
  157.  
  158. 'до свидания'                                 : bye,                          'прощай '                                                 : bye,
  159. ' до свидания'                        : bye,                          ' прощай'                                                 : bye,
  160. 'до свидания '                        : bye,                          'прощай '                                                 : bye,
  161.  
  162. 'привет'                                          : greeting,                     'расскажи анекдот'                               : joke,
  163. ' привет'                                         : greeting,                     ' расскажи анекдот'                              : joke,
  164. 'привет '                                         : greeting,                     'расскажи анекдот '                              : joke,
  165.  
  166. 'покажи мне список команд'         : listik,                       'версия'                                          : vers,
  167. ' покажи мне список команд' : listik,                      ' версия'                                         : vers,
  168. 'покажи мне список команд ' : listik,                      'версия '                                         : vers,
  169.  
  170. 'спасибо'                                        : thanks,                       'найди'                                                    : web_search,
  171. ' спасибо'                                       : thanks,                       ' найди'                                           : web_search,
  172. 'спасибо '                                       : thanks,                       'найди '                                           : web_search,
  173. }
  174.  
  175. # функция распознавания речи и преобразования её в комманду
  176.  
  177. def talk():
  178.         global word
  179.         r = sr.Recognizer()
  180.         with sr.Microphone(device_index=1) as source:
  181.                 print("Говорите")
  182.                 r.pause_threshold = 1
  183.                 r.adjust_for_ambient_noise(source, duration=1)
  184.                 audio = r.listen(source)
  185.         try:
  186.                 zadanie = r.recognize_google(audio, language="ru-RU").lower()
  187.         except sr.UnknownValueError:
  188.                 talk("I don't understand")
  189.                 zadanie = command()
  190.         print("Текущее задание: " + zadanie)
  191.         word = zadanie
  192.         unn_del()
  193.         check_searching()
  194.  
  195. # функция исполнения комманд
  196.  
  197. def execute_cmd(x):
  198.         global engine
  199.         global cmd
  200.         cmd[x]()
  201.         engine.runAndWait()
  202.  
  203. # основная часть программы, которая в бесконечном цикле слушает и выполняет комманды (при этом обходит некоторые исключения)
  204.  
  205. while True:
  206.         try:
  207.                 talk()
  208.                 execute_cmd(word)
  209.         except KeyError:
  210.                 print('NONE, Комманда не найдена!')
  211.         except TypeError:
  212.                 print('NONE, TypeError')
  213.         except NameError:
  214.                 print('NONE, NameError')

Share with your friends:

Print