Компонент CPD (детектор ответов)
Описание
Применяется в исходящих кампаниях для детекции ответа "живого" человека.
Выполняет запись разговора в течении указанного времени (5-7 секунд), в течение которых пытается определить тип источника звука.
Определение человека производится по истечении секунды тишины после окончания приветственной реплики абонента.
Определение роботов и автоматов производится по окончанию таймаута или длительной (более 2 секунд) приветственной реплики робота.
Определение тишины производится по окончании указанного интервала времени.
Определение факса производится почти сразу при обнаружении соответствующего тонального сигнала.
Алгоритм CPD, используемый компонентом, не требователен к ресурсам системы.
Индекс |
|
Краткое название |
|
Типы сценариев |
|
Стартовый модуль |
|
Режим |
Асинхронный |
Иконка |
|
Характер разветвления |
Разветвляющий, замыкающий |
Свойства
Спецификация | Описание |
---|---|
Название: |
Аргумент, содержащий время в секундах. Определяет сколько времени будет накапливаться запись разговора для дальнейшего анализа детектором ответа. |
Название: |
Признак сохранения файла записи, отправленного сервису детектора ответа. Сохранение выполняется в каталог
|
Название: |
Переменная, куда заносится причина завершения работы компонента. |
Название: |
Компонент, которому передается управление после обнаружения "живого" человека детектором ответа. |
Название: |
Компонент, которому передается управление в случае если детектор ответа не обнаружил в записи "живого" человека. |
Название: |
Компонент, которому передается управление в случае возникновения ошибки. |
Параметризация
Анализ 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.
Приложение поддерживает режим машинного обучения.
Обучение – это подбор оптимальных параметров для заранее размеченного (разложенного по папкам) набора голосовых файлов с учетом биаса (отклонения).
Биас позволяет задать приоритет – допустить потерю живых ответов или допустить плохие звонки на операторов.
Для обучения нужно:
-
Подготовить файлы и разместить рядом с анализатором в папке ML в пяти подпапках (Human, IVR, Tone, Fax, Silence)
-
Запустить анализатор из командной строки с двум параметрами – биас (от -9 до 9, 0 – нейтрально) и количество итераций обучения (рекомендуется 1 для вывода текущей статистики и 10000 для реального обучения).
По результатам обучения выводится отчет о достигнутой точности, средней продолжительности определения человека и выставленных параметрах (которые при этом сохраняются рядом в файле SettingsML.json для дальнейшего использования в боевом режиме). -
Результат 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 - различные тональные сигналы, гудки, пр.