Будущее уже здесь: как работают голосовые роботы и что они умеют делать

image

Роботизация рутинных операций, когда для решения простых и одновременно трудоемких задач используются роботы, а не люди — весьма активный тренд. Автоматизируется многое, включая телефонные разговоры с клиентами. Компания Neuro.net занимается созданием технологий, которые дают возможность улучшить возможности роботов.

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

Сначала кейс, ну, а потом — разбор технологий


image

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

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

image

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

Ниже — пример того, что получилось.


Робот слушает собеседника, давая ответ в зависимости от смысла того, что сказал клиент. Общее количество веток сценария, по которым может пойти разговор — более тысячи.
Главной целью этого робота было понять причину снижения активности клиента компании на сайте и сделать интересное предложение каждому. Это была одна из первых попыток компании автоматизировать работу колл-центров.

Новые роботы более совершенны. Вот еще несколько примеров общения роботов с человеком: первый, второй, третий примеры.

Теперь о технологиях


Есть три ключевых технологических особенности, которые позволяют роботу работать:

  • распознавание пола собеседника по голосу,
  • распознавание возраста,
  • построение диалога с собеседником-человеком.


image

Распознавание пола собеседника по голосу


Зачем это нужно? Изначально эта функция создавалась для проведения опросов при помощи роботов. Раньше работа по проведению опросов проводилась людьми, которые заполняли ряд пунктов. Например — пол собеседника. Понятно, что человеку для определения этого параметра не нужно спрашивать, с кем он говорит — мужчиной или женщиной. В 99% все и так понятно. С роботами другое дело, для того, чтобы они более-менее точно научились распознавать голоса, пришлось провести масштабную работу. И она не была напрасной, сейчас технология используется для персонализации предложения и голосовых промптов в зависимости от пола.

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

Как это работает? Сначала производится первичная обработка данных, она осуществляется на основе обработки голосовых записей и фрагментов продолжительностью по 20 мс. Все собранные голосовые фрагменты проходят предварительную обработку в компоненте VAD (Voice Activity Detection). Это необходимо для отделения «зерен от плевел», то есть речи от шумов. Весь мусор удаляется, благодаря чему увеличивается точность работы моделей.

Для распознавания используется так называемое пространство кепстральных коэффициентов, первой и второй разностей. Основа — метод GMM — Gauss Mixture Models.

Так, на интервале в 10–20 мс вычисляется текущий спектр мощности, после чего применяется обратное преобразование Фурье от логарифма спектра, с поиском необходимых коэффициентов.

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

Для того, чтобы повысить эффективность работы системы, применяются коэффициенты тембральных моделей голоса:

  • Тембральная резкость.
  • Тембральная теплота.
  • Тембральная яркость.
  • Тембральная глубина.
  • Тембральная твердость.
  • Тембральный рост.
  • Тембральная неровность.
  • Тембральная ревербация.


Тембральные модели нужны для того, чтобы правильно идентифицировать голоса детей — любые другие модели принимают голос ребенка за женский. Плюс нужно различать грубые женские голоса (например, пожилой курящей женщине), высокие мужские голоса и т.п. Кстати, если человек сказал «алло», а затем кашлянул — все прежние модели, не использующие тембральные фильтры, определят голос, как мужской.

d6018b2e41f83de3f7c8ec961e7869e5.jpg

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

Технология, которая здесь описывается, используется для работы как в онлайн (по первой фразе клиента), так и оффлайн режиме классификации (после разговора). Точность распознавания пола составляет около 95%. Важный момент — задержка при работе в онлайне не превышает 120–150 мс, что крайне важно для «очеловечивания» робота. Обычно паузы в общении робота и человека составляют не миллисекунды, а секунды, что, конечно, для собеседника-человека выглядит странно, и сразу понятно, что общение ведет цифровая система.

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

Определение возраста собеседника


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

Как это работает? Используются точно те же технологии, что и в предыдущем случае. Точность работы системы составляет около 90%.

image

Построение диалогов


И теперь приступаем к самому интересному — принципу построения диалогов.

Зачем это нужно? Для того, чтобы грамотно заменять человека, робот должен уметь работать как по линейному, так и по нелинейному сценариям ведения диалога. В первом случае это может быть опросник, во втором — работа с абонентами колл-центра, линии техподдержки компании и т.п.

А как это работает? Мы используем NLU Engine, основа которого — семантический разбор полученного от ASR-систем текста. Далее из него выделяются такие объекты распознавания, как entities (сущности) и intents (намерения), которые применяются в логике построения conversational flow.

Вот пример работы технологии.

Текст полученный от системы распознавания речи (ASR):
«Мне в целом интересно ваше предложение, но хотелось бы подешевле. И я сейчас немного занят, вы могли бы мне перезвонить завтра часиков в шесть».

Объекты, заполненные NLU Engine:

Intents:
confirmation=true
objection=expensive
question=null
callback=true
wrong_time=true

Entities:
date= 02.01.2019 (предположим, что дата звонка 01.01.2019)
time=18:00
amount=6

Принцип заполнения объектов в данном примере:

Intents (намерения):
• Текст «мне интересно ваше предложение» был переведен в intent «confirmation» с значением «true».
• Текст «хотелось бы подешевле» был переведен в intent «objection» с значением «expensive».
• Текст «я сейчас немного занят» был переведен в intent «wrong_time» с значением «true».
• Текст «могли бы мне перезвонить» был переведен в intent «call_back» с значением «true».
• Абонент не задал ни одного вопроса, поэтому intent «question» имеет значение null

Entities (сущности):
• Текст «завтра» был автоматически переведен в entity «date» с значением »02.01.2019», используя формулу current_date + 1 (предположим, что дата звонка 01.01.2019).
• Текст «часиков в шесть» был переведен в entity «time» с значением »18:00»,
• Текст «шесть» был переведен в entity «amount» с значением »6», которое в данной логике может игнорироваться, так как есть entities с более высоким приоритетом.

Для всего перечня intents и entities присваиваются определенные значения, которые в дальнейшем используются для построения conversational flow.

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

Первый уровень — работает на относительно небольшой выборке данных порядка 600–1000 записей. Здесь используются ML-алгоритмы. Точность распознавания: 90–95%.

Второй уровень — переход на него осуществляется после запуска проекта и накопления большой выборки данных, включающей более 1 млн записей. Здесь уже используются DL-алгоритмы. Точность распознавания: 95–98%.

Решение работает с двумя подсистемами:
— подсистема категоризации и классификации текстовых данных,
— подсистема формирования диалога.

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

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

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

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

Как итог, хочется подчеркнуть, что голосовые роботы не заменят людей. Сейчас они отлично справляются с рутинной работой — обзвоном людей с целью задать им какие-то вопросы и выслушать/записать/проанализировать ответы. Таким образом, операторы колл-центров и техподдержки избавлены от необходимости проводить одни и те же рутинные процедуры. Вместо этого они могут сосредоточиться на решении действительно интересных вопросов и задач.

© Habrahabr.ru