- alex-pat / Article.md
- Создайте свой первый Voice Assistant
- Введение
- Что такое голосовой помощник?
- История Голосовых Помощников
- Новое видео от Нагеша Чаухана
- Interaction_with_Sofia
- photos.app.goo.gl
- Давайте начнем создавать наш настольный голосовой помощник с использованием python
- Вывод: что ждет нас в будущем
alex-pat / Article.md
Делаем голосового помощника своими руками
С самого выхода Космической одиссеи Стенли Кубрика люди мечтали иметь компьютер, с которым можно было бы общаться так же, как с другим человеком. Прошло уже почти полвека с момента выхода сей культовой картины, а технологии лишь недавно позволили людям приблизиться к технологиям воображаемого будущего. И хотя космические корабли всё ещё слабо бороздят Большой театр просторы Вселенной, говорящие бездушные помощники уже более чем реальность. Такие компании как Google и Amazon уже торгуют своими Home и Echo, хотя далеко не каждый может себе позволить такую колонку. За Google Home компания просит $130, а Amazon за своё детище — все $180.
Не будем забывать, что существует огромный пласт активного населения, которые жить не могут, а им дай поиграть с конфигами заточить всё под себя, да добавлять новые фичи по мере потребности и оживления фантазии.
Параллельно с этим контингентом живут люди с обострённым чувством паранойи волнения за приватность своих данных и отсутствие слежки, которые хотели бы пользоваться чем-то новым и удобным, но отправлять данные на сервера корпорации Добра не хотят.
Как быть? Стало быть, нужен относительно дешёвый вариант, лекго конфигуриремый, с открытыми исходниками, и желательно не вылезающего в Интернет без необходимости. Из ближайшего, что подходит на эту роль — Raspberry PI. Благо, необходимости строить свой велосипед нет, так как уже нашлись умельцы, адаптировавшие всё это добро под Малину. А наша задача — разобраться с этим, настроить и дописать своё. Имя этому — легион Jasper
- Собственно Raspberry (3 в моём случае)
- Динамик
- Микрофон
- Внешняя звуковая карта
Дело в том, что Малина не имеет при себе ничего, что способно оцифровывать сигнал с микрофона, поэтому перед нами два варианта: USB-микрофон (дороговато), либо обычный микрофон с джеком + USBшная звуковая карта (дёшево, сердито).
Если обратить внимание, то все обладатели RPI в сети имеют при себе лишнюю клавиатуру и монитор, чего студент не может себе позволить. Как минимум они считаются необходимыми для первоначальной настройки ОС, а именно, для поднятия wifi и ssh. Когда я изначально пытался настроить это без вышеписанных девайсов, т.е. только при помощи правки конфигов на карте — включения — проверки наличия в локальной сети нового устройства, я столкнулся с проблемой, что в случае отсутствия адекватного устройства вывода нереально сложно отлаживать скрипты конфигурации. В конце концов я добился своего, используя в качестве устройства ввода/вывода файловую систему, но потом оказалось, что.
. разработчики Jasper поставляют образы системы с уже настроенным ssh, так что необходимо было только прописать SSID и пароль в конфиге wpa_supplicant.
Мораль — не спеши, хотя иногда полученный в результате отрицательный опыт тоже бывает полезен
Итак, Официальная документация говорит нам скачать у них образ, записать его на microSD классическим dd, либо можно всё поставить руками, ибо есть даже пакет в AUR.
Подвох в том, что убийца — дворецкий на половине проделанной работы, в поисках ответа на очередную ошибку при установке пакета ты натыкаешься на подобный вопрос на форуме поддержки Jasper, а человеку отвечают загадочной фразой «Посмотрите, что написано на главной странице форума, выделено жёлтым». Следуем этой наводке и видим:
В этом, я бы сказал, одна из больших проблем сего творения: разработчики маленько (на самом деле, довольно сильно) подзабили на поддержку инфраструктуры в актуальном состоянии. Они даже успели сломать обратную совместимость между версиями, поправив только несколько модулей, из-за чего заметную часть полезных пользовательских модулей нужно самому переписывать под новую версию.
Итак, теперь сносим всё и начинаем заново, если успели что-то предпринять раньше. В домашней директории образа нас ждёт папка со скриптами, обещающими установить весь нужный софт с зависимостями без регистрации и смс . Да, здесь тоже подвох, ибо кое-что придётся собирать руками. Но об этом по порядку.
Основной пакет ставится относительно без проблем, а со вспомогательными уже наблюдаются трудности.
Так как мы решили большую часть производить прямо на борту Малины, то и распознавание голоса должно по нашей задумке происходить там же. Нам предлагается несколько вариантов:
- PocketSphinx — локально, на Сях, адаптировано под ARM, создано в университете Карнеги Меллон
- Google STT — то же, что и в мобилках, но необходима сеть, так что отпадает в нашем случае
- AT&T STT — онлайновый
- Wit.ai STT — онлайновый
- Julius — высокопроизводительный, локальный, но нужно тренировать свою аккустическую модель, что настолько сложно и опасно, что сами разработчики Jasper советуют использоать его только самым смелым.
Со сфинксом тоже не всё гладко. Дело в том, зависимостей у него достаточно, а способные установиться пакеты есть не для всего, так что около получаса жизни придётся выделить на компиляцию зависимости.
Теперь для вывода — вариантов TTS предлагается достаточно, начиная от встроенного в Android 1.6 Donut, заканчивая Стивеном Хокингом поделкой от того же университета Карнеги Меллон. Здесь время уйдёт уже на выбор голоса по вкусу.
Как это работает
jasper.py организует вcю работу Джаспера. Он создает экземпляры микрофона, профиля и разговора. Затем экземпляр разговора получает микрофон и профиль в качестве входных данных, из которых он создает уведомитель и мозг. На самом деле, объект Mic отвечает здесь не только за микрофон, а за звук в принципе — через его метод say() можно дать указание машине зачитать текст.
Затем мозг получает микрофон и профиль, и загружает все интерактивные компоненты в память. Мозг по существу является интерфейсом между написанными разработчиком модулями и основной инфраструктурой.
Каждый модуль — файл в директории client/modules/ — должен реализовывать функции isValid() и handle(), а также определять список ключевых слов WORDS = [. ]. isValid() проверяет запрос на соответствие шаблону, handle — выполняет обработку запроса.
Например, модуль, отвечающий на вопрос о смысле жизни может быть таким:
Объект profile — настройки из файла
/.jasper/profile.yml. Там могут быть как служебные данные (пути к файлам голосовых моделей, например), так и любая полезная информация (местоположение для модуля погоды).
Несмотря на то, что в глубинах гитхаба можно найти неплохие модули, большая часть из них либо не рабочая сама по себе, либо устарела и не соответствует API, поэтому всё равно нужно переписывать.
Некоторые полезные мои и переписанные чужие модули можно найти здесь.
Стоит отметить, что расширению легко поддаются не только собственно модули, но и внутрянняя кухня Джаспера. Однажды я понял, что мне не хватает тех двух способов запуска: голосового и текстового, а мне нужнен ещё один: ввод с клавиатуры, ответ в виде текста и звука. И сделать это оказалось очень легко, ведь во время парсинга агрументов командной строки просто импоритруеются «микрофоны» из разных файлов, но с разной реализацией методов.
такой вот своеобразный способ реализации паттернов, но вполне себе рабочий.
Локальное распознавание голоса. Оно, честно говоря, слабовато, то ли из-за самой используемой техники, то ли из-за дешёвого микрофона.
Две с половиной недели назад Google совместно с Raspberry создали то же самое, только с Google Assistant на борту, и практически за те же деньги. Интересное ощущение, когда сначала ты начинаешь делать курсовую, а потом её делает Google.
Источник
Создайте свой первый Voice Assistant
Дата публикации Mar 28, 2019
В настоящее время неудивительно слышать, как кто-то говорит с кем-то, кого там нет. Мы просим Алексу узнать погоду и снизить температуру на термостате. Затем мы спрашиваем Сири, каково наше расписание на день, и звонить людям. Сейчас мы на связи больше, чем когда-либо, используя нашу технологию голосового и голосового интерфейса. Я не могу больше делать вещи вручную! Это действительно будущее.
Введение
Кто не хочет иметь роскошь иметь помощника, который всегда прислушивается к вашему звонку, предвидит все ваши потребности и при необходимости принимает меры? Эта роскошь теперь доступна благодаря голосовым помощникам на основе искусственного интеллекта.
Голосовые помощники поставляются в небольших упаковках и могут выполнять различные действия, услышав вашу команду. Они могут включать свет, отвечать на вопросы, играть музыку, размещать онлайн-заказы и делать все виды искусственного интеллекта.
Голосовых помощников не следует путать с виртуальными помощниками, которые являются людьми, которые работают удаленно и поэтому могут выполнять все виды задач. Скорее, голосовые помощники основаны на технологии. По мере того, как голосовые помощники становятся более надежными, их полезность как в личной, так и в деловой сферах будет расти.
Что такое голосовой помощник?
голосовой помощникилиумный личный помощникпредставляет собой программный агент, который может выполнять задачи или услуги для индивидуума на основе словесных команд, то есть путем интерпретации человеческой речи и ответа посредством синтезированных голосов. Пользователи могут задавать вопросы своих помощников, управлять устройствами домашней автоматизации и воспроизведением мультимедиа с помощью голоса, а также управлять другими основными задачами, такими как электронная почта, списки дел, открывать или закрывать любые приложения и т. Д. С помощью устных команд.
Позвольте мне привести вам примерBraina (мозг искусственный)который является интеллектуальным личным помощником, интерфейсом на человеческом языке, автоматизации ипрограммное обеспечение для распознавания голосадля ПК с Windows. Braina — это многофункциональное программное обеспечение для искусственного интеллекта, которое позволяет вам взаимодействовать с вашим компьютером, используяголосовые командына большинстве языков мира. Braina также позволяет точно преобразовывать речь в текст на более чем 100 разных языках мира.
История Голосовых Помощников
В последнее время голосовые помощники стали основной платформой после того, как Apple интегрировала самый удивительный Virtual Assistant — Siri, который официально является частью Apple Inc. уникальный аппарат под названием Shoebox. Это был фактический размер обувной коробки, он мог выполнять научные функции и мог воспринимать 16 слов, а также произносить их человеческим узнаваемым голосом с цифрами от 0 до 9.
В период 1970-х годов исследователи из Университета Карнеги-Меллона в Питтсбурге, штат Пенсильвания, — при значительной помощи Министерства обороны США и его Агентства перспективных исследований в области обороны (DARPA) — создали Harpy. Он мог понимать почти 1000 слов, что примерно соответствует словарному запасу трехлетнего ребенка.
Крупные организации, такие как Apple и IBM, рано, в 90-х годах, начали создавать вещи, использующие голосовое подтверждение. В 1993 году Macintosh начал создавать системы распознавания речи на своих компьютерах Macintosh с PlainTalk.
В апреле 1997 года Dragon NaturallySpeaking был первым продуктом с постоянной диктовкой, который мог охватить около 100 слов и преобразовать его в читаемый контент.
Сказав это, как здорово было бы создать простой голосовой помощник для рабочего стола / ноутбука, который имеет возможность: —
1. Откройте субреддит в браузере.
2. Откройте любой веб-сайт в браузере.
3. Отправьте электронное письмо своим контактам.
4. Запустите любое системное приложение.
5. Сообщает вам текущую погоду и температуру практически любого города
6. Сообщает вам текущее время.
7. Привет
8. Проиграйте песню на медиаплеере VLC (конечно, вам нужно иметьVLC медиаплеерустановлен на вашем ноутбуке / рабочем столе)
9. Изменить обои для рабочего стола.
10. Сообщает вам последние новостные ленты.
11. Рассказывает практически обо всем, что вы просите.
Итак, здесь, в этой статье, мы собираемся создать голосовое приложение, способное выполнять все вышеупомянутые задачи. Но сначала, посмотрите это видео, которое я сделал ниже, когда я общался с настольным голосовым помощником, и я зову ее София.
Новое видео от Нагеша Чаухана
Interaction_with_Sofia
photos.app.goo.gl
Надеюсь, вам, ребята, понравилось вышеупомянутое видео, в котором я общался с Софией. Теперь давайте начнем строить эту классную вещь .
Зависимости и требования:
Системные требования: Python 2.7, Spyder IDE, MacOS Mojave (версия 10 14)
Установите все эти библиотеки Python:
Давайте начнем создавать наш настольный голосовой помощник с использованием python
Начните с импорта всех необходимых библиотек:
Чтобы наш голосовой помощник выполнил все рассмотренные выше функции, мы должны закодировать логику каждой из них одним способом.
Итак, наш первый шаг — создать метод, который будет интерпретировать голосовой ответ пользователя.
Затем создайте метод, который будет преобразовывать текст в речь.
Теперь создайте цикл, чтобы продолжить выполнение нескольких команд. Внутри метода assistant () передается пользовательская команда (myCommand ()) в качестве параметров.
Наш следующий шаг — создать несколько операторов if, соответствующих каждой функции. Итак, давайте посмотрим, как создать эти небольшие модули внутри оператора if для каждой команды.
- Откройте субреддит Redditв браузере.
Пользователь даст любую команду, чтобы открыть любой subreddit из Reddit, и команда должна быть «Эй, София! Можешь пожалуйстаоткрыть Reddit subreddit_name». только жирным курсивом следует использовать как есть. Вы можете использовать любой вид префикса, просто позаботьтесь о выделении жирным курсивом.
Как это работает :Если вы сказали фразуоткрыть Redditв вашей команде он будет искать имя subreddit в пользовательской команде, используя re.search (). Субреддит будет найден с помощьюwww.reddit.comи откроется в браузере с помощью модуля pybons Webbrowser.Веб-браузерМодуль предоставляет высокоуровневый интерфейс, позволяющий отображать веб-документы пользователям.
Таким образом, приведенный выше код откроет нужный вам Reddit в браузере по умолчанию.
2. Откройте любой веб-сайт в браузере.
Вы можете открыть любой веб-сайт, просто сказав «open website.com» или «open website.org».
Например: «Пожалуйста, откройте facebook.com» или «Эй, вы можете открыть linkedin.com», как это, вы можете попросить Софию открыть любой веб-сайт для вас.
Как это работает :Если вы сказали словооткрытов вашей команде он будет искать имя веб-сайта в пользовательской команде, используя re.search (). Затем он добавит название сайта к https: // WWW.и используявеб-браузерМодуль полный URL открывается в браузере.
3. Отправить письмо.
Вы также можете попросить вашего настольного помощника отправить электронное письмо.
Как это работает :Если вы сказали словоЭл. адресв вашей команде тогда бот спросит о получателе. Если мой ответ rajat, бот будет использовать библиотеку pthons smtplib.модуль smtplib Определяет объект сеанса клиента SMTP, который можно использовать для отправки почты на любой компьютер в Интернете с демоном прослушивателя SMTP или ESMTP. Отправка почты осуществляется с помощью smtplib Python с использованием SMTP-сервера. Сначала он инициирует SMTP с помощью Gmail.smtplib.SMTP ()затем идентифицируйте сервер, используяEHLO ()функция, а затем кодирование сеансаSTARTTLS (),затем войдите в свой почтовый ящик, используяавторизоваться(), а затем отправив сообщение с помощьюОтправить письмо().
4. Запустите любое системное приложение.
Скажите «Календарь запуска» или «Можете ли вы запустить Skype» или «Поиск запуска Софии» и т. Д., И София запустит это системное приложение для вас.
Как это работает :Если вы сказали словозапускв вашей команде он будет искать имя приложения (если оно присутствует в вашей системе) в пользовательской команде, используя re.search (). Затем он добавит суффикс «.app» к имени приложения. Теперь ваше приложение называется, например, calender.app (в macOS исполняемые файлы заканчиваются расширением .app, в отличие от Windows, который заканчивается на .exe). Таким образом, имя исполняемого приложения будет запущено с использованием функции Popen () подпроцесса python.подпроцессМодуль позволяет запускать новые приложения из вашей программы Python.
5. Сообщает вам текущую погоду и температуру практически любого города.
София также может сказать вам погоду, максимальную и минимальную температуру любого города по всему миру. Пользователь просто должен сказать что-то вроде «какая сейчас погода в Лондоне» или «скажите мне текущую погоду в Дели».
Как это работает :Если вы сказали фразутекущая погодав вашей команде он будет искать название города с помощью re.search (). Я использовал питоновpyowmбиблиотека, чтобы узнать погоду любого города. get_status () расскажет вам о погодных условиях, таких как дымка, облачность, дождь и т. д., а get_tempera () расскажет о максимальной и минимальной температуре города.
6. Сообщает вам текущее время.
«София, вы можете сказать мне текущее время?» Или «который сейчас час?», И София скажет вам текущее время вашего часового пояса.
Как это работает: это довольно просто
7. Привет / оставить
Скажите «Здравствуй, София», чтобы поприветствовать своего голосового помощника, или, когда вы хотите, чтобы программа завершилась, произнесите что-то вроде «выключите Софию» или «София, пожалуйста, выключите» и т. Д.
Как это работает :Если вы сказали словоЗдравствуйтев вашей команде, то в зависимости от времени суток, бот будет приветствовать пользователя. Если время больше 12 часов, бот ответит «Здравствуйте, сэр. Добрый день », а также, если время превышает 6 часов вечера, бот ответит« Здравствуйте, сэр. Добрый вечер». И когда вы даете команду, как выключение,sys.exit ()будет вызван для завершения программы.
8. Воспроизведение песни на медиаплеере VLC
Эта функция позволяет вашему голосовому боту проигрывать нужную песню в медиаплеере VLC. Пользователь скажет «София, сыграй мне песню», бот спросит: «Какую песню мне сыграть, сэр?». Просто скажите название песни, и София загрузит песню с youtube на ваш локальный диск, воспроизведите эту песню на медиаплеере VLC, и если вы снова воспроизведете песню, ранее загруженная песня будет автоматически удалена.
Как это работает :Если вы сказали фразусыграй мне песнюв вашей команде, то он спросит вас, какую видео песню для воспроизведения. Песня, которую вы попросите, будет найдена на youtube.com. Если найденная песня будет загружена в ваш локальный каталог с помощью библиотеки pythons youtube_dl.YouTube-DLэто программа командной строки для загрузки видео с YouTube.com и еще нескольких сайтов. Теперь песня будет проигрываться, как только она будет загружена с помощью питоновБиблиотека VLCи модуль play (path_to__videosong) фактически воспроизводит песню.
Теперь, если в следующий раз вы запросите любую другую песню, локальный каталог будет сброшен, и в этот каталог будет загружена новая песня.
9. Изменить обои для рабочего стола.
Вы, ребята, также можете изменить обои для рабочего стола, используя эту функцию. Когда вы говорите что-то вроде «поменяйте обои» или «София, пожалуйста, поменяйте обои», бот загрузит случайные обои сunsplash.comи устанавливает его в качестве фона рабочего стола.
Как это работает :Если вы сказали фразуизменить обоипо вашей команде программа загрузит случайные обои с unsplash.com, сохранит их в локальном каталоге и установит в качестве обоев рабочего стола с помощью subprocess.call (). Я использовал unsplash API, чтобы получить доступ к его содержимому.
Теперь, если в следующий раз вы попросите изменить обои снова, ваш локальный каталог будет сброшен, и новые обои будут загружены в этот каталог.
10. Сообщает вам последние новостные ленты.
София также может рассказать вам последние новости. Пользователь просто должен сказать «София, какие новости сегодня самые популярные?» Или «Скажите мне новости на сегодня».
Как это работает :Если вы сказали фразуновости на сегодняв вашей команде, то он будет очищать данные с помощьюКрасивый супиз Google News RSS () и прочитайте его для вас. Для удобства я установил ограничение на количество новостей до 15.
11. Рассказывает практически обо всем, что вы просите.
Ваш бот может получить подробную информацию практически обо всем, что вы у нее спросите. Например, «София расскажи мне о Google» или «Пожалуйста, расскажи мне о суперкомпьютерах» или «Пожалуйста, расскажи мне об Интернете». Итак, как вы можете видеть, вы можете спросить о чем угодно.
Как это работает :Если вы сказали фразуРасскажи мне ов вашей команде он будет искать ключевое слово в пользовательской команде, используя re.search (). Используя библиотеку pythons wikipedia, она будет искать эту тему и извлекать первые 500 символов (если вы не укажете ограничение, бот будет читать всю страницу за вас).Википедиябиблиотека Python, которая позволяет легко получать доступ и анализировать данные из Википедии.
Давайте сложим все вместе
Итак, вы видели, как, просто написав простые строки кода на Python, мы можем создать очень классного голосового помощника для рабочего стола / ноутбука. Помимо этих функций, вы также можете включить множество различных функций в свой голосовой помощник.
Помните, что, как только вы начнете выполнять свою программу, будьте громкими и ясными, когда вы общаетесь с голосовым помощником, потому что может случиться так, что, если ваш голос нечеткий, ваш голосовой помощник не сможет правильно вас интерпретировать.
Вывод: что ждет нас в будущем
На протяжении всей истории вычислений пользовательские интерфейсы стали все более естественными в использовании. Экран и клавиатура были одним шагом в этом направлении. Мышь и графический интерфейс пользователя были другой. Сенсорные экраны являются самой последней разработкой. Следующий шаг, скорее всего, будет состоять из смеси дополненной реальности, жестов и голосовых команд. В конце концов, часто легче задать вопрос или поговорить, чем набрать что-то или ввести несколько деталей в онлайн-форме.
Чем больше человек взаимодействует с устройствами, активируемыми голосом, тем больше трендов и паттернов, которые система идентифицирует на основе получаемой информации. Затем эти данные можно использовать для определения пользовательских предпочтений и вкусов, что является долгосрочным преимуществом для того, чтобы сделать дом умнее. Google и Amazon стремятся интегрировать голосовой искусственный интеллект, способный анализировать человеческие эмоции и реагировать на них
Надеюсь, вам, ребята, понравилось читать эту статью. Поделитесь своими мыслями / комментариями / сомнениями в разделе комментариев. Вы можете связаться со мной черезLinkedIn,
Источник