Компонент CPD (детектор ответов)

Описание

Применяется в исходящих кампаниях для детекции ответа "живого" человека.

Выполняет запись разговора в течении указанного времени (5-7 секунд), в течение которых пытается определить тип источника звука.

Определение человека производится по истечении секунды тишины после окончания приветственной реплики абонента.
Определение роботов и автоматов производится по окончанию таймаута или длительной (более 2 секунд) приветственной реплики робота.
Определение тишины производится по окончании указанного интервала времени.
Определение факса производится почти сразу при обнаружении соответствующего тонального сигнала.

Алгоритм CPD, используемый компонентом, не требователен к ресурсам системы.

Table 1. Системные характеристики

Индекс

225

Краткое название

cpd

Типы сценариев

IVR

Стартовый модуль

era_sip_ivr_script_component_cpd

Режим

Асинхронный

Иконка

225

Характер разветвления

Разветвляющий, замыкающий

Свойства

Table 2. Свойства
Спецификация Описание

Название: Таймаут, с
Код: collectTimeSec
Усл. видимости: нет
По умолчанию: 5

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

Название: Сохранить файл записи
Код: saveRecord
Усл. видимости: нет
По умолчанию: Нет

Признак сохранения файла записи, отправленного сервису детектора ответа. Сохранение выполняется в каталог /var/lib/era_files/answer_detector_records/<domain>/<type>

  • domain - домен в рамках которого выполнялся разговор.

  • type - тип результата, который вернул детектор ответа.

Название: Результат в переменную
Код: result
Усл. видимости: нет
По умолчанию: — 

Переменная, куда заносится причина завершения работы компонента.

Название: Переход, обнаружено
Код: transferFound
Усл. видимости: нет
По умолчанию: — 

Компонент, которому передается управление после обнаружения "живого" человека детектором ответа.

Название: Переход, не обнаружено
Код: transferNotFound
Усл. видимости: нет
По умолчанию: — 

Компонент, которому передается управление в случае если детектор ответа не обнаружил в записи "живого" человека.

Название: Переход, ошибка
Код: transferError
Усл. видимости: нет
По умолчанию: — 

Компонент, которому передается управление в случае возникновения ошибки.

Параметризация

Анализ CPD проводится входящим в состав платформы консольным приложения cpd (/era_sip/priv/cpd/cpd).
Компонент запускает CPD в режиме анализа.

В режиме анализа приложение принимает на input порции аудио-данных (PCM 8000Hz 16bit mono), и выдает один из возможных результатов:

  • human

  • ivr

  • tone

  • fax

  • silence

Компонент завершается успехом только при результате 'human'.

Алгоритм может параметризоваться. В качестве параметров используются файлы SettingsML.json и SettingsSpectrum.json.
Файлы располагаются в каталоге ':SYNC/common/cpd'.

Пример командной строки запуска в режиме анализа:

cpd --mode=analyze --ml-settings-path=/some/path/to/SettingsML.json --spectrum-settings-path=/some/path/to/SettingsSpectrum.json --timeout=7000 --recv-timeout=3000

Расшифровка параметров:

--ml-settings-path  -  путь к json-файлу с ML-параметрами, полученными в результате обучения. Необязательный параметр. Если не задавать, то используются некоторые зашитые (и неоптимальные) ML-параметры.

--spectrum-settings-path  -  путь к json-файлу с частотными параметрами, сформированными инженером. Необязательный параметр. Если не задавать, то частотный анализатор не используется.

--timeout  -  полный таймаут работы анализатора в мс; через это время анализатор выдает получившийся результат. Необязательный параметр. По умолчанию 7000.

--recv-timeout  -  таймаут на прием очередной порции данных через stdin; если столько времени нет входящих данных, анализатор выдает получившийся результат. Необязательный параметр. По умолчанию 3000.

Приложение поддерживает режим машинного обучения.

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

Для обучения нужно:

  1. Подготовить файлы и разместить рядом с анализатором в папке ML в пяти подпапках (Human, IVR, Tone, Fax, Silence)

  2. Запустить анализатор из командной строки с двум параметрами – биас (от -9 до 9, 0 – нейтрально) и количество итераций обучения (рекомендуется 1 для вывода текущей статистики и 10000 для реального обучения).
    По результатам обучения выводится отчет о достигнутой точности, средней продолжительности определения человека и выставленных параметрах (которые при этом сохраняются рядом в файле SettingsML.json для дальнейшего использования в боевом режиме).

  3. Результат SettingsML.json для применения компонентом следует разместить в каталоге ':SYNC/common/cpd', заменив предыдущий.

Пример командной строки запуска в режиме обучения:

cpd --mode=learn --learn-bias=0 --learn-iterations=10000 --learn-data-dir-path=/some/path/to/wavs/ --learn-output-file-path=/some/path/to/SettingsML.json

Расшифровка параметров:

--learn-bias  -  приоритет от -9 до +9, где -9 - допускать потерю живых ответов, 9 - допускать плохие звонки на операторов, 0 - нейтрально. Необязательный параметр. По умолчанию 0.

--learn-iterations  -  количество итераций обучения. Необязательный параметр. По умолчанию 10000.

--learn-data-dir-path  -  путь к папке с размеченными данными для обучения. Обязательный параметр.

--learn-output-file-path  -  путь к выходному файлу с результатом обучения. Необязательный параметр. Если не задавать, то результат просто распечается в консоли.

Папка с размеченными данными должна содержать примеры аудио-записей для обучающего прогона. Формат файлов: *.wav PCM 8000Hz 16bit mono.
Файлы должны быть сгруппированы по типу содержимого и размещаться внутри подпапок:

  • Fax - примеры записи факса;

  • Human - примеры живых ответов людей;

  • IVR - примеры IVR (музыка, роботы, голосовое меню и т.п.);

  • Silence - примеры тишины;

  • Tone - различные тональные сигналы, гудки, пр.