Созданием голосовых навыков я начал заниматься в начале 2017 года — устройства Echo от Amazon с ассистентом Alexa (Алекса). На тот момент инструменты для разработчиков были доступны уже полтора года, хотя не шли в сравнение с тем, что предлагают Amazon и Google сегодня. Открыв панель Яндекс Диалогов, я как раз вспомнил то начало и насколько все изменилось до сегодняшнего дня.

Хотелось бы поделиться с вами первым опытом и впечатлениями создания навыка на русском языке для Яндекс Алисы (Яндекс Диалогов) после опыта с Alexa Skills Kit и Amazon Lex.

image
Самая простая схема, как работает голосовой помощник.

Все различия между платформами находятся посередине – платформе, которая распознает речь, обрабатывает запросы на входе и выводит ответ пользователю, и в зависимости от ее простоты/сложности, работа разработчика упрощается/усложняется, может быть и вовсе не нужна для очень простого навыка (например, используя Dialogflow).

После открытия Диалогов от Яндекса, меня сразу смутил простой интерфейс, слишком простой — где всё и как этим управлять? Оказалось, это все что на данный момент предлагает Яндекс.

Цели или “Intents”


Первое, что я ожидал увидеть в Диалогах, это «intents», что дословно переводится как «намерения» или «цели». Каждый такой «intent» содержит примеры запросов пользователя. Создание таких наборов даёт понять разработчик��, что от него хочет пользователь. Например, мы могли бы создать такие «цели» («intents»):

«ЗаказПельменей» с примерами запросов:
«закажи доставку пельменей»
«я хочу пельмени, сделай заказ»
«пельмени с куриным мясом, побольше сыра»

«Помощь» с примерами запросов:
«я застрял»
«помощь»
«как этим пользоваться»

С помощью таких примеров, нам легко понять пользователя и его ожидания — пользователь сказал «я хочу пельмени, сделай заказ», значит наша «цель» («intent») «ЗаказПельменей», значит работаем в пределах этого запроса. В идеале, платформа должна обучаться и понимать похожие фразы. На данный момент Яндекс не предлагает функции “intents”, хотя я уверен, эта возможность будет добавлена в следующем году.

Сущности или “Entities”


Дальше идут «сущности» (entities (Google) или slots (Amazon)) — ключевые слова или фразы. К счастью, Яндекс Диалоги на данный момент распознают 4 вида сущностей — это дата (включая «завтра», «в следующем году»), числа, гео-данные (на данный момент я активно использую страны и города) и имена. Это значительно упрощает жизнь разработчика, они облегчают и придают гибкости во время разработки навыка.

Если посмотреть на больших братьев — они позволяют разработчику самому создавать «сущности», а также предлагают широкий выбор интегрированных «сущностей», например AMAZON.Food (еда) и AMAZON.Airports (названия аэропортов).

image
Интерфейс Alexa Skills Kit. Еще в прошлом году все менялось в простом текстовом поле, сегодня — это богатый интерфейс с расширенными возможностями, который постоянно обновляется. С нетерпением ждем обновлений Яндекса.

На данный момент я разрабатываю навык, где не помешала бы «сущность» времен года, списка с видами спорта и названиями мероприятий. Чтобы «подобрать» нужные слова, нужно менять код.

Тестирование


Здесь все печально. Тест упирается в один чат и окном JSON запроса и вывода. Только клавиатура, без ввода или вывода голосом, а также без возможности тестировать другим пользователям. Проще говоря, инструментов для теста здесь нет.

Русский язык


Стоит упомянуть — создание голосовых навыков на русском языке немного усложняется свойствами языка. Например, если на английском мы говорим «to France», «from France» и «with France», разложив те же слова по падежам на русском звучат «во ФранциЮ», «из ФранциИ» и «с ФранциЕЙ». Решению таких и похожих задач помогут небольшие функции.

Итак


Что хорошо:

  • Интегрированные сущности.
  • Возможность подключить webhook. Как без него.
  • Служба поддержки. Я отправлял запросы на выходных, в понедельник получил ответ.


Что ждём: (диалогам несколько месяцев, поэтому не буду выделять как минусы.)

  • Создание своих сущностей.
  • Больше интегрированных сущностей (название аэропортов, ресторанов и т.д.).
  • Цели (intents) — коллекции фраз.
  • Возможность использования командной строки (CLI).
  • Тестирование голосом и прослушивание вывода.
  • Все что связано с тестированием (бета тесты, возможность добавлять пользователей и т.д.)

Конкуренты


Также как и в мире поисковиков, конкурент один — Google со своим Dialogflow.

На данный момент русский язык в Dialogflow поддерживается только в одну сторону speech-to-text, поэтому Яндекс здесь в лидерах.

Приятно также то, что разобравшись с одной платформой, разработчик сможет без труда освоить все остальные.

Ждем нововведений


Во время разработки навыка, в течении нескольких недель, Яндекс не раз вводили изменения в Диалоги, главное, чтобы держали темп. Алиса и ее инструменты еще молоды как и весь мировой рынок голосовых устройств.