Aún no has dicho la palabra "hola" y ya sabemos a quién

Nuestra red neuronal puede hacer esto, reconociendo a una persona por una sílaba pronunciada. Sin embargo, el tema de este artículo no está directamente relacionado con la identificación de voz, aunque sí lo estará. Hablaremos sobre las características de la red neuronal, el llamado d-vector, que puede usarse en tareas de procesamiento de sonido: desde la verificación hasta el reconocimiento del habla y las emociones.

imagen


Materiel


Dependiendo de la frecuencia de muestreo, un segundo de sonido puede contener de 8 a 48 mil números. Se pueden representar como desviaciones de la posición de equilibrio de la membrana del altavoz o el micrófono. De hecho, tal descripción del sonido es redundante: la amplitud de la señal en el siguiente momento depende en gran medida de la anterior, lo que sugiere que esta señal puede comprimirse efectivamente sin mucha pérdida de información. Hay una gran cantidad de formas de reducir la dimensión de una señal, y la mayoría de ellas se basan en las propiedades físicas del sonido y las características del oído humano.

imagen

Meme 1.

Antes de que las redes neuronales funcionaran bien (en un sentido amplio), la comunidad trabajó con los llamados atributos hechos a mano. Los más famosos y ampliamente utilizados son Pitch y MFCC . El primero tiene un significado físico de la frecuencia de las oscilaciones de las cuerdas vocales, que difieren, por ejemplo, para diferentes personas, y también dependen de la entonación. La idea de los coeficientes cepstrales (MFCC) se basa en la no linealidad de la percepción humana del sonido, es decir, la frecuencia y el volumen. A una persona le parece que un sonido es más alto que otro en cierta medida, si en realidad sus frecuencias difieren en un cierto número de veces.

Estas y otras características calculadas manualmente son irreversibles en el sentido de que parte de la señal se pierde para siempre. En algunas tareas esto no es crítico, pero me gustaría proponer un enfoque más universal y funcional.

La clave para resolver este problema es la transformación de Fourier. Al usarlo, puede imaginar una señal de audio como la suma de ondas con diferentes frecuencias y amplitudes. De hecho, el habla no es estacionaria en el sentido de que su espectro será cualitativamente diferente en diferentes momentos. Esto nos permite considerarlo en la representación de frecuencia de tiempo, usando espectrogramas .

Para construir un espectrograma, debe dividir el sonido en secciones de intersección (marcos superpuestos) de varias decenas de milisegundos de longitud, para cada uno de ellos calcular la transformada de Fourier y escribir sus módulos en columnas en los espectrogramas. Además, dicha transformación es casi mutuamente inversa, es decir, utilizando la transformación inversa de Fourier y el algoritmo Griffin-Lim, puede restaurar la señal de sonido original (de hecho, hay pérdida de información, ya que la transformación de Fourier es compleja en el caso general, y el espectrograma tiene un valor real, y, para aproximar la recuperación de fase, generalmente se usa el algoritmo iterativo Griffin-Lim). Total, si tomamos el logaritmo de las amplitudes, obtenemos estas imágenes:

imagen

Espectrograma de 5 segundos de discurso.

Y son procesados ​​convenientemente por redes convolucionales.

Tal pirateo se usa a menudo en tareas de procesamiento de imágenes: existen grandes bases de datos con ejemplos de diferentes objetos (por ejemplo, ImageNet). Puede entrenar una cuadrícula grande para reconocerlos y luego volver a entrenarla en nuestra tarea específica, o tomar el resultado de salida de una de las capas internas completamente conectadas. Se cree que dicha arquitectura calculará buenas características informativas para las imágenes de entrada. La experiencia sugiere que casi siempre los resultados serán mejores que si entrenamos la red neuronal desde cero.

La idea de los vectores d (generalmente vectores d, pero a veces llamados vectores x) es similar al uso de cuadrículas previamente entrenadas en ImageNet, excepto por el hecho de que no hay bases similares para los espectrogramas. Como una posible salida, se pueden considerar los codificadores automáticos, pero a priori no saben qué buscar en el espectrograma, por lo tanto, funcionan de manera insatisfactoria.

Necesitamos profundizar


Atención, comienza la parte principal de este artículo.

La tarea de verificar a una persona por voz es ampliamente conocida, donde es necesario determinar por el segmento de entrada del discurso cuál de las personas en la base de datos lo dijo. De hecho, la construcción de tales sistemas es una ciencia separada, y hay muchos complementos diferentes (duración del discurso; se requiere que todos hablen el mismo texto; escenificando uno contra uno o uno contra todos), que son críticos bajo diferentes condiciones, pero para nosotros necesitas prestar atención a otra cosa.

