Голосовые навыки с нуля: как Алиса учила песни Цоя, не давала уснуть за рулем и принесла мне шесть наград от Яндекса

    Необязательно посвящать годы изучению разговорных интерфейсов, чтобы у тебя получился крутой голосовой навык. Меня зовут Сергей Кул, и я считаю, что каждый навык – это маленький стартап: либо выстрелит, либо нет. Я создал первый голосовой скилл меньше года назад, ничего не зная о разработке ботов и голосовом UX. Теперь у меня пять Премий Алисы и специальный приз от Яндекса. Рассказываю, как так вышло и чему я научился, осваивая вместе с Алисой JavaScript, формулу Видмарка и песни «Кино».



    Как создавать навыки без специальных навыков


    1 июля 2019 года я начал активно искать какое-то новое направление для бизнеса в интернете. Работа в IT приелась, хотелось сменить деятельность. И вдруг наткнулся на статью, что для голосового ассистента Алисы сторонние разработчики могут делать свои навыки. Это было озарение! Понял, что хочу освоить такую разработку и закрепиться в этой нише. Что на тот момент я знал про голосовые интерфейсы или разработку ботов? НИЧЕГО! Совершенно! Но решил в течение одного месяца всё изучить и сделать первый навык.

    Весь следующий день я смотрел уроки в Школе Алисы на Youtube. Вот, например, один из самых популярных уроков – про выбор инструмента:


    В итоге понял две вещи. Первое – я опоздал с этим направлением на год: возможность развивать экосистему Алисы разработчики получили в 2018 году. Второе – это все еще настолько в новинку, что есть смысл запрыгнуть в этот паровоз.
    Еще пара дней ушла на изучение навыков, которые уже были представлены в каталогах Алисы и Google Ассистента. Оказалось, что интересных не так и много, и это явно шанс для творческих людей. Именно для творческих, а не с сугубо программистским опытом, т.к. залог успеха навыка – это идея и полезность, а уже потом реализация. По сути, каждый навык – это маленький стартап, который может выстрелит, а может и нет.

    4 июля у нас в семье поселилась Яндекс.Станция с Алисой! Теперь было нужно определиться с платформой для создания навыков. Стало ясно, что работать над навыками можно в конструкторах или самостоятельно изучив Python или Node.js. Второй вариант я отверг (все-таки долго), а вот с конструкторами начать было куда проще, оставалось только выбрать.

    В моем личном топе инструментов оказались два претендента: Dialogflower (это Google Dialogflow для Алисы) и Aimylogic (конструктор от Just AI). Dialogflower все же больше заточен под Google Ассистента, да и без минимального опыта программирования с ним было не справиться. Aimylogic мне подходил почти идеально.

    1. Взаимосвязи


    Я много работал со стартапами, в том числе занимался созданием прототипов для разных направлений. И я понимаю, что, если концепция меняется, невозможно изменить лишь один кусочек – он тянет за собой кучу функций, ссылок, действий. В Aimylogic взаимосвязи между блоками показаны графически, что очень упрощает работу.



    2. Свобода действий


    Конструктор дает возможность подключить сторонние сервисы, такие как IFTTT, Google Таблицы или любые другие, к которым можно направлять запросы. Удобно, что можно использовать JavaScript для своих функций: в упрощенной форме, но, если разобраться, можно создавать условия, циклы, массивы и т.д.

    3. Интенты


    Навык для голосового ассистента – это не просто бот. Нужно заранее продумать все возможные ответы и действия пользователя. А их может быть в сотни раз больше, чем в обычных играх с кнопками. Так, например, на просьбу назвать свой город, пользователь может ответить: «Санкт-Петербург», «Петербург», «Питер», «Спб». И для таких моментов в конструкторе есть самообучающаяся система интентов, которая поймет любой ответ. Это особенно пригодилось мне в одном из навыков для распознавания имен игроков.

    Первый блин: тестируем навык на бабушке


    Я взялся за тестовый навык – «Капсула времени». На его примере я хотел посмотреть, как устроены навыки изнутри и какие функции вообще можно в них задействовать:

    • запись в Google Таблицу сообщения пользователя (как во внешнюю базу данных);
    • распознавание пользователя по ID и считывание его сообщения из Google Таблицы;
    • запись и считывание данных о пользователе;
    • распознавание, кто играет – новый или постоянный игрок, и выбор соответствующего приветствия;
    • разнообразные диалоги в зависимости от ситуации в игре.

    В итоге через 10 дней ещё не опубликованный в каталоге Алисы навык был презентован нашей бабушке. И тут случилось ужасное! Бабушка ничего не поняла. Кому говорить? А уже можно отвечать? А что сказать? В общем, навык был полностью забракован. Стало ясно, что нужно делать проще и понятнее для пользователя.


    В итоге навык был переименован в «Послание в бутылке», переписаны все диалоги, добавлены картинки и звук. Именно в такой версии мой первый навык появился в Каталоге Алисы. Теперь в него можно было играть на нашей Яндекс.Станции!
    «Послание в бутылке»: можешь слушать реальные послания, оставленные игроками из других городов, и записывать свои сообщения, которые тоже кто-то услышит из уст Алисы. Google Таблицы служат в качестве базы данных для хранения посланий, а для сохранения данных о пользователе – база Aimylogic.

    Гейм-джем для рывка


    В конце июля я узнал, что 3-4 августа в Питере пройдет открытый гейм-джем «Игры с голосовым управлением». Это такой игровой хакатон, где за два дня нужно с командой придумать голосовой навык и его реализовать. Никогда раньше такие мероприятия не посещал, стало интересно. Решил пойти, тем более там разыгрывались три Яндекс.Станции, ну и вообще это был хороший повод завести новые знакомства.



    Со мной в команде были еще три человека. Через пару часов мозгового штурма мы презентовали общий навык «Text Mixer». Еще во время обсуждения мне пришла идея навыка со стульями – ну, как та игра из детства, когда все бегают под музыку вокруг стульев и должны успеть сесть, когда музыка внезапно закончится. Но она никому не понравилась. А мне показалась настолько интересной, что я решил сделать навык лично, как дополнительный (если останется время).

    Начали командную работу над «Text Mixer». Я взял на себя разработку, остальные должны были подобрать материалы и написать тексты. Но уже через 1.5 часа двое ребят решили делать квест и вышли из проекта. Вдвоем с напарником мы допилили навык к вечеру, разъехались по домам. На следующий день его нужно было только «причесать» и презентовать.

    Уже дома я рассказал про «Музыкальные стулья» дочке, и она сказала, что они часто играют в такую игру в садике. Дал дочке задание нарисовать к навыку картинку для презентации, сам сел за разработку. К ночи навык был готов, утром мы поиграли дома в «Музыкальные стулья», стало понятно – это хит! Навык простой, понятный всем и зажигательный.



    К обеду поехал на финал гейм-джема. Обещал дочке не возвращаться без приза! Но меня ждал сюрприз. Ребята, которые раскололи нашу команду, были на месте и сообщили, что делают «Text Mixer», от которого сами же и отказались. Мой вчерашний напарник по разработке не приехал. Я остался один. Тогда я решил, что буду презентовать только «Музыкальные стулья», т.к. игра была полностью готова.

    Мой навык был единственным, который отработал без ошибок, да еще и развеселил всю аудиторию – всем пришлось играть! Но по итогам голосования «Музыкальные стулья» остались на задворках, и я не понимал почему. Решили с дочкой, что попытаемся завоевать Премию Алисы! 30 августа Яндекс объявил 5 лучших навыков августа. И «Музыкальные стулья» одержали победу в категории «Для детей».
    «Музыкальные стулья»: игроки бегают вокруг стульев, пока играет музыка, но, как и в детстве, стульев на всех не хватит. Алиса в роли ведущей! Я задействовал блоки Условия и системную переменную $lastSeen для проверки, новый игрок перед вами или он уже участвовал. Для включения в сценарий разных мелодий использовал блок Текст, который позволяет указать несколько рандомных фраз (а в данном случае – несколько мелодий).

    Хакатон Яндекса


    В середине августа я присоединился к сообществу разработчиков Яндекс.Диалогов в Telegram, где можно не только новые знания получить, но и обзавестись друзьями и наставниками. Там мне рассказали, что Яндекс проводит на фестивале Chaos Constructions в Питере свой первый хакатон по голосовым навыкам. Я подал заявку на участие с навыком «Послание в бутылке». Он попал в число перспективных, и меня пригласили на хакатон.

    Сначала участники должны были выслушать мнения экспертов (в жюри было много знакомых по видеоурокам Школы Алисы лиц) о своих навыках, в течение дня их доработать, а к вечеру презентовать на сцене фестиваля. Было волнительно, но все сразу стали своими. Эксперты не критиковали, а помогали, давали советы, делились опытом. И сами участники были больше не конкурентами, а партнерами.



    Честно говоря, на призовое место не рассчитывал, т.к. «Послание в бутылке» было моей пробой пера. В итоге навык занял лишь пятое место, но этого хватило чтобы получить поощрительный приз – Яндекс.Станцию Мини и знаменитую футболку разработчика Алисы. Но, конечно, дело было не в призах, особенно запомнилась дружелюбная атмосфера.

    Навык «Тест на алкоголь»: откуда брать идеи


    Я работал на даче, и один из соседей постоянно просил глянуть в интернете табличку – сколько ему можно выпить, чтобы на утро можно было за руль. Я подумал, что на такой вопрос может ответить и Алиса. К началу сентября я подготовил уже свой третий навык «Тест на алкоголь».
    «Тест на алкоголь»: Алиса узнает ваш вес, что вы пили и в каком количестве, а потом решает, можете ли вы сесть за руль прямо сейчас или нужно подождать (и сколько именно ждать!). Лучше поговорить с Алисой, чем с инспектором ДПС. Для сбора ответов пользователя используется блок Ввод текста, после чего ответы пользователя проходят проверку через блок Условия и выдается нужный результат.
    Реализация навыка заняла около недели, пришлось досконально разобраться в формуле Видмарка и узнать, как рассчитываются промилле. Навык был опубликован в конце августа.

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

    Сделав нужные доработки, я со спокойной душой, с семьей и на премию от «Музыкальных стульев» уехал на море. С собой я прихватил книжку Джона Даккетта «JavaScript и jQuery». Отличная книга для начинающих, хотя за отпуск осилил только половину из 640 страниц.



    Всем подогретым солнцем туристам я показывал навык и тестировал их на степень выпитого. «Тест на алкоголь» сначала попал в Новинки Алисы, а потом получил премию в рубрике «Полезное»!

    Освоение новых рубрик


    Самая конкурентная категория навыков в каталоге Алисы – это «Игры и развлечения». И мне хотелось попробовать силы там. Я взялся за навык «Звездный поединок», разработка заняла примерно три недели. Большая часть времени ушла на придумывание поединков и шуток + подбор экшен-составляющих (музыки, звуков). Тут я уже вовсю использовал JavaScript. Это позволило реализовать ряд интересных фич – например, выдавать пользователю рандомные поединки, записывать их номера в массив и далее выводить только новые бои, чтобы в течение одной игры поединки не повторялись.
    «Звездный поединок»: битвы звезд и известных персонажей (Иван Ургант или Дима Нагиев? Колобок или Красная Шапочка?), делаешь ставки и зарабатываешь монеты. Ну и теряешь тоже. Вычисления для подсчета баллов реализованы через блок Условия. Для записи данных об игроке использовался сервис IFTTT, с помощью которого можно отправить данные в Google Таблицу.



    После публикации навыка в ноябре прошла пара месяцев. Но ни фидбэка от Яндекса, ни высоких позиций в каталоге Алисы навык не получил. Я решил, что потерял хватку. И тогда за неделю запилил навык, который придумал еще на гейм-джеме: навык должен был помогать водителям не заснуть за рулем и не попасть в аварию. Назвал его «Не спи за рулем». Он не очень сложный в исполнении, но довольно полезный.
    «Не спи за рулем»: Алиса заботливо уточняет, насколько вы устали, а потом каждые несколько минут бодрит водителя затейливыми вопросами вроде «А вода легче масла?». В сценарии навыка есть небольшие вычисления на JS в блоке Условия, Google Таблицы используются в качестве базы данных для хранения вопросов.
    Только в конце января Яндекс дал обратную связь по «Звездному поединку». Доработок было много, но это был хороший знак. К февралю я все доделал. Наступил конец месяца, день вручения премий. По моему прошлому опыту, если в этот день до обеда тебе не пришло сообщение от Яндекса, то ты в ауте. Я никаких сообщений не получил и уже потерял надежду. Но напрасно! Вечером пришло письмо о том, что на премию номинирован и «Звездный поединок», и «Не спи за рулем»! Было здорово понимать, что все не зря.

    В итоге – победа в желанной категории «Игры и развлечения», а «Не спи за рулем» попал в категорию «Специальный приз». Так что пока осталась неохваченной одна премиальная рубрика – «Образование»!

    И что, всё правда так просто?


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

    Самое главное не расстраиваться, что сначала все будет не так, как планировали. А вот мои советы – как создать навык, который достоин премии:

    1. Навык не обязательно должен быть идеальным, но он должен нести новую идею, которой еще не было в каталоге Алисы.
    2. Навык должен быть полезным или интересным, поднимать настроение.
    3. Диалоги в навыке должны быть живыми, чтобы Алиса проявляла свой характер и эмоции в беседе с пользователем.
    4. Все навыки я проектирую для умной колонки, ведь если навык понятен и удобен в использовании на Яндекс.Станции, то на смартфоне будет понятен наверняка, но еще и с кнопочными подсказками.
    5. Во всех навыках я использую экшен-приемы – музыку при запуске навыка и при выходе. Обязательно думаю о звуковом оформлении – звуки делают навык дружелюбнее. Беру их обычно здесь: zvukipro.com, а редактирую здесь: mp3cut.net/ru.
    6. Почти во всех моих навыках, если пользователь играет повторно, Алиса его узнает и приветствует индивидуально.
    7. Моя боль и гордость – склонения. Если хотите, чтобы Алиса в навыке не звучала, как робот, и говорила «у вас 5 подсказок», а не «у вас 5 подсказка», этому нужно уделить время. Это как раз решается JavaScript. Текст идет числами, а озвучка в TTS – словом. И это, конечно, касается не только чисел, но склонения мужского/женского/среднего рода.
    8. Во всех навыках я использую TTS, проверяю паузы и правильность произношения через Яндекс SpeechKit.
    9. Все новые навыки я презентую сначала в сообществе разработчиков Яндекс.Диалогов. Конечно, тут не стоит ждать поощрения или похвалы, зато можно хватануть полезной критики и единиц в оценках по самое не хочу! Но если сможете это пережить и доработать навык, то он точно станет лучше. Считайте, что станете героем фильма «Выживший».
    10. Модерация навыка не всегда проходит гладко. После того, как навык «Музыкальные стулья» был опубликован и уже несколько дней висел в каталоге Алисы, я решил поменять аватарку к нему. Подал на повторную модерацию. В итоге навык не одобрили. Причина – неподходящее название! Только когда я письмом написал, что навык уже давно в каталоге с этим названием, повторная модерация была пройдена. И так случается часто, судя по рассказам других разработчиков.
    11. Остальное – вера в свою идею!

    Экосистема голосовых навыков – это конкурентная среда, здесь важно найти своего пользователя. Поэтому многие пишут свой голосовой навык месяцами, но, не получив желаемого отклика, разочаровываются и перестают верить в перспективность голосовых технологий.


    Именно поэтому я изначально выбрал в качестве инструмента конструктор, все-таки он позволяет создать навык не за месяцы, а за дни. А это возможность не терять время бездарно, а попробовать создать навык в формате MVP (минимально-жизнеспособного продукта). И уже потом, трезво взглянув на то, что получилось, принять решение о развитии навыка и вложении средств.

    P.S. Хочу поблагодарить всех камрадов по разработке, которые продвигают голосовые навыки, верят в свою полезность, помогают в чатах, делают что-то новое! Навыки становятся лучше, переходят на новый уровень. И сейчас совсем не поздно подключиться, чтобы занять своё место под солнцем. Я тоже постараюсь не отставать. И надеюсь после карантина увидеться на Боткэмпе или Хакатоне! А пока можно глянуть мой новый навык «Память о Викторе Цое», который в мае получил Премию Алисы.
    «Память о Викторе Цое»: навык, в котором нужно не только узнать песню группы «Кино» по отрывку, но и правильно вспомнить название. А Алиса подскажет, в каком году песня была записана и в какой альбом вошла. Песни и стихи сохраняются в Google Таблице. Для описания различных фактов используется блок Текст, а для проверки правильного варианта – блок Условия. Для сохранения данных о пользователе использовал базу Aimylogic.

    Всем желаю здоровья и признания!
    Сергей Кул (GarEngin)

    Обложка: dribbble.com
    Just AI
    Разработка и внедрение технологий разговорного AI

    Комментарии 9

      –3
      Разработка игр

      каким боком это касается разработки игр? удалите

        0
        Самые популярные навыки на платформе сейчас — это игры. Вы хоть в каталог зайдите.
        0
        Честно говоря не понял — получил ли автор с этого реальные деньги, которые существенно перекрыли стоимость потраченного времени?

        Бизнес из этого получился?

        Или только экосистема Алисы улучшилась?
          +1
          Да-да, получил) Все призы Яндекса в рамках Премии Алисы — денежные. Размер наград там варьируется от 50 до 150 тысяч рублей за премиальный навык. Суммы могут меняться месяц от месяца, но Яндекс их не скрывает — обо всем подробно пишет в блоге Яндекс.Диалогов.
          Получается, что денежный профит от разработки навыков можно получать тремя способами: зарабатывать на премиях, разрабатывать навыки для Алисы по заказу брендов и через внутреннюю монетизацию (например, через рекламу или когда будут реализованы встроенные покупки, что особенно актуально для игровых скиллов). Как-то так.
          Ну а экосистема любого голосового ассистента тем лучше, чем навыки разнообразнее, полезнее и интереснее, чем больше у них интеграций с реальным миром.
            0

            Рано еще делать выводы. Вот если его навык побьет рекорды, а яндекс его не забанит — вот тогда можно будет к этому вопросу вернуться.

            0
            Отличная работа. И самое главное что движет автором идея тогда и материальная сторона подтянется. Когда цель только лишь $ то как правило и путное создать вряд ли выходит.
            Интересная статья интересные решения.
              0
              Автору респект. Видно, что с душой человек и перфекционист
                +2
                Знаете, за полтора года с алисой дома — кроме: погода, включи таймер на 10 минут(на кухне), новости, включи музыку или радио — никакие навыки не прижились.
                Все навыки — это удивить гостей, побаловаться детям.

                Вот не знаю почему, не заходят совсем. Пробовал первое время разные, все работают как с бабушкой — а что сейчас, а почему молчит, а зачем повторять каждый раз условия, а почему так мало времени на ответ — больше раздражает, чем помогает.
                  0
                  Да, очень многие вас в этом поддержат. Мы думаем, какое-то время придется подождать — и пока навыки станут качественными, удобными с точки зрения UX, хорошо продуманными, и пока сам этот новый паттерн взаимодействия с ассистентами и интернет-сервисами станет привычной и неотъемлемой частью жизни (ну притом, что голос — самый естественный инструмент и так). Например, когда вам попадется (а вопрос с дискавери, удобным поиском навыков еще не решен) классный навык для кухни — не только таймер, но и, предположим, поиск рецептов или инструкции по всяким кухонным делам. У Alexa есть такой, причем для умного экрана — учень здорово, навык популярен.
                  В общем, это вопрос времени. Мобильные приложения в сторах поначалу тоже были несоверешенны, и посмотрите на них сейчас) Экосистема Алисы развивается очень быстро, но развитие — в любом случае процесс.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое