Identificación de personas mediante audios de voz, utilizando Redes Neuronales Artificiales Curso: Tópicos Especiales en PDSI 1 (EEE-22) Profesor: Dr. Gustavo Huamán Alumno: Bernick L. Salvador Rosas
Estado del arte:
Existen diversos trabajos a nivel mundial acerca del procesamiento de audio y en específico de la voz, en Latinoamérica hay trabajos importantes que utilizan Redes Neuronales Artificiales (RNA) para el reconocimiento automático de la voz (Torres et al, 2005; Cruz & Acevedo, 2008), en el Perú también se han realizado trabajos importantes acerca del análisis de la voz humana y reconocimiento de palabras (Peralta & Cotrina, 2006). El reconocimiento de voz utilizando redes neuronales tiene muchas aplicaciones prácticas, entre las l as que se encuentran: (1) tocar 5 notas musicales en un piano estándar mediante un robot que distinga las 5 palabras monosílabas correspondientes a dichas notas musicales (Padilla, 2003), (2) identificar la correspondiente especie de ave mediante la grabación de su canto en ambientes naturales (Jácome et al, 2012), y (3) desarrollar un interfaz máquina-usuario para delimitar el acceso a ciertos locutores identificados y habilitados (Manuel, 2015). Existen muchas herramientas en la actualidad que sirven para analizar y reconocer señales de audio en general pero éstas, no ofrecen mayor información acerca de los algoritmos y técnicas que utilizan o emplean en su software o hardware (Reig, 2014). Trabajos relacionados:
Los diversos trabajos analizados similares al nuestro utilizan diferentes tipos de parametrización para obtener valores característicos de la voz (Bancos de filtros y Transformada de Fourier, Mel-Frequency Cepstrum Coefficients - MFCC, Linear Predictive Coeficientes - LPC), y también diferentes tipos de estructuras de RNA (Perceptron Multicapa Backpropagation, Recurrentes), pero la mayoría coincide en el diagrama del bloques, el cual describe la correcta secuencia para una adecuada adquisición, pre-procesamiento, procesamiento y reconocimiento de la voz humana,
esto se resumen y sintetiza en la Figura 1. La mayoría de los trabajos revisados tienen como objetivo reconocer palabras sin diferenciar al hablante, por lo que extracción de características de la voz es una técnica fundamental, pero se analizará si todos los métodos utilizados para la extracción de la voz también funcionan correctamente para la diferenciación entre voces humanas.
Figura 1. Diagrama de bloques de un sistema de identificación de personas mediante la voz [Diagrama elaborado en Lucidchart, disponible en www.lucidchart.com]
1. Adquisición de la señal de voz:
En gran parte de los trabajos que realizan el paso de adquisición de las señales de voz utilizan un micrófono y posteriormente la digitalización por medio de una tarjeta de sonido de un computador, la diferencia existe en la frecuencia de muestreo y la resolución que emplean, por ejemplo: Padilla (2003) utiliza un micrófono con una frecuencia de muestreo de 8KHz, Torres et al. (2005) similarmente utilizaron un micrófono y una tarjeta de sonido para adquirir la señal de voz a una frecuencia de muestreo de 8KHz, De Luna et al. (2006) capturaron la voz en una computadora aplicando el software Simulink de Matlalb con una duración de 3 a 4 segundos y una resolución de 8 bits, Peralta &
Cotrina (2006) utilizaron un micrófono dinámico, una tarjeta de sonido Sound Blaster, una tasa de muestreo de 11KHz y una resolución de 8 bits, Cruz & Acevedo (2008) utilizaron el software Mercury instalado en una PC para la grabación de la palabra hablado, un canal de tipo monofásico con una velocidad de muestreo de 11KHz y una resolución de 16 bits, Jácome et al. (2012) utiliza una base de datos de cantos de aves disponible en internet, Mendoza et al. (2013) adquirieron las señales con electrodos superficiales dispuestos en la superficie de la garganta con una frecuencia de 50KHz y una duración de 2 segundos, finalmente, Manuel (2015) utiliza un transductor del tipo Electret, que es continua en tiempo y amplitud, en el sistema de adquisición con una frecuencia de muestreo de 11.025KHz, 16 bits de resolución y una duración de 2 segundos. 2. Pre-procesamiento (acondicionamiento):
En esta etapa de pre-procesamiento de la señal de audio, en varios casos llamada también etapa de acondicionamiento, se utilizan diferentes métodos y técnicas que ayudan a que el procesamiento sea eficaz y más eficiente, entre los utilizados por los autores de los trabajos revisados se pueden mencionar: Padilla (2003) emplea una función ventana (Hamming o Hanning) para evitar el problema de la distorsión que se produce cuando se procesan las muestras de voz con el FFT. La ventana Hamming se define como:
() 0.54 0.46cos(2 1)
La ventana Hanning se define como:
() 0.5 0.5cos(2 1)
Al final, sólo utiliza la ventana Hamming para intervalos de 30 ms o 240 muestras, realizando un solape de 80 muestras. Torres et al. (2005) utilizan un banco de filtros para separar las señales unas de otras, el primer filtro utilizado fue el filtro de traslado de promedios (moving average) en el dominio del tiempo que sirve para reducir el ruido aleatorio
mientras impide los cambios abruptos de la respuesta impulsional (Smith, 1999). Este filtro se describe matemáticamente como:
> 1 =
Donde es la señal de entrada,
es la señal de salida y
es el número de
puntos que se van a promediar. Después del filtrado, normalizan la señal en el rango de [-1,1] de modo que a cada muestra de la señal corresponda una potencia similar. De Luna et al. (2006) quitaron la parte del silencio de la entrada de todos los archivos mediante la comparación entre los puntos del vector de sonido e identificando un cambio dramático de valor. Peralta & Cotrina (2006) aplicaron la detección automática de extremos cuyo funcionamiento se basa en el análisis de la evolución en el tiempo del parámetro COPER (Peralta & Cotrina, 2002), que es un algoritmo que fue desarrollado por los mismos autores y cuya fórmula matemática es:
=|| 1| 1|
La detección del comienzo y final de la pronunciación de una palabra depende de si el valor del parámetro COPER es mayor o menor de un umbral dado un periodo de tiempo, respectivamente. Cruz & Acevedo (2008) utilizaron un acotamiento de la señal para eliminar los silencios, luego un filtrado con Wavelets recomendando el uso de la wavelet Daubechies, finalmente una normalización entre [-1,1] cuyo procedimiento es: a) Cálculo de la media (µ) y la desviación estándar ( σ) de la señal de entrada. b) Normalización de los datos mediante la relación:
̇
c) División entre el mayor valor absoluto entre el mínimo y máximo de
̇
Mendoza et al. (2013) utilizan el análisis de la energía de señal mediante ventanas de 400us de duración para ubicar la zona activa, esto se define como:
Donde
( (−)+ ) =
es el vector de energía, es la señal y
es el tamaño de la ventana.
Luego establecen un umbral que indica el inicio de la actividad subvocal, el cual se define como:
Donde es el umbral y
á
(0.15)á
es el pico máximo del vector energía de la señal.
Seguidamente, aplicaron una ventana de 0.8s de longitud a partir del inicio de la zona activa. Luego de la ubicación de la zona activa procedieron a filtrar la señal usando la Transformada Wavelet Discreta (TWD) (Marcos et al., 2005). Reig (2014), basado en los trabajos de Peralta & Cotrina, utiliza un Detector Automático de Extremos, el cual se basa en la evolución del parámetro COPER en las tramas para hallar el inicio y fin de la pronunciación de una palabra. Manuel (2015) realiza en primer lugar un filtrado de la señal con el objetivo de eliminar el mayor ruido posible utilizando un filtro Wavelet, técnica llamada también “Denoising”. Después del filtrado se realiza una normalización con el
objetivo de lograr que la media de los valores sea cero y la amplitud esté en un rango de [-1,1], para esto se utiliza la ecuación:
max()
Luego se realiza un acotamiento de la señal utilizando la energía promedio, el proceso consta de dividir la señal en ventanas de un determinado número de muestras, calcular la energía de ese trozo y determinar, por medio de un umbral de decisión, si la ventana es eliminada o no. La energía promedio está dada por:
1 =()
Después del acotamiento, se usa un filtro de pre-énfasis que vienen a ser un filtro digital de primer orden cuya función de transferencia es la siguiente:
() 1 −
Donde se encuentra entre 0.9 y 1. El filtro de pre-énfasis tiene como objetivo aumentar la energía de alta frecuencia para compensar la pérdida durante el habla humana. 3. Procesamiento (extracción de características fundamentales):
Las técnicas y métodos de extracción de características o parámetros fundamentales de la voz también son diversos, entre los trabajos previos analizados se pueden mencionar los métodos y técnicas más utilizadas y que han dado un resultado óptimo: Padilla (2003) utiliza los parámetros LPC, pues éstos pueden proporcionar una indicación de los polos (y de los formantes) de la función de transferencia del tracto vocal, el inconveniente que menciona es acerca de que la extracción de parámetros LPC, que funciona bien en sonidos sonoros pero no es demasiado fiable en sonidos sordos, aun así utiliza entre 5 y 10 polos para aproximar a la envolvente de la FFT. Torres et al. (2005) usan la herramienta FFT, que es una versión más eficiente de la DFT, para extraer características particulares de cada señal de voz, es decir discriminan así las frecuencias que poseen dichas señales. Posteriormente normalizan el espectro de la señal de voz y realizan una ponderación de las muestras tal que los datos más característicos estén incluidos en un vector de tamaño reducido. De Luna et al. (2006) usan la Codificación de Predicción Lineal (LPC) para obtener coeficientes que servirán el entrenamiento de la red neuronal. Peralta & Cotrina (2006) utilizan tramas de 10 a 20 ms para analizar la envolvente espectral de la voz y mencionan que éste es el tiempo donde se sitúa la información diferencial de los distintos tipos de sonidos, luego realizan la multiplicación de cada trama por una ventana de Hamming, seguido de un filtrado de preénfasis, un análisis del espectro mediante FFT, un cálculo de la energía en cada una de las bandas en que la escala mel divide el espectro y finalmente hallan los coeficientes cepstrum.
Cruz & Acevedo (2008) utilizaron coeficientes LPC los cuales mencionan que son capaces de modelar con gran aproximación la información lingüística y la zona vocal humana, probaron con diferentes números de coeficientes LPC (de 2 a 15). Jácome et al. (2012) utilizaron una plataforma de procesamiento especializada en audio en tiempo real y con mucha versatilidad llamada Max MSP ®, el cual realiza un proceso de análisis espectral con dos parámetros básicos: frecuencia y amplitud. Para familiarizarse con el lenguaje de programación del software mencionado se recomienda revisar un tutorial (Jean-Francois, 2008). Mendoza et al. (2013) realizaron la extracción de características relevantes mediante la Transformada Wavelet Packet (TWP), ya que mencionan que esto permitirá un análisis multiresolucional de las señales. Finalmente aplicaron Análisis de Componentes Principales (PCA) para la reducción de la dimensionalidad de los datos. Reig (2014), basado en los trabajos de Peralta & Cotrina, utiliza el método de Coeficientes Cepstrales en Escala de Mel (MFCC), el cual es muy eficiente para la extracción de características. La secuencia para el cálculo de los coeficienes MFFC es: tramas, enventanado, pre-énfasis, FFT, energía en cada banda, cepstro, coeficientes mel Cepstrum. Manuel (2015) hace una evaluación de las diferentes técnicas de parametrización entre las que se encuentran el LPC (Linear Predictive Coefficients), LPCC (Linear Predictive Cepstrum Coefficients) y el MFCC (Mel-Frequency Cepstrum Coefficients), pero se decide por utilizar los coeficientes ceptrales debido a que éstos son parámetros invariantes sin importar las distorsiones introducidas por el micrófono o cualquier sistema de transmisión. La secuencia para la obtención de los MFCC es la siguiente: FFT, valor absoluto, logaritmo, IFFT, coeficientes Cepstum. 4. Reconocimiento con RNA:
Las estructuras de las redes neuronales que se utilizan en los diferentes trabajos previos también fueron distintas, pues no solamente fueron diferentes tipos de RNA sino diferían en el número entradas, en el número de neuronas en la capa oculta y en el número de salidas. Se mencionan algunas: Padilla (2003) implementó una red recurrente (RNN) formada por 20 entradas, 5 neuronas en la capa oculta y una salida en el rango [0,1]. La RNN se entrenó usando el algoritmo backpropagation. Torres et al. (2005) entrenaron una red perceptron multicapa con retro propagación de error, con 80 entradas correspondiente a las 80 muestras del espectro normalizado y promediado, 5 neuronas en la capa oculta y 3 salidas. De Luna et al. (2006) usaron el tipo de red auto organizada (SOFM) o llamada también mapas de Kohonen con 30 entradas, que son redes neuronales que tienen la peculiaridad de tener un mapa organizado de sus pesos, mediante el algoritmo de entrenamiento. Asimismo utilizan otros algoritmos de reconocimiento que son el Alineamiento Dinámico del Tiempo (DTW) y Modelos Ocultos de Markov (HMM), y finalmente un Modelo de Mayoría que realiza una decisión de mayoría. Peralta & Cotrina (2006) utilizaron una RNA tipo Perceptron Multicapa (MLP) con aprendizaje supervisado Backpropagation, con 100 entradas, 32 neuronas en la capa oculta y 10 salidas. Cruz & Acevedo (2008) utilizan también una arquitectura Backpropagation pero con 25 entradas, 21 neuronas en la capa oculta y 5 salidas. Mendoza et al. (2013), al igual que los dos anteriores autores, realizan la clasificación con una red neuronal perceptron multicapa con aprendizaje supervisado por retropropagación que consta de 6 entradas, 25 neuronas en la capa oculta y 1 salida. Un entrenamiento de la red con el 70% de la base de datos y el 30% para el test de efectividad.
Manuel (2015) utiliza una RNA con topología perceptron multicapa con aprendizaje supervisado del tipo Backpropagation (Levenberg-Marquardt en el toolbox de Matlab). El número de entradas está definido por el vector característico.
Metodología:
El objetivo de este trabajo es implementar una RNA que pueda identificar a una persona (en específico a mí) entre un grupo de personas mediante grabaciones de audio de voz, para ello se generará una pequeña base de datos de audio de voz, luego se extraerán parámetros de cada audio utilizando los diferentes métodos vistos en los trabajos relacionados para hacer una comparación entre cuál de ellos se obtiene un menor error de reconocimiento. Asimismo, se probarán diferentes estructuras de redes neuronales para obtener la predicción más óptima. 1. Base de datos y adquisición de las señales de voz:
Se ha generado una base de datos de audios con la voz de 9 personas diferentes (incluyéndome) mediante la grabación en un móvil con una app y en formato .wav, cada audio tiene una duración entre 1 y 2 segundos y corresponde a la palabra “hola”. La base de datos se ha dividido en dos grupos: un grupo para el
entrenamiento de la red neuronal que consiste de 45 audios (5 audios distintos por cada persona), y un grupo para el test de la red neuronal que consiste de 15 audios (5 audios de mi voz y los otros 10 audios de las demás personas). 2. Pre-procesamiento de las señales:
Detección automática de extremos, evolución en el tiempo del parámetro COPER Filtrado Wavelet (Daubechies), Transformada Wavelet Discreta Normalización (-1,1) Media y desviación estándar Filtro de pre-énfasis
3. Procesamiento, extracción de características fundamentales:
3.1.Codificación de Predicción Lineal (LPC):
El algoritmo LPC intenta predecir el valor de cualquier punto en un sistema lineal variante en el tiempo, basado en los valores de las P muestras anteriores (Padilla, 2003). La representación, solamente de polos de la función de
( ) () 1 ∑= ()−
transferencia del tracto vocal ecuación:
Los valores de
()
, el cual se puede representar por la siguiente
se denominan coeficientes de predicción, mientras que G
representa la ganancia, que está asociada con la excitación del tracto vocal. El modelo LPC: Para la señal de voz
( )
()
, la muestra de voz predicha
y de las anteriores muestras (Furui, 1989):
̅() ()( ) =
El análisis LPC pretende obtener los términos
̅()
es una función de
( )
de acuerdo al criterio del
mínimo error cuadrático. El error se define como:
( ) () () ̅() () ( ) =
Se toma la derivada del error cuadrático medio con respecto a los coeficientes
( )
e igualándolo a 0 resulta:
Por tanto:
( ) [() ()( )] 0 = [() ()( ) ]( ) 0 =
Para
1≤≤
( ) ( ) ( ) () ( ) =
Para
1≤≤
Hay varios métodos para resolver la ecuación de coeficientes de predicción,
entre ellos se encuentra el método de autocorrelación con el algoritmo de Levinson-Durbin. Método de Autocorrelación (Levinson-Durbin): El método supone que la señal es estacionaria dentro de la ventana de análisis. Esta suposición se puede satisfacer con una función ventana
1)
()(0 ≤ ≤
donde N corresponde a un número discreto de puntos en un intervalo de
tiempo fijo. La solución de la autocorrelación a la última ecuación anterior se expresa como:
Donde
( )
( ) | | ( ) ( ) =
( ) () −− ( ) = ()( )
es una función par (
Una vez que el término de la autocorrelación
Para
1≤≤
Para
0≤≤
) y se calcula así:
( )
ha sido calculado, se utiliza
un algoritmo recursivo, denominado recursión de Durbin para determinar el valor de energía.
( )
. El estado inicial de la recursión comienza con un término de
(0)
Para calcular los siguientes estados se realizan las siguientes ecuaciones:
− − ( )( ))/− () (() = () () ( ) −( ) ()−( )
(1 ())−
Para
Para
1≤≤
1≤≤1
La solución final de
()
es dada por
( ) 1 ≤ ≤ para
3.2.Coeficientes Cepstrales en Frecuencia en Escala de Mel (MFCC):
Son una representación definida como el cepstrum de una señal ventaneada en el tiempo que ha sido derivada de la aplicación de una Transformada Rápida de Fourier, pero en una escala de frecuencias no lineal, las cuales se aproximan al comportamiento del sistema auditivo humano (Reig, 2014). A diferencia de los LPC que se basan en la producción del habla, su principal característica es que las bandas de frecuencia están situadas logarítmicamente (según la escala Mel), que modela la respuesta auditiva humana más apropiadamente (Manuel, 2015).
Reig (2014) Manuel (2015) En la Figura 3, se muestra el esquema para la obtención de los MFCC. 4. Reconocimiento mediante RNA:
Resultados:
Los resultados obtenidos en el test de la red neuronal diseñada se muestran en la Tabla 1….
Se utiliza la tasa de reconocimiento (LDE) que mide la eficiencia del sistema planteado en este trabajo y el cual se expresa así:
% °° × 100
Para comparar si nuestros resultados han sido óptimos, se hará una comparación con los resultados que obtuvieron en los trabajos previos que se mencionaron anteriormente y
los cuales son descritos a continuación: Padilla (2003) logró un reconocimiento de voz en torno al 95% de acierto, Torres et al. (2005) lograron en promedio un porcentaje de acierto del 91%, Peralta & Cotrina (2006) obtuvieron una tasa de acierto de 91.65% cuando probaron en ambientes con ruido de fondo de baja amplitud y en entornos ruidosos con ruido de hasta 15dB alcanzaron una tasa de acierto de 87.4%, Cruz & Acevedo (2008) obtuvieron una efectividad del 96% cuando los archivos de voz no pasan por la etapa de pre procesamiento, Mendoza et al. (2013) tuvieron en promedio una efectividad del 75% en un entorno de prueba expuesto a 70dB de ruido acústico, por último, Manuel (2015) obtiene un porcentaje de acierto de 64.58% en el test de validación de la RNA que utilizó.
Conclusiones:
Bibliografía:
[1]
Manuel, M. (2015). Sistema automático de reconocimiento de voz para control de acceso, XIII Congreso Argentino de Acústica - VII Jornadas de Acústica, Electroacústica y Áreas Vinculadas, CADAE 2015, Buenos Aires, Argentina.
[2]
Reig, D. (2014). Implementación de algoritmos para la extracción de patrones característicos en sistemas de reconocimiento de voz en Matlab (Trabajo final de carrera). Universidad Politécnica de Valencia, Gandía, España.
[3]
Mendoza, L. E., Peña, J., Muñoz, L. A., Velandia, H. J. (2013). Procesamiento de señales provenientes del habla subvocal usando Wavelet Packet y Redes Neuronales. Tecno Lógicas, Edición Especial, pp. 655-667.
[4]
Jácome, H., Lucio, J.F., Jurado, G. & Enríquez, A.D. (2012). Identificación de señales de audio vía redes neuronales artificiales, SONAC Revista de Sonido y Acústica, Núm. 3, pp. 53-61.
[5]
Camarena, J. A. (2011). Síntesis y Reconocimiento de Voz [diapositiva]. Universidad Michoacana de San Nicolás de Hidalgo, Facultad de Ingeniería Eléctrica, 214 diapositivas.
[6]
Cruz, L. & Acevedo, M. (2008). Reconocimiento de voz usando Redes Neuronales Artificiales Backpropagation y Coeficientes LPC, 6to Congreso Internacional de Cómputo en Optimización y Software (CiCos), pp. 89-99.
[7]
Jean-Francois, Ch. (2008). A Tutorial on Spectral Sound Processing Using Max/MSP and Jitter. Computer Music Journal, 32:3, pp. 87-102.
[8]
Peralta, F. & Cotrina, A. (2006). Reconocedor y Analizador de voz, IBERCHIP, San José, Costa Rica.
[9]
De Luna, C., Martínez, J. C., Mora, M. (2006). Reconocimiento de Voz con Redes Neuronales, DTW y Modelos Ocultos de Markov. Conciencia Tecnológica, número 32.
[10] Torres, C., Mattos, L., Perpiñan, G., Castro, J., & Pardo, J. (2005). Reconocimiento automático del habla utilizando la Transformada de Fourier y Redes Neuronales. Revista Colombiana de Tecnología de Avanzada, volumen 2. [11] Padilla, V. (2003). Reconocimiento de voz por redes neuronales aplicado a un robot LEGO, Trabajo conjunto de los cursos de doctorado de Redes neuronales y Robótica autónoma, UNED. [12] Peralta, F., Cotrina, A. (2002). Algoritmo COPER para la detección de actividad de voz. Revista Semestral Electrónica UNMSM, número 8, pp. 3-12. [13] Smith, S. W. (1999). The Scientist and Engineer’s Guide to Digital Signal Processing, 2nd Edition. California Technical Publishing. San Diego, California. [14] Normas APA 2016 – Edición 6. Disponible en: www. normasapa.net/normas-apa2016/