martes, 20 de noviembre de 2012

Reporte de contribución Redes Neuronales

Proyecto: Speaker Recognition System

El proyecto consiste en hacer una red neuronal que sea capaz de reconocer al locutor, y así poder validar que entre al sistema o no. Es decir con solo escuchar la voz de una persona es posible decir si es la persona indicada o no.

Mi contribución se divide en 2 partes, primero continuar con el tratamiento del audio y mejorar los cálculos ya hechos, para poder alimentar la neurona, que consistió en codificar en python formulas matemáticas y trabajo de investigación, segundo la realización de la interfaz para que el usuario pueda acceder al sistema.

Repositorio
Otro link


Entradas de datos:

Se terminó con el tratamiento de la señal que se había dado ya en la primera parte, estos fueron los pasos definitivos y correctos que seguí y que utilizamos para la entrada de la red neuronal.

La Investigación y Codificación del tratamiento de las señales, para poder dar las entradas a la red neuronal.

Extracción de Características

Es el proceso en el que se extrae la información de la señal para poder representar al locutor mediante un modelo propio.
Para representar la señal de la voz se usará el coeficiente MFCC (Mel Frequency Cepstrum Coefficients).
Los MFCC se pueden calcular trabajando en el dominio de la frecuencia.



Tramado y Enventanada: Estos dos pasos tienen como meta disminuir la distorsión, la función de wavfile.read nos da una lista de la señal ya aplicado el tramado y enventanado.

FFT: Se hace la transformada rápida de Fourier, que convierte cada trama de N muestras del dominio temporal al dominio de la frecuencia. El resultado de este paso
se conoce como el espectro de la señal.

Transformación a escala Mel: La percepción humana de las frecuencias no sigue una escala lineal. Por esto se debe hacer un escalado de las frecuencias en Hz a una escala subjetiva conocida como la escala Mel. Se da mayor importancia a la información contenida en las bajas frecuencias en consonancia con el comportamiento del oído humano.

Cepstrum: Se convierte el espectro Log Mel al tiempo. Para esto primero se calcula el logaritmo de SK. Luego como los coeficientes Mel (y su logaritmo) son números reales, se los puede convertir al dominio temporal usando la Transformada Discreta del Coseno (DCT). Este resultado es el que llamamos MFCC.

 Código:




La otra parte de mi contribución es la Ventana que verá el usuario cuando entrene la red, se realizó una interfaz sencilla que muestra en la parte principal un texto para que el usuario pueda leerlo, en la parte siguiente un input text para que escriba su nombre de usuario, después botones para iniciar la grabación y otro botón para salir del sistema. Una parte de esto la hizo también mi compañero Roberto Martínez.

También integré el código de la interfaz con el de tratamiento de los datos, para que al grabar el usuario su voz automáticamente se vaya al tratamiento y se pueda meter el dato a la red neuronal y así saber si si es la persona o no lo es. Se importaron las funciones del archivo audio.py que es el que nos ayuda a sacar los datos importantes del audio.

Código:




Esta vez mis contribuciones corresponden a los commits: [35, 36, 41, 46, 47]
Y los commits anteriores fueron: [12, 13, 26, 27, 28, 29, 30, 31, 32]

Repositorio:



Gráficas del tratamiento de datos:





1 comentario: