За 2 недели разработал аналог робота от «Гугла», которого создавал целый штат разработчиков несколько лет

Меня зовут Александр Зайцев, и я сооснователь компании Dasha.ai — это неотличимый от человека ИИ для разработчиков и бизнеса. С помощью платформы можно создавать умные голосовые модели для колл-центра, сайта или мобильного приложения.

Послушайте, как Даша говорит, ее не отличить от живого человека.

Даша может предложить дополнительную услугу, собрать обратную связь и перезвонить позже, если человеку неудобно разговаривать

В 2018 году я увидел презентацию Google Duplex — робота, который может сам забронировать столик в ресторане. Над созданием этой технологии в Гугле работал целый штат разработчиков в течение пары лет.

Мне захотелось повторить такой эксперимент с Дашей и посмотреть, что у меня получится.

Сейчас расскажу, как вышло так, что я сделал Дашу быстрее и лучше, чем Duplex от Гугла.

Решил скопировать сервис Гугла, чтобы узнать, на что способна моя разработка

Когда я услышал о Google Duplex, Даша еще была кастомным решением для конкретной задачи: умела только звонить дилерам и предлагать сотрудничество. Но уже тогда это была инновационная идея — первая разработка, которая проходила тест Тьюринга: человек не понимал, что общается с роботом.

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

Вот как звучал наш собственный первый синтез речи — немного неестественно и рвано:

Когда в январе 2021 с командой запустили первую версию платформы, на которой уже можно было создавать голосовые модели, я захотел повторить эксперимент Гугла. И за две недели написал модель бронирования столиков в ресторанах.

Потом я узнал от одного из сотрудников Google, что над разработкой Duplex работало 60 разработчиков в течение двух лет.

Как повторял эксперимент в США

Для чистоты эксперимента я решил тестировать Дашу в реальных условиях: звонить в действующие рестораны и бронировать столики. Да простят нас все, к кому не пришли на ужин ¯\_(ツ)_/¯

С сайта yelp.com я парсил открытые данные: номера телефонов ресторанов США, Великобритании и Австралии — стран, где говорят на английском, но с разным акцентом. Хотел усложнить Даше задачу, чтобы посмотреть, как она будет понимать людей, которые говорят не всегда четко и понятно, а также используют разные речевые обороты.

Даша успешно провела 93% звонков, а Гугл — 60%

Даша успешно провела 93% звонков. Результат разговора считался успешным, если диалог закончился согласно скрипту: робот мог что-то не понять с первого раза, но в итоге корректно завершил разговор.

Пример разговора, где Даша сначала не поняла, что у нее спрашивает менеджер, но все же успешно завершает разговор:

Вот один из промежуточных результатов прозвона: всего Даша дозвонилась в 23 ресторана:

  • 7 разговоров закончились тем, что рестораны не бронируют столики;
  • 1 разговор шел нормально, но внезапно прервался;
  • 4 человека без видимой причины перестали отвечать;
  • 4 пустых звонка, когда трубку сняли, но ничего не сказали;
  • 2 разговора с ошибками, когда Даша сказала что-то не то и разговор закончился неуспешно;
  • 3 успешных бронирования;
  • 2 неверно набранных номера, когда Даша попали не в ресторан, а в другие организации.

В конце второй недели доработки модели, Даша в выборке из 50 разговоров успешно проводила диалог в 93% разговоров. Google Duplex на момент релиза успешно завершал всего 60% разговоров, остальные переадресовывал на живого человека. В 2021 году Google Duplex уже успешно проводил 80% звонков.

Добиться 80% успешных диалогов намного проще, чем 90+ %.

Разница в 13% кажется небольшой, но для голосового робота — это огромный отрыв. За каждым процентом стоит сложная разработка диалогов и тысячи тестовых разговоров.

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

Чтобы достичь результата в 70% успешных разговоров, нужно добавлять минус слова.

Чтобы достичь 90% успешных разговоров, нужны нейросети для извлечения смысла сказанного и долгие совершенствования на реальных разговорах.

