- Как сделать Алису стандартным голосовым ассистентом на Android
- Меняем Google Assistant на Алису
- И что же это даст?
- Вызов Алисы через беспроводные наушники
- Пишем голосового ассистента на Python
- Введение
- Что умеет мой голосовой ассистент?
- Шаг 1. Обработка голосового ввода
- Шаг 2. Конфигурация голосового ассистента
- Шаг 3. Обработка команд
- 1 способ
- 2 способ
- Шаг 4. Добавление мультиязычности
- Шаг 5. Немного машинного обучения
- Заключение
- Лучшие голосовые помощники для Android
- Яндекс Алиса
- Google Assistant
- Маруся
- Robin
Как сделать Алису стандартным голосовым ассистентом на Android
Несмотря на то, что Google Assistant давно умеет разговаривать на русском, Алиса от Яндекса наверняка является любимой голосовой помощницей русскоговорящих пользователей. Вот только ассистент от «корпорации добра» всё-таки лучше интегрирован в Android, чем Алиса. К счастью (или к сожалению для Google), в «Настройках» есть возможность смены голосового ассистента, а в последних версиях «Яндекса» появилась её поддержка со стороны приложения.
Меняем Google Assistant на Алису
Для начала убедитесь, что у вас установлена последняя версия приложения Яндекс, а именно — 9.40 или новее.
Чтобы сменить голосового ассистента, зайдите в «Настройки» операционной системы, в пункт «Приложения и уведомления».
Пролистываем вниз, нажимаем «Дополнительно» и заходим в «Приложения по умолчанию».
Заходим в «Ассистент и голосовой ввод» → «Ассистент». Здесь выбираем «Яндекс» и соглашаемся.
И что же это даст?
При зажатии кнопки Home или двойном нажатии кнопки питания теперь будет запускаться Алиса, а не голосовой помощник Google.
Но при этом активация с экрана блокировки на чистом Android (с версии 6.0 до 9.0) исчезнет. Вместо значка микрофона будет приложение «Телефон». Для некоторых это может быть вообще плюсом.
Вызов Алисы через беспроводные наушники
Голосовой ассистент при активации с беспроводных наушников выбирается отдельно, через старый интерфейс выбора приложения по умолчанию.
Включите телефон, подключите наушники и выполните жест, активирующий ассистента (он отличается у разных моделей наушников). На экране появятся возможные варианты, выберите «Яндекс» и нажмите «Всегда».
Источник
Пишем голосового ассистента на Python
Введение
Технологии в области машинного обучения за последний год развиваются с потрясающей скоростью. Всё больше компаний делятся своими наработками, тем самым открывая новые возможности для создания умных цифровых помощников.
В рамках данной статьи я хочу поделиться своим опытом реализации голосового ассистента и предложить вам несколько идей для того, чтобы сделать его ещё умнее и полезнее.
Что умеет мой голосовой ассистент?
Описание умения | Работа в offline-режиме | Требуемые зависимости |
Распознавать и синтезировать речь | Поддерживается | pip install PyAudio (использование микрофона) |
pip install pyttsx3 (синтез речи)
Для распознавания речи можно выбрать одну или взять обе:
- pip install SpeechRecognition (высокое качество online-распознавания, множество языков)
- pip install vosk (высокое качество offline-распознавания, меньше языков)
Шаг 1. Обработка голосового ввода
Начнём с того, что научимся обрабатывать голосовой ввод. Нам потребуется микрофон и пара установленных библиотек: PyAudio и SpeechRecognition.
Подготовим основные инструменты для распознавания речи:
Теперь создадим функцию для записи и распознавания речи. Для онлайн-распознавания нам потребуется Google, поскольку он имеет высокое качество распознавания на большом количестве языков.
А что делать, если нет доступа в Интернет? Можно воспользоваться решениями для offline-распознавания. Мне лично безумно понравился проект Vosk.
На самом деле, необязательно внедрять offline-вариант, если он вам не нужен. Мне просто хотелось показать оба способа в рамках статьи, а вы уже выбирайте, исходя из своих требований к системе (например, по количеству доступных языков распознавания бесспорно лидирует Google).
Теперь, внедрив offline-решение и добавив в проект нужные языковые модели, при отсутствии доступа к сети у нас автоматически будет выполняться переключение на offline-распознавание.
Замечу, что для того, чтобы не нужно было два раза повторять одну и ту же фразу, я решила записывать аудио с микрофона во временный wav-файл, который будет удаляться после каждого распознавания.
Таким образом, полученный код выглядит следующим образом:
Возможно, вы спросите «А зачем поддерживать offline-возможности?»
Я считаю, что всегда стоит учитывать, что пользователь может быть отрезан от сети. В таком случае, голосовой ассистент всё еще может быть полезным, если использовать его как разговорного бота или для решения ряда простых задач, например, посчитать что-то, порекомендовать фильм, помочь сделать выбор кухни, сыграть в игру и т.д.
Шаг 2. Конфигурация голосового ассистента
Поскольку наш голосовой ассистент может иметь пол, язык речи, ну и по классике, имя, то давайте выделим под эти данные отдельный класс, с которым будем работать в дальнейшем.
Для того, чтобы задать нашему ассистенту голос, мы воспользуемся библиотекой для offline-синтеза речи pyttsx3. Она автоматически найдет голоса, доступные для синтеза на нашем компьютере в зависимости от настроек операционной системы (поэтому, возможно, что у вас могут быть доступны другие голоса и вам нужны будут другие индексы).
Также добавим в в main-функцию инициализацию синтеза речи и отдельную функцию для её проигрывания. Чтобы убедиться, что всё работает, сделаем небольшую проверку на то, что пользователь с нами поздоровался, и выдадим ему обратное приветствие от ассистента:
На самом деле, здесь бы хотелось самостоятельно научиться писать синтезатор речи, однако моих знаний здесь не будет достаточно. Если вы можете подсказать хорошую литературу, курс или интересное документированное решение, которое поможет разобраться в этой теме глубоко — пожалуйста, напишите в комментариях.
Шаг 3. Обработка команд
Теперь, когда мы «научились» распознавать и синтезировать речь с помощью просто божественных разработок наших коллег, можно начать изобретать свой велосипед для обработки речевых команд пользователя 😀
В моём случае я использую мультиязычные варианты хранения команд, поскольку у меня в демонстрационном проекте не так много событий, и меня устраивает точность определения той или иной команды. Однако, для больших проектов я рекомендую разделить конфигурации по языкам.
Для хранения команд я могу предложить два способа.
1 способ
Можно использовать прекрасный JSON-подобный объект, в котором хранить намерения, сценарии развития, ответы при неудавшихся попытках (такие часто используются для чат-ботов). Выглядит это примерно вот так:
Такой вариант подойдёт тем, кто хочет натренировать ассистента на то, чтобы он отвечал на сложные фразы. Более того, здесь можно применить NLU-подход и создать возможность предугадывать намерение пользователя, сверяя их с теми, что уже есть в конфигурации.
Подробно этот способ мы его рассмотрим на 5 шаге данной статьи. А пока обращу ваше внимание на более простой вариант
2 способ
Можно взять упрощенный словарь, у которого в качестве ключей будет hashable-тип tuple (поскольку словари используют хэши для быстрого хранения и извлечения элементов), а в виде значений будут названия функций, которые будут выполняться. Для коротких команд подойдёт вот такой вариант:
Для его обработки нам потребуется дополнить код следующим образом:
В функции будут передаваться дополнительные аргументы, сказанные после командного слова. То есть, если сказать фразу «видео милые котики«, команда «видео» вызовет функцию search_for_video_on_youtube() с аргументом «милые котики» и выдаст вот такой результат:
Пример такой функции с обработкой входящих аргументов:
Ну вот и всё! Основной функционал бота готов. Далее вы можете до бесконечности улучшать его различными способами. Моя реализация с подробными комментариями доступна на моём GitHub.
Ниже мы рассмотрим ряд улучшений, чтобы сделать нашего ассистента ещё умнее.
Шаг 4. Добавление мультиязычности
Чтобы научить нашего ассистента работать с несколькими языковыми моделями, будет удобнее всего организовать небольшой JSON-файл с простой структурой:
В моём случае я использую переключение между русским и английским языком, поскольку мне для этого доступны модели для распознавания речи и голоса для синтеза речи. Язык будет выбран в зависимости от языка речи самого голосового ассистента.
Для того, чтобы получать перевод мы можем создать отдельный класс с методом, который будет возвращать нам строку с переводом:
В main-функции до цикла объявим наш переводчик таким образом: translator = Translation()
Теперь при проигрывании речи ассистента мы сможем получить перевод следующим образом:
Как видно из примера выше, это работает даже для тех строк, которые требуют вставки дополнительных аргументов. Таким образом можно переводить «стандартные» наборы фраз для ваших ассистентов.
Шаг 5. Немного машинного обучения
А теперь вернёмся к характерному для большинства чат-ботов варианту с JSON-объектом для хранения команд из нескольких слов, о котором я упоминала в пункте 3. Он подойдёт для тех, кто не хочет использовать строгие команды и планирует расширить понимание намерений пользователя, используя NLU-методы.
Грубо говоря, в таком случае фразы «добрый день«, «добрый вечер» и «доброе утро» будут считаться равнозначными. Ассистент будет понимать, что во всех трёх случаях намерением пользователя было поприветствовать своего голосового помощника.
С помощью данного способа вы также сможете создать разговорного бота для чатов либо разговорный режим для вашего голосового ассистента (на случаи, когда вам нужен будет собеседник).
Для реализации такой возможности нам нужно будет добавить пару функций:
А также немного модифицировать main-функцию, добавив инициализацию переменных для подготовки модели и изменив цикл на версию, соответствующую новой конфигурации:
Однако, такой способ сложнее контролировать: он требует постоянной проверки того, что та или иная фраза всё ещё верно определяется системой как часть того или иного намерения. Поэтому данным способом стоит пользоваться с аккуратностью (либо экспериментировать с самой моделью).
Заключение
На этом мой небольшой туториал подошёл к концу.
Мне будет приятно, если вы поделитесь со мной в комментариях известными вам open-source решениями, которые можно внедрить в данный проект, а также вашими идеями касательно того, какие ещё online и offline-функции можно реализовать.
Документированные исходники моего голосового ассистента в двух вариантах можно найти здесь.
P.S: решение работает на Windows, Linux и MacOS с незначительными различиями при установке библиотек PyAudio и Google.
Кстати, тех, кто планирует строить карьеру в IT, я буду рада видеть на своём YouTube-канале IT DIVA. Там вы сможете найти видео по тому, как оформлять GitHub, проходить собеседования, получать повышение, справляться с профессиональным выгоранием, управлять разработкой и т.д.
Источник
Лучшие голосовые помощники для Android
Если владельцам устройств с iOS всегда готова помочь Siri, то у обладателей гаджетов с Android есть возможность выбрать своего голосового помощника.
Искусственный интеллект – это больше не выдумка из раздела «Научная Фантастика на третьей полке». Роботы уже давно проникают в дома людей под видом умных колонок и мобильных приложений для смартфонов. За последние годы многие компании серьёзно продвинулись в разработке ИИ. Электронные ассистенты стали гораздо более функциональными, и теперь производители развлекаются тем, что «сталкивают их лбами», пытаясь понять, какой голосовой помощник умнее.
Наиболее толковым из электронных ассистентов долгое время являлась Siri – что и неудивительно, ведь Apple доводила программу до ума целых 6 лет. В 2019 году IQ Loup Ventures протестировали голосовых помощников и выяснили — Google Assistant понимает больше вопросов, чем конкуренты и дает наиболее развернутые и понятные ответы. На втором месте Siri от Apple, третье место досталось Alexa от Amazon. Справедливости ради, тройка лидеров показала близкие результаты, поэтому явного лидера здесь нет.
Между тем количество голосовых помощников не ограничено перечисленными выше вариантами. Их больше, а о лучших рассказано в нашем обзоре.
Яндекс Алиса
Один из лучших голосовых помощников среди функционирующих на русском языке. Это приложение адекватно реагирует на русскоязычные фразы пользователя. При этом программа создавалась скорее для развлечения, чем для реальной пользы. Нет, «Алиса» вполне способна подсказать о том, какая погода за окном, либо проложить маршрут до нужного места, но в первую очередь этот голосовой помощник предназначен для всяческих игр. В частности, с «Алисой» можно поиграть в «Города», «Угадай актера», «Угадай песню» и разные другие игры. И процесс может не на шутку увлечь!
Необходимо помнить, что голосовой помощник разработан самым популярным в России поисковиком. Это значит, что приложение отлично справляется с функциями, которыми чаще всего пользуются посетители сайта «Яндекс». Например, «Алиса» моментально подскажет курс определенной валюты к рублю. Не составит труда программе и пересчитать какое-то количество долларов, переведя его в российскую валюту. Вообще, проще всего использовать голосовой помощник именно в качестве конвертера. Или советника — «Алиса» вполне может посоветовать какое-то заведение для посещения, будь то ресторан, театр, развлекательный клуб или кинотеатр.
Многие пользователи любят узнавать о самой «Алисе». Необходимо заметить, что голосовой помощник ведет себя, как настоящая женщина. То есть, приложение в любой момент может начать кокетничать или говорить загадками. В конце концов, начинаешь убеждаться, что у этого помощника есть логика. Женская логика.
Google Assistant
Достаточно быстро в компании Google перешли от разработки Now к созданию Assistant. Первый проект сейчас считается закрытым, тогда как второй активно развивается. Ассистент всемирно известного поисковика сохраняет у себя на сервере все диалоги с пользователем. Делает программа это для саморазвития и поиска ключевых понятий. Постепенно помощник всё сильнее адаптируется к стилю речи человека, нарабатывая широкую базу ответов.
Изначально было анонсировано, что Google Assistant будет доступен только на флагманских смартфонах. Сейчас любой пользователь Android может воспользоваться услугами Ассистент Google. Изначально англоязычный, он теперь без труда понимает русскую речь и выполняет множество функций — запуск музыки, открытие приложений, поиск нужной информации, конвертация валют, поиск маршрутов и нужных мест поблизости. Существенным преимуществом Ассистента является умение звонить абонентам телефонной книги, отправлять сообщения по электронной почте или смс. Такими навыками Алиса пока не обладает и это ее существенный минус.
А еще Google Assistant умеет включать фонарик — мелочь, а приятно.
Маруся
На фоне вышеперечисленных конкурентов Маруся от Mail.ru Group самая юная и поэтому самая неопытная. Разработчики анонсировали ее в 2018 году, а релиз бета-версии произошел летом 2019 года. Тогда Маруся распространялась по инвайтам, но теперь ее может скачать любой пользователь Android. Как и уже существующие помощники, Маруся может рассказать занимательный факт, найти нужную информацию в сети, рассказать гороскоп, найти дешевый билет на самолет. В целом возможности не сильно отличаются от Алисы или Ассистента Google, но уже сегодня она имеет некоторые интересные функции.
Во-первых, помощник от Mail.ru может понять завуалированный вопрос, например, «замерзну ли я в куртке» заставит Марусю сообщить прогноз погоды. Еще одной любопытной фишкой, которой нет у конкурентов является «запоминание». Можно просто наговаривать факты или дела, которые необходимо запомнить без привязки к определенной дате, а после спросить: «Маруся, что ты запомнила?» и получить надиктованный ранее список. Подобные опции есть у Алисы или Ассистента Google, но они ставят конкретное напоминание на определенное время – а это не всегда удобно. Помимо этого, Маруся постепенно интегрируется в сервисы Mail.ru Group – с ее помощью уже можно запустить музыку ВКонтакте, а в обозримом будущем ожидается поддержка и других платформ разработчика.
Создатели Маруси выпустили собственную умную колонку, которая, конечно же, получила интеллектуального помощника. Умная колонка с голосовым управлением «Капсула» стоит около 9 000 рублей. Маруся слышит, когда к ней обращаются благодаря шести встроенным микрофонам и выполняет разные просьбы. Она может рассказать о погоде и важных новостях, найти рецепт к завтраку, напомнить о намеченных делах. А еще она умеет рассказывать детям сказки и петь колыбельные на ночь.
Хотя сейчас Маруся с трудом может тягаться с именитыми соперниками, перечисленными выше, но уже видно — у нее есть потенциал и шансы в обозримом будущем их превзойти. Подробнее о возможностях ассистента можно узнать на официальном сайте.
Главная особенность русскоязычного интеллектуального помощника «Дуся» — полное отсутствие интерфейса. Ассистент постоянно работает в фоне и при этом не занимает ни единого дюйма экрана мобильного гаджета. Запустить приложение «Дуся» можно голосом, взмахом, встряхиванием и множеством других способов.
Разработчики программы акцентируют внимание юзеров на том, что «Дуся» — это не чат-бот, который будет заигрывать с пользователем и рассказывать ему анекдоты а-ля Siri. «Дуся» выполняет те команды, которым обучена – в частности, по голосовому запросу владельца гаджета она способна проложить маршрут на карте, набрать номер, записанный в телефонной книжке, найти музыку в соцсети «ВКонтакте», написать сообщение в What’s App, перевести любую простую фразу на несколько языков. Самое главное – перечень команд, которые понимает «Дуся», не окончательный; он постоянно дополняется. Каждый из пользователей способен предложить свою идею относительно того, как сделать «Дусю» умнее, на специальном форуме.
К числу недостатков программы «Дуся» можно отнести то, что она является платной. Пользователю даётся неделя на знакомство с интеллектуальной помощницей – по истечении этого срока придётся приобрести подписку.
Robin
Приложение «Робин» считается лучшим голосовым помощником для водителя. Автомобилисту не придётся отрывать руки от «баранки», чтобы написать СМС-сообщение, совершить звонок или узнать прогноз погоды. Интеллектуальный ассистент прекрасно справляется с такими задачами, как поиск актуальных новостей и проверка непрочитанных сообщений в соцсетях.
К русификации помощника «Робин» приложили руку подразделения сразу 2-х поисковых гигантов – Google Moscow и Yandex Labs. Результаты превзошли ожидания: «Робин» говорит на русском так, как будто этот язык для него родной.
«Изюминкой» интеллектуального ассистента Robin является его незаурядное чувство юмора. Помощник всегда готов порадовать автомобилиста анекдотом, а в плане забавных ответов даст фору даже «яблочной» Siri. Маркетологи фирмы Audioburst, распространяющей Robin – тоже юморные ребята, ведь иначе они бы точно не смогли создать такой вот шедевральный трейлер:
Источник