A saber: qué tan buenas serán las características si pre-entrenamos la grilla para reconocer a una persona. Todo se hace por el bien de los signos.

Esto nos ayudará a la intuición y al artículo de 2015. En ella, los autores enseñan a la cuadrícula a reconocer a una persona por la cara (reconocimiento facial). La clave de este trabajo es utilizar la pérdida de triplete.

Su idea es muy simple: normalizamos las características de la penúltima capa para que se encuentren en una esfera unitaria y exijan que los puntos de una clase se encuentren cerca y lejos de ser diferentes. Esto se puede lograr de la siguiente manera: para cada ejemplo de entrenamiento (ancla) encontramos dos más de la misma clase y de otra clase en la muestra: positiva y negativa. Luego, para estos triples puntos formamos una pérdida:

\ begin {ecuación}
\ Big [\ Vert f (x ^ a) - f (x ^ p) \ Vert - \ Vert f (x ^ a) - f (x ^ n) \ Vert + \ alpha \ Big] _ +,
\ end {ecuación}

donde x es la imagen de entrada, f es la salida de la cuadrícula después de la normalización, alfa es el parámetro seleccionado manualmente, [] _ ​​{+} es la función ReLU. Cualitativamente, el valor de esta pérdida es cero si la distancia entre el ancla y los puntos positivos es mayor que la distancia entre el ancla y el negativo en al menos alfa, y cuanto mayor sea la diferencia entre dos clases diferentes.

imagen

Una ilustración de lo que sucede con las características después del entrenamiento con Triplet Loss.

Por cierto, puedes formar triples de una manera inteligente. En algún momento, la magnitud de la pérdida se volverá pequeña, y para acelerar el aprendizaje, puede buscar ejemplos negativos no entre todas las otras clases, pero considere solo aquellos cercanos al ancla. Pero para grandes conjuntos de datos, esto es difícil, porque debe considerar las distancias por pares entre las clases que cambian después de cada iteración del aprendizaje en red.

La pérdida de triplete tiene una ventaja sobre la crossentropía categórica, que se usa en la clasificación convencional. Un modelo entrenado con entropía cruzada intentará agrupar todos los puntos de una clase en un área cada vez más pequeña, y la información que es superflua para una tarea en particular puede perderse. Pero no queremos esto, porque vamos a utilizar la red neuronal como un generador de características, y no para verificación. La pérdida de triplete tiene esta propiedad en un grado mucho menor: es más importante que difunda diferentes clases en diferentes áreas en una sola esfera que aburrir una clase.

imagen

Meme 2.

Lo último que debe hacer antes de entrenar al generador de características en espectrogramas es determinar sus tamaños. Obviamente, la precisión de la clasificación será mayor, mayor será el período de tiempo que consideraremos, pero aparecerán los signos más "promediados". Por lo tanto, es razonable usar una longitud de señal tal que caiga dentro de 1 a 3 fonemas (sílabas); medio segundo parece apropiado.

Para el entrenamiento, tomamos el conjunto de datos VoxCeleb2 , donde para cada uno de los altavoces 6300 hay varias grabaciones de audio separadas de varios minutos cada una (realizadas en diferentes condiciones). Usamos parte de los archivos de audio para el entrenamiento, y el resto para la validación, seleccionamos la arquitectura de red de convolución, le agregamos Triplet Loss y aprendemos.

Los resultados fueron muy buenos. En casi 2 semanas de entrenamiento a 1080Ti (sí, durante tanto tiempo), la precisión de clasificación alcanzó el 55%. Parece que no mucho, pero la precisión del top 5 es del 78%, y si consideramos solo la mitad más ruidosa de los fragmentos, que en su mayoría son vocales estresadas, la precisión del top 5 aumentará al 91%. Podemos decir que podemos identificar a una persona por una de sus frases con una precisión decente. Pero no importa.

imagen

Meme 3.

Después de todo, todo comenzó para características que se pueden obtener como una salida de la penúltima antes de clasificar la capa de red neuronal. Los probamos en nuestras tareas, y en todas partes los resultados fueron mejores que el uso de enfoques clásicos para calcular atributos. Por ejemplo, en el problema del reconocimiento de emociones, el uso de vectores d nos permitió evitar el estado del arte en un 4%, y el artículo correspondiente fue aceptado en la conferencia FICC 2019. Sin embargo, el reconocimiento de emociones es una historia completamente diferente, de la que hablaremos más adelante.

Publicado por Gregory Sterling sterling239 , Experto en aprendizaje profundo, Neurodata Lab.

Source: https://habr.com/ru/post/es422635/


All Articles