Чтобы робот заканчивал 95% успешных диалогов, нужно провести 600 разговоров и протестировать редкоиспользуемые ветки разговора.

Для результата в 98% необходимо провести несколько тысяч разговоров, разработать и протестировать очень редкие ветки диалога, тщательно разбивать запросы на смыслы и работать над формулировками робота.

Как нам удалось побить результат Гугла

Во время проведения эксперимента я столкнулся с тем, что иногда вместо менеджера на звонок отвечает автоответчик, не все сотрудники ресторанов спрашивают детальную информацию о заказе и иногда приходится брать разговор в свои руки.

Научил определять автоответчики

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

Проблему удалось решить только путем от обратного: я считал за робота любого, кто не «доказывал», что он человек. Например, я заметил, что люди почти всегда говорят «good morning/day/afternoon» или «how may i help you», поэтому я создал запрос — определенные смыслы фраз, которые гарантировали, что говорит человек. Это почти решило проблему.

Еще оставались случаи, когда трубку снимал человек, но вел себя необычно, например просто говорил «Hello». Тогда Даша начинала разговор с приветствия и ждала подтверждения, что это человек. Таким образом мне удалось примерно с 99% вероятностью правильно определять автоответчики.

В начале разговора Даша пытается определить автоответчик. Когда понимает, что это человек, то продолжает разговор и успешно его завершает:

Научил инициировать разговор

Бывали случаи, когда менеджеры ресторанов на вопрос Даши «Hello! Can i book a table for today?» отвечали «okay» вместо ожидаемого вопроса о времени бронирования или количестве персон.

Пришлось сделать так, чтобы Даша в таких случаях сама вела диалог дальше. Иногда доходило до смешного.

<p>Даше пришлось самостоятельно уточнять всю информацию о бронировании столика</p>

Даше пришлось самостоятельно уточнять всю информацию о бронировании столика

Научил вести нелинейный разговор

В процессе разработки модели я столкнулся с тем, что люди могут внезапно попросить повторить информацию, сказанную ранее — имя, номер телефона, время бронирования. Сначала я попытался решить эту проблему самым простым путем — признаваться, что Даша робот. Я подозревал, что эта плохая идея, но даже Гугл в своей рекламе показывал, что Duplex в начале звонка говорит, что он робот. Когда я попробовал сделать так же, 90% людей просто бросали трубку.

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

Каждый может создать себе голосового ассистента на платформе Dasha.ai

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

В январе 2021 года мы запустили закрытое бета-тестирование нашей платформы Dasha.ai для быстрой и легкой разработки голосовых моделей и чат-ботов. Каждый желающий может скачать приложение, получить API-ключ от платформы и написать разговорную модель для телефонного разговора или управления «умным» прибором с микрофоном и доступом в интернет.

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

Вы сами можете повторить эксперимент с бронированием столиков.


Я выложил исходный код модели в репозиторий на GitHub. Теперь каждый может запустить приложение и посмотреть как работает разговорный робот. Инструкция по запуску — в файле «README.md». Если будут вопросы по запуску, пишите в комментариях или в личные сообщения.

107107
170 комментариев

Я за 2 недели разработал аналог Spacex, который создавал целый штат разработчиков несколько лет. Хули нам )

91
Ответить
63
Ответить

Я за 2 недели изобрёл способ съесть шаурму не пролив соус. 

21
Ответить

я б почитал)

4
Ответить

Ну да, ну да, за две недели )
Подключить в питоне тензор-флоу и несколько либ с гитхаба, которые ваяли гугл несколько лет.
Называется "стоя на плечах гигантов" делаю громкие заявления.

92
Ответить

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

а вот "стоя на плечах гигантов" полностью согласен, но все мы на них стоим. Например я печатаю с ноутбука, в котором куча технологий, для создания которых потребовались тысячи открытий в прошлом

12
Ответить

А ещё, данная фича интегрирована в смартфоны от Гугла, и там эта фишка прикольная, но увы, не работает в России

А ещё у Гугла, эта фишка удобна тем, что звонок можно вести с помощью чата, например упрощает жизнь глухих людей,

1
Ответить