La evaluación de llamadas es una parte clave del control de calidad para los centros de llamadas. Permite a las organizaciones ajustar su flujo de trabajo para que los operadores puedan trabajar más rápido y de manera más eficiente, así como evitar rutinas sin sentido.
Teniendo en cuenta que el centro de llamadas debería ser efectivo, trabajamos en la automatización de los puntajes de llamadas. Como resultado, se nos ocurrió un algoritmo que procesa las llamadas y las distribuye en dos grupos: sospechosas y neutrales. Todas las llamadas sospechosas se enviaron inmediatamente al equipo de evaluación de calidad.
Cómo entrenamos una red neuronal profunda
Para las muestras tomamos 1700 archivos de audio, en los que capacitamos a la red. Como la neurona inicialmente no sabía qué considerar sospechosa y qué era neutral, marcamos manualmente todos los archivos en consecuencia.
En muestras neutrales, los operadores:
- no alzaron sus voces;
- Proporcionar a los clientes toda la información solicitada;
- no respondió a las provocaciones del cliente.
En patrones sospechosos, los operadores a menudo hicieron lo siguiente:
- lenguaje obsceno usado;
- levantar la voz o gritar a los clientes;
- fue a la persona;
- se negó a asesorar sobre cuestiones.
Cuando el algoritmo terminó de procesar los archivos, marcó 200 archivos como no válidos. Estos archivos no contenían ningún signo sospechoso o neutral. Descubrimos lo que había en estos 200 archivos:
- el cliente colgó inmediatamente después de que el operador le respondió;
- el cliente no dijo nada después de ser respondido;
- hubo demasiado ruido en el lado del cliente o del operador.
Cuando eliminamos estos archivos, dividimos los 1,500 restantes en casos de capacitación y prueba. En el futuro, usamos estos conjuntos de datos para entrenar y probar una red neuronal profunda.
Paso 1: Extraer características
La extracción de características de alto nivel juega un papel importante en el aprendizaje automático, ya que afecta directamente la eficiencia del algoritmo. Después de analizar todas las fuentes posibles, seleccionamos los siguientes síntomas:
Estadísticas de tiempo
- Velocidad de cruce por cero : la velocidad a la que la señal cambia de más a menos y viceversa.
- Energía de cuadro media : la suma de las señales al cuadrado y normalizadas a la longitud del cuadro correspondiente.
- Subtropical energy entropy : la entropía de la subtrama de energía normalizada. Se puede interpretar como una medida de cambios drásticos.
- La desviación promedio / mediana / estándar del marco .
Estadísticas espectrales (con intervalos de frecuencia)
- Centroide espectral.
- Distribución espectral.
- Entropía espectral.
- Radiación espectral.
- Atenuación espectral.
Los coeficientes cepstrales de la frecuencia tonal y el vector de saturación son sensibles a la longitud de la señal de entrada. Podríamos extraerlos de todo el archivo a la vez, sin embargo, al hacerlo, perderíamos el desarrollo del rasgo a tiempo. Como este método no nos convenía, decidimos dividir la señal en "ventanas" (bloques de tiempo).
Para mejorar la calidad de la señal, dividimos la señal en trozos, que se superponían parcialmente entre sí. Luego, extrajimos la etiqueta secuencialmente para cada fragmento; por lo tanto, la matriz de atributos se calculó para cada archivo de audio.
Tamaño de ventana - 0.2 s; escalón de la ventana - 0.1 s.
Paso 2: define el tono de voz en frases separadas
Nuestro primer enfoque para resolver el problema es definir y procesar cada frase en la secuencia por separado.
En primer lugar, hicimos la
diarización y
aislamos todas las frases usando la biblioteca
LIUM . Los archivos de entrada eran de baja calidad, por lo que en la salida también aplicamos suavizado y umbral adaptativo para cada archivo.
Procesando interrupciones y largo silencio
Cuando determinamos los límites de tiempo para cada frase (tanto el cliente como el operador), los superpusimos y revelamos casos en que ambas personas hablan al mismo tiempo, así como casos en que ambos están en silencio. Solo quedaba por determinar el valor umbral. Acordamos que si 3 o más segundos los participantes hablan al mismo tiempo, esto se considera una interrupción. Para el silencio, se estableció exactamente un umbral de 3 segundos.
El punto es que cada frase tiene su propia longitud. En consecuencia, el número de características extraídas para cada frase es diferente.
La red neuronal
LSTM podría manejar este problema. Las redes de este tipo no solo pueden procesar secuencias de diferentes longitudes, sino que también pueden contener comentarios, lo que le brinda la capacidad de guardar información. Estas características son muy importantes porque las frases pronunciadas anteriormente contienen información que afecta a las frases pronunciadas después.
Luego capacitamos a nuestra red LSTM para determinar la entonación de cada frase.
Como conjunto de entrenamiento, tomamos 70 archivos con 30 frases en promedio (15 frases para cada lado).
El objetivo principal era evaluar las frases del operador del centro de llamadas, por lo que no utilizamos el discurso del cliente para la capacitación. Utilizamos 750 frases como un conjunto de datos de entrenamiento y 250 frases como prueba. Como resultado, la neurona aprendió a clasificar el habla con una precisión del 72%.
Pero, al final, no estábamos satisfechos con el rendimiento de la red LSTM: trabajar con ella tomó demasiado tiempo y los resultados estuvieron lejos de ser perfectos. Por lo tanto, se decidió utilizar un enfoque diferente.
Es hora de decir cómo determinamos el tono de la voz usando
XGBoost más una combinación de LSTM y XGB.
Determine el tono de voz para todo el archivo
Marcamos los archivos como sospechosos si contenían al menos una frase que violaba las reglas. Entonces etiquetamos 2500 archivos.
Para extraer atributos, utilizamos el mismo método y la misma arquitectura
ANN , pero con una diferencia: escalamos la arquitectura para adaptarla a las nuevas dimensiones de los atributos.
Con parámetros óptimos, la red neuronal produjo una precisión del 85%.
XGBoost
El modelo XGBoost requiere un número fijo de atributos para cada archivo. Para satisfacer este requisito, hemos creado varias señales y parámetros.
Se utilizaron las siguientes estadísticas:
- El valor promedio de la señal.
- El valor promedio de los primeros 10 segundos de la señal.
- El valor promedio de los últimos 3 segundos de la señal.
- El valor promedio de los máximos locales en la señal.
- El valor promedio de los máximos locales en los primeros 10 segundos de la señal.
- El valor promedio de los máximos locales en los últimos 3 segundos de la señal.
Todos los indicadores se calcularon por separado para cada señal. El número total de atributos es 36, con la excepción de la longitud del registro. Como resultado, teníamos 37 signos numéricos para cada registro.
La precisión de predicción de este algoritmo es 0.869.
Combinación de LSTM y XGB
Para combinar los clasificadores, cruzamos estos dos modelos. En la salida, esto aumentó la precisión en un 2%.
Es decir, pudimos aumentar la precisión de la predicción a 0.9
ROC -
AUC (Área bajo curva).
Resultado
Probamos nuestra red neuronal profunda en 205 archivos (177 neutrales, 28 sospechosos). La red tuvo que procesar cada archivo y decidir a qué grupo pertenece. Los siguientes son los resultados:
- 170 archivos neutrales fueron identificados correctamente;
- 7 archivos neutrales fueron identificados como sospechosos;
- 13 archivos sospechosos fueron identificados correctamente;
- 15 archivos sospechosos fueron identificados como neutrales.
Para estimar el porcentaje de resultados correctos / falsos, utilizamos la
matriz de errores en forma de una tabla de 2x2.
Encuentra una frase específica en una conversación
Estábamos ansiosos por probar este enfoque para reconocer palabras y frases en archivos de audio. El objetivo era encontrar archivos en los que el operador del centro de llamadas no se presentara a los clientes en los primeros 10 segundos de la conversación.
Tomamos 200 frases con una duración promedio de 1.5 segundos, en las cuales los operadores llaman su nombre y el nombre de la compañía.
La búsqueda manual de dichos archivos llevó mucho tiempo, porque Tuve que escuchar cada archivo para verificar si contenía las frases necesarias. Para acelerar el entrenamiento adicional, aumentamos "artificialmente" el conjunto de datos: cambiamos cada archivo 6 veces al azar - agregamos ruido, cambiamos la frecuencia y / o el volumen. Entonces obtuvimos un conjunto de datos de 1,500 archivos.
Resumen
Utilizamos los primeros 10 segundos de la respuesta del operador para entrenar al clasificador, porque fue en este intervalo que se pronunció la frase deseada. Cada uno de estos pasajes se dividió en ventanas (longitud de ventana de 1,5 s, paso de ventana de 1 s) y la red neuronal la procesó como un archivo de entrada. Como archivo de salida, recibimos la probabilidad de pronunciar cada frase en la ventana seleccionada.
Ejecutamos otros 300 archivos a través de la red para averiguar si la frase deseada se pronunció en los primeros 10 segundos. Para estos archivos, la precisión fue del 87%.
En realidad, ¿para qué sirve todo esto?
La evaluación automática de llamadas ayuda a determinar KPI claros para los operadores de centros de llamadas, resaltar y seguir las mejores prácticas, y aumentar el rendimiento del centro de llamadas. Pero vale la pena señalar que el software de reconocimiento de voz se puede utilizar para una gama más amplia de tareas.
A continuación se presentan algunos ejemplos de cómo el reconocimiento de voz puede ayudar a las organizaciones:
- recopilar y analizar datos para mejorar UX de voz;
- analizar registros de llamadas para identificar relaciones y tendencias;
- reconocer a las personas por voz;
- Encuentre e identifique las emociones del cliente para mejorar la satisfacción del usuario.
- aumentar los ingresos promedio por llamada;
- reducir el flujo de salida;
- y mucho mas!