← Назад к списку статей

Как создать эффективного голосового робота: от скриптовых ботов до генеративных

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

Переход к генеративным моделям

С учетом имеющихся ограничений мы начали исследовать возможности больших языковых моделей (LLM) для создания более адаптивных голосовых роботов. С конца 2022 года мы активно тестировали ChatGPT и наблюдали за его развитием.

Однако у нас оставались три ключевых проблемы:

  • Конфиденциальность: Данные клиентов отправляются на внешние серверы.

  • Контроль скорости ответа: Задержки от внешних сервисов недопустимы.

  • Стоимость: Использование сторонних сервисов может быть экономически невыгодным.

Эти факторы подтолкнули нас к разработке собственной LLM, адаптированной для голосового канала и работающей на наших серверах.

Как выбрать подходящую LLM модель?

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

  1. Средняя скорость ответа: Важно сократить время генерации.

  2. Количество нелогичных ответов: Минимизировать наборы символов без смысла.

  3. Эффективность в сложных темах: Оценка работы модели с деликатными темами и вопросами.

  4. Релевантность ответов: Оценка сгенерированных ответов на соответствие контексту диалога.

  5. Семантическая близость: Сравнение с эталонными ответами.

Создание тестового набора данных

пример работы с данными

Для оценки моделей мы собрали датасет из 800 реальных диалогов на различные темы. Каждый диалог включает:

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

  • Вспомогательную информацию, представляющую инструкцию для модели.

  • Эталонный ответ, с которым мы будем сравнивать ответы LLM.

Структура генеративного голосового робота

внутренняя структура генеративного робота

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

  1. Дайлер: основа взаимодействия

Когда пользователь инициирует звонок, его речь передается в дайлер — сервис, который управляет взаимодействием между Dialog Manager и абонентом. Дайлер является центральным узлом, который перенаправляет звуковой поток на модули TTS (Text-to-Speech) и STT (Speech-to-Text) для последующей обработки.

  1. Модуль VAD: определение голосовой активности

Далее звук поступает в модуль VAD (Voice Activity Detection), который отвечает за определение голосовой активности. Когда VAD фиксирует, что пользователь начал говорить, он передает звук модели распознавания речи.

  1. STT: преобразование речи в текст

Модель STT преобразует речь в текст и передает его в блок Intent Recognition. Этот этап критически важен для дальнейшей обработки запроса пользователя.

  1. Intent Recognizer: распознавание намерений

Intent Recognizer — это сервис, который определяет ключевые намерения пользователя, такие как продолжение диалога, завершение разговора или бронирование. Хотя LLM также может выполнять эту задачу, использование Intent Recognizer разгружает промпт для LLM и ускоряет обработку запросов.

  1. Dialog Manager: управление диалогом

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

  1. Генерация ответа

На основе собранного контекста Dialog Manager формирует набор команд для дайлера, включая выбор LLM и соответствующий промпт. Дайлер обрабатывает эти команды и переходит к блоку "Генерация ответа".

Для обеспечения высокой скорости ответа мы используем потоковый TTS — синтез ответа начинается с момента появления первого знака препинания. Синтезированный ответ передается обратно в дайлер, который отправляет его в телефонную сеть.

Заключение

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