Голосовые помощники как технология возникли благодаря развитию целого созвездия других технологий. И одним из таких голосовых помощников стала Маруся, относительно недавно созданная в Mail.ru Group. В её основе лежат последние разработки компании в области распознавания речи, машинного обучения и быстрой обработки крупных массивов данных. Маруся — это диалоговая платформа. Она способна взаимодействовать с человеком не только звуком, но и посредством изображений или текста. Есть много ситуаций, в которых она ответит не голосом, а изображением, текстом или ссылкой.

Маруся дебютировала еще в прошлом году, а первое устройство с этим ассистентом появилось в апреле 2020. Компания развивает его, делает умнее и наполняет библиотеку скиллов. В частности, ассистент стал лучше понимать пользователя, улучшился TTS. Кроме того, Маруся научилась управлять умным домом. В июне 2020 года Mail.ru Group открыла возможность создавать свои собственные скиллы. С тех пор протокол сильно прокачался и возможности ассистента намного выросли, а для разработчиков появился отладчик, где можно протестировать созданные скиллы.

Содержание:

  1. Как работает Маруся.
  2. Как сделать скилл полезным.
  3. Как создать скилл для Маруси.
  4. Как перенести скилл из других ассистентов.
  5. Как устроена среда отладки скиллов.
  6. Как добавить скилл через ВКонтакте.
  7. Как осуществляется модерация скиллов.
  8. Как добавлять изображения в Марусю.
  9. Как добавлять звуки в Марусю.


1. Как работает Маруся


В основе работы Маруси лежит система «скиллов» или, по-русски, «навыков». Это крохотные диалоговые приложения, в которых прописаны реакции и действия голосового помощника в ответ на определённые голосовые запросы. Этакие микросервисы, если вы знакомы с этой программной архитектурой. Пользователи взаимодействуют со скиллами Маруси, которая может быть встроена в самые разные устройства и отдельные программы. Причём у устройств могут быть сенсорные экраны или только голосовые интерфейсы.

На сегодняшний день Марусю поддерживают:


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

2. Как сделать скилл полезным


Прежде чем начать создавать скилл, постарайтесь абстрагироваться от всех инструментов и процессов. Представьте, что пользователь разговаривает не с устройством, а просит выполнить свою задачу какого-нибудь специалиста. Задумайтесь: «Если бы вместо моего скилла был человек, идеально выполняющий эту задачу, как бы он общался с заказчиком?» Распишите по шагам, как будет проходить этот диалог, какой информацией будут обмениваться заказчик и исполнитель. Учитывайте, что диалог и сценарий использования может отличаться для Маруси в умной колонке и в приложении. В приложении вы можете часть информации вынести в визуальный интерфейс, а в умной колонке доступно только голосовое управление.

При общении с Марусей пользователь может говорить что угодно, и нужно предусмотреть пограничные ситуации, чтобы он не зашёл в тупик. Для этого проверьте свой скилл по чеклисту TRINDI (на русском).

После оттачивания сценария нужно продумать интерфейс. Для проверки его удобства рекомендуем второй важный чек-лист — usability-эвристики Нильсена (на русском). По нему проверьте ключевой сценарий и все подзадачи и ответвления. Чек-лист покажет, доносите ли вы всеми необходимыми способами пользователю сигналы о том, что скилл сработал и как он сработал. А заодно поможет правильно обработать ошибки: не просто выдав уведомление, а с пояснением, что делать дальше.

А еще мы советуем использовать длинное тире (—) в диалогах с пользователем, а в качестве кавычек использовать только начертание, принятое в русской типографике — «ёлочки». И не забывайте, что Маруся обращается на «вы» в независимости от возраста пользователя.

3. Как создать скилл для Маруси


  1. С помощью конструктора голосовых приложений Aimylogic. Платформа скиллов общается с самим скиллом посредством протокола. Вебхук (webhook) — это веб-сервис, созданный разработчиком. Этот веб-сервис поддерживает протокол Маруси и способен принять и обработать запрос от пользователя (который Маруся перенаправит во внешний скилл) и отправить ответ. Чтобы сделать такой веб-сервис нужно обладать навыками программирования. Но можно воспользоваться конструктором для создания скиллов или ботов, которые значительно упрощают процесс.
  2. Разработать самостоятельно. Для этого придётся изучить подробную документацию по созданию скиллов для Маруси. В ней подробно описан протокол, по которому взаимодействует Маруся с внешними навыками, как работать с TTS, как работать с медиафайлами. Код приложения может быть написан на любом удобном вам языке и размещен на любом сервере. Главное, чтобы вебхук был доступен из интернета и воспроизводил протокол Маруси из документации.
  3. Заказать разработку скиллов у сторонних разработчиков. Тут всё то же самое, что и в предыдущем пункте, только работа будет произведена кем-то другим. Для этого нанятая команда должна иметь опыт по проектированию диалоговых систем (например чат-ботов) и созданию приложений с голосовым управлением.

4. Как перенести скилл из других ассистентов


Если у вас уже есть скилл, созданный на платформе AImylogic, то для подключения его к Марусе достаточно выбрать канал Маруся в настройках и следовать инструкции. Более подробную информацию можно прочитать на странице платформы. При этом все разработчики, которые создают скиллы для Маруси с помощью Aimylogic, могут хостить эти скиллы бесплатно. Для этого есть специальный тариф — Skillmaster.


На что стоит обратить внимание при переносе скилла:

  1. Проверить скилл на упоминания брендов и компаний.
  2. Убрать стороннюю монетизацию, ссылки на другие каталоги и прочие специфичные настройки.
  3. Проверить разметку голосового синтеза. Подробная инструкция по ссылке.
  4. Проверить хостинг картинок. Возможно, в переносимом скилле изображения подгружаются из облачного хранилища. Для работы с изображениями необходимо их загрузить в интерфейсе ВКонтакте.
  5. При желании можно конвертировать аудио, используя библиотеку звуков Маруси.

