Созданием голосовых навыков я начал заниматься в начале 2017 года — устройства Echo от Amazon с ассистентом Alexa (Алекса). На тот момент инструменты для разработчиков были доступны уже полтора года, хотя не шли в сравнение с тем, что предлагают Amazon и Google сегодня. Открыв панель Яндекс Диалогов, я как раз вспомнил то начало и насколько все изменилось до сегодняшнего дня.
Хотелось бы поделиться с вами первым опытом и впечатлениями создания навыка на русском языке для Яндекс Алисы (Яндекс Диалогов) после опыта с Alexa Skills Kit и Amazon Lex.
Самая простая схема, как работает голосовой помощник.
Все различия между платформами находятся посередине – платформе, которая распознает речь, обрабатывает запросы на входе и выводит ответ пользователю, и в зависимости от ее простоты/сложности, работа разработчика упрощается/усложняется, может быть и вовсе не нужна для очень простого навыка (например, используя Dialogflow).
После открытия Диалогов от Яндекса, меня сразу смутил простой интерфейс, слишком простой — где всё и как этим управлять? Оказалось, это все что на данный момент предлагает Яндекс.
Цели или “Intents”
Первое, что я ожидал увидеть в Диалогах, это «intents», что дословно переводится как «намерения» или «цели». Каждый такой «intent» содержит примеры запросов пользователя. Создание таких наборов даёт понять разработчику, что от него хочет пользователь. Например, мы могли бы создать такие «цели» («intents»):
«ЗаказПельменей» с примерами запросов:
«закажи доставку пельменей»
«я хочу пельмени, сделай заказ»
«пельмени с куриным мясом, побольше сыра»
«Помощь» с примерами запросов:
«я застрял»
«помощь»
«как этим пользоваться»
С помощью таких примеров, нам легко понять пользователя и его ожидания — пользователь сказал «я хочу пельмени, сделай заказ», значит наша «цель» («intent») «ЗаказПельменей», значит работаем в пределах этого запроса. В идеале, платформа должна обучаться и понимать похожие фразы. На данный момент Яндекс не предлагает функции “intents”, хотя я уверен, эта возможность будет добавлена в следующем году.
Сущности или “Entities”
Дальше идут «сущности» (entities (Google) или slots (Amazon)) — ключевые слова или фразы. К счастью, Яндекс Диалоги на данный момент распознают 4 вида сущностей — это дата (включая «завтра», «в следующем году»), числа, гео-данные (на данный момент я активно использую страны и города) и имена. Это значительно упрощает жизнь разработчика, они облегчают и придают гибкости во время разработки навыка.
Если посмотреть на больших братьев — они позволяют разработчику самому создавать «сущности», а также предлагают широкий выбор интегрированных «сущностей», например AMAZON.Food (еда) и AMAZON.Airports (названия аэропортов).
Интерфейс Alexa Skills Kit. Еще в прошлом году все менялось в простом текстовом поле, сегодня — это богатый интерфейс с расширенными возможностями, который постоянно обновляется. С нетерпением ждем обновлений Яндекса.
На данный момент я разрабатываю навык, где не помешала бы «сущность» времен года, списка с видами спорта и названиями мероприятий. Чтобы «подобрать» нужные слова, нужно менять код.
Тестирование
Здесь все печально. Тест упирается в один чат и окном JSON запроса и вывода. Только клавиатура, без ввода или вывода голосом, а также без возможности тестировать другим пользователям. Проще говоря, инструментов для теста здесь нет.
Русский язык
Стоит упомянуть — создание голосовых навыков на русском языке немного усложняется свойствами языка. Например, если на английском мы говорим «to France», «from France» и «with France», разложив те же слова по падежам на русском звучат «во ФранциЮ», «из ФранциИ» и «с ФранциЕЙ». Решению таких и похожих задач помогут небольшие функции.
Итак
Что хорошо:
- Интегрированные сущности.
- Возможность подключить webhook. Как без него.
- Служба поддержки. Я отправлял запросы на выходных, в понедельник получил ответ.
Что ждём: (диалогам несколько месяцев, поэтому не буду выделять как минусы.)
- Создание своих сущностей.
- Больше интегрированных сущностей (название аэропортов, ресторанов и т.д.).
- Цели (intents) — коллекции фраз.
- Возможность использования командной строки (CLI).
- Тестирование голосом и прослушивание вывода.
- Все что связано с тестированием (бета тесты, возможность добавлять пользователей и т.д.)
Конкуренты
Также как и в мире поисковиков, конкурент один — Google со своим Dialogflow.
На данный момент русский язык в Dialogflow поддерживается только в одну сторону speech-to-text, поэтому Яндекс здесь в лидерах.
Приятно также то, что разобравшись с одной платформой, разработчик сможет без труда освоить все остальные.
Ждем нововведений
Во время разработки навыка, в течении нескольких недель, Яндекс не раз вводили изменения в Диалоги, главное, чтобы держали темп. Алиса и ее инструменты еще молоды как и весь мировой рынок голосовых устройств.
Автор: bjurijs