Вы когда-нибудь задумывались, как здорово было бы иметь своего собственного ИИ-ассистента (типа Д.Ж.А.Р.В.И.С.)? Было бы гораздо легче отправлять письма, искать информацию в Википедии, не открывая браузер, и выполнять ещё много других действий с помощью одного только голоса.
В этом уроке мы узнаем, как написать код собственного голосового помощника на Python.
Перед тем, как начать, мы должны определиться, какими функциями должен обладать наш голосовой помощник:
- Отправка электронных писем
- Воспроизведение музыки
- Запросы в Википедию
- Открытие сайтов, таких как Google, YouTube, Stackoverflow, freecodecamp и т.д. в браузере
- Открытие редактора кода или IDE одной голосовой командой
И всё это без ручного ввода запросов в браузере!
А теперь приступим, собственно, к написанию нашего помощника.
И да: не забудьте сперва придумать ему имя :з
Настройка среды
Я использую PyCharm, но вы можете выбрать абсолютно любой удобный вам редактор.
Маруся — твой голосовой друг!
Сперва мы импортируем/установим все необходимые библиотеки:
- pyttsx3;
- datetime;
- speech recognition;
- wikipedia;
- webbrowser;
- os.path;
- smtplib.
Определение функции воспроизведения речи
Интеллектуальному голосовому помощнику прежде всего полагается говорить. Чтобы бот говорил, мы определим функцию speak() ,которая принимает на входе аудио и произносит его.
def speak(audio): pass #пока так, позже мы напишем все условия.
Теперь нам нужно аудио, чтобы обеспечить коммуникацию пользователя и ассистента. Для этого мы установим модуль pyttsx3 .
Что такое pyttsx3 ?
Это библиотека Python, которая поможет нам конвертировать текст в устную речь. Она работает оффлайн и доступна как для Python 3, так и для Python 2.
pip install pyttsx3
После успешной установки pyttsx3 нужно импортировать модуль в нашу программу.
import pyttsx3 engine = pyttsx3.init(‘sapi5’) voices = engine.getProperty(‘voices’) #даёт подробности о текущем установленном голосе engine.setProperty(‘voice’, voice[1].id) # 0-мужской , 1-женский
Что такое sapi5? Microsoft Speech API (SAPI5) – технология для распознавания и синтеза речи, предоставленная Microsoft.
VoiceId помогает нам выбирать разные голоса:
- voice[0].id = мужской голос
- voice[1].id = женский голос
Создание функции speak()
def speak(audio): engine.say(audio) engine.runAndWait() #Без этой команды мы не услышим речь
Создание функции main()
Теперь определим функцию main() и вызовем функцию speak() внутри неё.
if __name__==»__main__» : speak(‘Hello Sir, I am Friday, your Artificial intelligence assistant. Please tell me how may I help you’)
P.S. Я назову своего ассистента Friday (Пятница).
Всё, что вы передадите функции speak() , будет полностью преобразовано в звук. Поздравляю: наш голосовой помощник обрел свой голос и готов с нами болтать!
Распаковка и возможности умной колонки Капсула Нео с голосовым помощником Марусей
Создание функции wishme()
Теперь мы напишем функцию wishme() , благодаря которой наш голосовой помощник будет приветствовать нас разными способами в зависимости от времени на компьютере.
Чтобы предоставить нашему ассистенту информацию о времени, мы должны импортировать модуль datetime,делается это следующей командой:
import datetime
Теперь напишем функцию wishme() :
def wishme(): hour = int(datetime.datetime.now().hour)
Здесь мы сохраняем целочисленное значение текущего часа в переменную hour . Используем это значение в конструкции if-else :
def wishMe(): hour = int(datetime.datetime.now().hour) if hour>=0 and hour=12 and hour
Определение функции takeCommand():
Следующий важный аспект в нашем помощнике: он должен уметь принимать команду с помощью микрофона нашей системы. Для этого мы создадим функцию takeCommand() .
С помощью takeCommand() наш интеллектуальный ассистент сможет возвращать строку, принимая голосовые команды по микрофону.
Но перед определением takeCommand() мы должны установить модуль speechRecognition следующей командой:
pip install speechRecognition
После установки импортируем модуль в программу:
import speechRecognition as sr
Начнём написание функции takeCommand() :
def takeCommand(): #Принимает на входе аудио от микрофона, возвращает строку с нашими словами r = sr.Recognizer() with sr.Microphone() as source: print(«Listening. «) r.pause_threshold = 1 audio = r.listen(source)