5. Как устроена среда отладки скиллов


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

Она позволяет не публикуя скилл опробовать его на любом клиенте Маруси. Для начала работы достаточно указать среде Webhook URL разрабатываемого скилла. При этом нет необходимости выкладывать его в сеть — разработчик может подключить к тестовой среде скилл, развёрнутый на своём компьютере, указав локальный адрес, например:

http://localhost:3000/webhook

Подключенный к среде скилл можно тестировать в любом клиенте Маруси: на колонке «Капсула», в мобильном приложении, во ВКонтакте или во встроенном в среду эмуляторе. Разработчик может переопределять некоторые параметры клиента, передаваемые в скилл: временную зону, геолокацию, язык интерфейса, признак наличия дисплея — это удобно для тестирования сценариев работы скилла.

Тестовая среда воссоздаёт production-окружение Маруси, поэтому уже на ранних этапах реализации разработчик может убедиться, что скилл правильно интегрируется с платформой. Если он возвращает ошибку, отвечает долго, или ответ от скилла не соответствует протоколу, то среда выведет соответствующее сообщение. Также среда отображает лог JSON-сообщений между скиллом и платформой, что помогает искать ошибки в бизнес-логике работы скилла.

6. Как добавить скилл через ВКонтакте


Сам скилл можно создать в разделе для разработчиков ВКонтакте. Чтобы добавить готовый скилл:

  1. В типах приложения выберите «Скилл Маруси».
  2. Добавьте название, которое будет совпадать с командой для активации скилла.
  3. Введите в поле Webhook URL адрес сервера, по которому будет размещен скилл, например https://example.com/test-webhook.
  4. Подтвердите действие.

Вы попадёте в интерфейс администрирования.


Обратите внимание: имя является первой фразой-триггером для вызова скилла. Фразы должны быть специфичны и уникальны, чтобы мы могли использовать их для внешних скиллов. Например, фразу «Расскажи анекдот» добавить не сможем, т.к. она уже используется во внутренних скиллах Маруси. А вот «Давай сделаем кодревью» пока можно использовать. Длина фразы активации не может превышать 64 символа.


7. Как осуществляется модерация скиллов


Все скиллы, которые создаются для Маруси сторонними разработчиками, в обязательном порядке проходят модерацию. Проходят быстро, всего за один рабочий день.

Каких правил нужно придерживаться, чтобы ваш скилл для Маруси был успешно допущен к использованию:

  • картинки должны соответствовать теме скилла и законам РФ, а также не нарушать авторских прав;
  • описание скилла должно быть простым, кратким и ёмким;
  • категория должна соответствовать тематике скилла;
  • скилл должен быть полезен и не носить рекламного характера;
  • название скилла и активирующей его фразы не должно содержать известные торговые марки (исключение: если скилл представлен владельцем этой марки);
  • скилл не должен давать доступ к контенту, защищенному авторским правом, если права на контент не принадлежат разработчику скилла.

Если ваш скилл удовлетворяет этим условиям, то всего за один день он будет промодерирован и опубликован.

8. Как добавлять изображения в Марусю


Маруся позволяет в ответе из внешнего скилла вставлять картинки. Для использования своего изображения необходимо загрузить с помощью формы загрузки изображений на странице редактирования информации о скилле на платформе загрузки скиллов ВКонтакте. После того, как изображение будет успешно загружено, оно отобразится рядом с формой загрузки вместе со своим идентификатором. Идентификатор изображения необходимо указывать в ответе внешнего скилла в поле image_id. Выглядеть такой ответ будет следующим образом:

{
  "response":{
    "text":"Сейчас очередь в столовой 5 человек.",
    "tts":"Сейчас очередь в столовой пять человек.",
    "card":{
      "type":"BigImage",
      "image_id":239017,
      "title": "Заголовок для изображения",
      "description": "Описание изображения"
    },
    "buttons":[
      {
        "title":"Надпись на кнопке",
        "payload":{},
        "url":"https://example.com/"
      }
    ],
    "end_session":true
  },
  "session":{
    "session_id":"574d41e0-a41e-4028-a73a-6f5b5",
    "message_id":0,
    "user_id":"3eae3c2f69b9f04e8cb15e157c4a9e05"
  },
  "version":"1.0"
}

9. Как добавлять звуки в Марусю


Произносимый Марусей текст можно разнообразить звуковыми эффектами, которые входят в библиотеку звуков Маруси. Для этого в поле tts (текст, предназначенный для перевода в речь) ответа внешнего скилла нужно вставить самозакрывающийся тег speaker, в котором необходимо указать атрибут audio. Выглядит это так:

tts = “Поздравляю! <speaker audio=”marusia-sounds/game-win-1” /> Вы правильно ответили на все мои вопросы!”

В произносимую речь можно вставлять и собственные звуки. Для этого нужно создать скилл на платформе ВКонтакте, а затем на странице редактирования скилла загрузить свои аудиофайлы. Они будут доступны только для использования в вашем внешнем скилле. После того как звуки станут доступны, их можно вставить в речь с помощью тега speaker с указанием атрибута audio_vk_id. Значением атрибута будет идентификатор загруженного вами звука. Выглядит это так:

tts = “Угадайте, чей это голос? <speaker audio_vk_id=”-2000000002_123456789” />”


Платформа скиллов Маруси будет и дальше развиваться. Мы будем радовать разработчиков новыми фичами и развивать инструменты, чтобы создавать скиллы для Маруси было еще легче и интереснее. Следите за новостями и присоединяйтесь к нашему сообществу в Telegram!