Свой голосовой ассистент на Python + google

Начнём с установок.

pip install SpeechRecognition
pip install gTTS

После успешной установки пакетов (у меня Win10 x64, py3.7.1) можем начинать писать код.

начнём как обычно с импортов:

import speech_recognition as sr

Импортируем либу от гугла, которая использует всю мощь их серверов что бы распознать что мы там сказали, импортируем как 'sr', я думаю вам бы тоже не хотелось писать каждый раз обращение "speech_recognition.Microphone()" когда можно кратко и красиво написать "sr.Microphone()".

Итак, начнём с главной функции в которой нас будут слушать.

def command():
 r = sr.Recognizer()

 with sr.Microphone() as source:
  print("Говорите")
  r.pause_threshold = 1
  r.adjust_for_ambient_noise(source, duration=1)
  audio = r.listen(source) 

Что же тут происходит?

Всё довольно таки просто, сначала мы инициализируем объект "r" как sr.Recognizer() а затем с помощью цикла with мы подключаем микрофон.

После print("Говорите") мы записываем звук с микрофона в течении секунды, но если говорим то дольше. Затем мы убираем посторонние шумы, то есть тот кто ближе к микрофону (точнее громче, кхе-кхе) того наша программа и будет слушать. Затем мы создаем переменную audio где будем слушать микрофон который открыли как source.

 try:
  task = r.recognize_google(audio, language="ru-RU").lower()
  print("Вы сказали " + task)
 except:
  task = command()
 return task

Далее в try except мы заключаем код, ибо ошибок может быть очень и очень много (Добавлял эту либу к одному из своих старых проектов) . Задаем переменную task откуда будем брать то что нам отдаст гугл С: Внимательно посмотрите, мы выбираем русский язык, если же вы хотите тренировать свой английский то такой необязательный аргумент как language можно убрать. И да, желательно, что бы потом не мучатся, сделаем возврат слова в маленьких буквах.

Если же мы сказали что то невнятное то гугл вернет ошибку и в этом случае мы перезапустим функцию. Возвращать мы будем наше слово, оно нам нужно для написания функций к ассистенту.

def makeSomething(task):
 print(task)
 if "сайт" in task:
  print("hello")
 elif "питон" in task:
  print("Python <3")
 else:
  print("Иех, скукота")

Затем создаем функцию которая будет принимать на вход то слово которое мы сказали и делать то что мы зададим.

Для тестов я сначала выводил то что сказал. Итак, тут мы видим что если я говорю "сайт" то он будем выводить мне "hello"

Вы же можете добавить условий и функций сколько хотите для вашего удобства.

Что бы вас постоянно слушали - создаем цикл:

while True:
 makeSomething(command())

Минутка скриншотов :)

Не знаю почему там катер, я говорил кодер, но да ладно, гугл считает что я катер :D

теперь я приведу полный листинг программы а ниже функции из своего старого проекта в виде скриншотов. Кому будет интересно - можете глянуть С:

import speech_recognition as sr


def command():
 r = sr.Recognizer()

 with sr.Microphone() as source:
  print("Говорите")
  r.pause_threshold = 1
  r.adjust_for_ambient_noise(source, duration=1)
  audio = r.listen(source) 

 try:
  task = r.recognize_google(audio, language="ru-RU").lower()
  print("Вы сказали " + task)
 except:
  task = command()
 return task


def makeSomething(task):
 print(task)
 if "сайт" in task:
  print("hello")
 elif "питон" in task:
  print("Python <3")
 else:
  print("Иех, скукота")


while True:
 makeSomething(command())
Я не пишу идеальный код, я пишу лишь костыли. Вы всегда можете улучшить мой код.

Поисковики. Открывает вкладку и ищет в гугле то что я скажу. Например я говорю "ИМЯ_БОТА найди окна" и он вбивает в гугл "окна". Тоже самое с ютубом.

Здесь я парсил погоду после чего озвучивал её с помощью другой функции.

И кое что интересное, тут я создал разговорную функцию что бы бот мог поговорить со мной. Но не просто по шаблонам а подключил его к сервису DialogFlow (Dialogflow является разработчиком Google технологий взаимодействия человека с компьютером, основанных на разговорах на естественном языке.) что бы он со временем мог обучаться и разговаривать со мной. Но проект я забросил по некоторым причинам и вот хочу поделиться им с вами.

MoneyPlace | Философия денег