Прослушиваем звонки контакт-центра: преобразуем аудиозаписи в текст

Качественный клиентский сервис – важнейшее конкурентное преимущество. Он влияет на лояльность клиентов к бренду и на решение о приобретении услуги.

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

Контакт-центры находятся на передней линии коммуникаций с клиентами и решения клиентских проблем. Они традиционно считаются одним из основных элементов обеспечения качественного сервиса.

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

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

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

Преобразование аудиофайлов в текстовые.

Рассмотрим процесс распознавания речи на примере нейронной сети Deep Speech-2 (github.com/mozilla/DeepSpeech).

Система перевода голоса в текст Deep Speech-2 полностью основана на искусственном интеллекте. Программа распознает слова в речевом потоке, слушая тысячи часов аудиозаписей и сопоставляя их с транскрипциями. В ней реализована мощная технология, известная как «глубокое обучение». Она предполагает работу разветвленной многоуровневой сети виртуальных «нейронов», обрабатывающих огромное количество данных.

Для обучения Deep Speech-2 можно использовать мощную видеокарту Nvidia Tesla P100 с 16 Гб видеопамяти. Ее мощности достаточно для преобразования 700 часов аудио за час.

Необходимо установить Python 3.6 и активировать среду разработки.

Для работы с Deep Speech-2 необходимо создать и активировать виртуальное окружение:

$ virtualenv -p python3 $HOME/tmp/deepspeech-venv/ $ source $HOME/tmp/deepspeech-venv/bin/activate

Устанавливаем Deep Speech-2:

$ pip3 install deepspeech-gpu

Запускаем (при наличии модели):

deepspeech --model models/output_graph.pbmm --scorer models/kenlm.scorer --audio my_audio_file.wav

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

Обучение нейронной сети выделять эмоционально окрашенные звонки.

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

PyTorch – фреймворк глубокого обучения с открытым исходным кодом. Реализует метод автоматического дифференцирования на основе ленты (tape), с помощью которого можно описывать и выполнять графы вычислений динамически, что удобно для отладки и конструирования сложных моделей с минимальными условиями. Устанавливаем библиотеку:

conda install pytorch -c pytorch

Основное понятие данной библиотеки – тензор (tensor), математический объект для хранения многомерных данных. Тензор ранга 0 – скаляр, тензор ранга 1 – вектор, тензор ранга 2 – матрица. Следовательно, тензор можно рассматривать как n-мерный массив скалярных значений.

Для обработки большого объема информации имеет смысл использовать GPU, доступ к которому производиться с помощью специализированного API – CUDA. PyTorch обеспечивает простоту создания CUDA – тензоров. Рекомендуется применять аппаратно независимый подход и писать код, который работает как на CPU, так и на GPU. Пример создания тензоров:

import torch device = tourch.device() x = tourch.rand(3, 3).to(device) describe(x)

Для выделения значимых частот в звуке и признаков эмоций в голосе была создана модель глубокого обучения на основе нейронной сети SincNet (github.com/mravanelli/sincnet). Исходный вариант используется для идентификации голосов. Например, для корпуса LibriSpeech ошибка классификации (Classification Error Rate) составила 0.96%.

Для анализа эмоционального окраса текста используем DeepPavlov (github.com/deepmipt/deeppavlov). Установим библиотеку:

pip install deeppavlov

С моделью классификации текста в соответствии с преобладающими эмоциями можно ознакомиться по ссылке

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

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

0
5 комментариев
Roman Rabochiy

эмоции то и не нужны никому, нет? что с них толку? 

Ответить
Развернуть ветку
NTA
Автор

Часто говорят про эмоциональное выгорание сотрудников (особенно в контакт-центрах). А это влияет на качество сервиса. Поэтому считаем, что эмоции очень важны.

Ответить
Развернуть ветку
Roman Rabochiy

вам прямо контакт центры говорят что у них сотрудники выгорают и они это определить не могут? ))

Ответить
Развернуть ветку
NTA
Автор

Это видно по текучести кадров и постоянным вакансиям в контакт-центрах. Согласитесь, что в контакт-центры обращаются тогда, когда возникла проблема, когда чем-то недоволен. И претензии звонящих выпадают на сотрудника, который принял звонок. Если таких звонящих - сотни в сутки, воспринимать и относиться нейтрально к этим ситуациям нелегко.  

Ответить
Развернуть ветку
Roman Rabochiy

вы придумали продукт там, где его нет.

Ответить
Развернуть ветку
2 комментария
Раскрывать всегда