Tratamiento de sonidos mediante métodos de IA y los principios del algoritmo de Shazam

Oct 21, 2011   //   by Alexeiw   //   Interacción  //  1 Comment

En Ibermática hemos desarrollando un producto para la detección e identificación de patrones en sonidos basándonos en métodos de IA y algoritmos que ya se utilizan pero modificados para adaptarlos a nuestras necesidades ( Es el caso de la aplicación Shazam, que reconoce canciones en base a una pequeña muestra que envía el usuario ).

Unos ejemplos de los posibles usos de este tipo de aplicaciones pueden ser:

Reducción o eliminación de ruido:

Se pueden identificar,  y por lo tanto eliminar, los patrones de ruido en una señal de audio, ya sea para poder hacer la   señal más audible o para programáticamente poder centrarse en procesar la información deseada.

Detección de sonidos:

-Identificar un sonido concreto para actuar en consecuencia (comandos por voz, etc…).

-En base a una serie de datos almacenados relacionar un sonido con una entidad ( canciones, cantos de animales, una persona,  etc…).

-En telemedicina se pueden detectar patrones de sonidos anómalos en los pacientes, esta información puede ser de gran utilidad combinada con otros datos para la obtención de un diagnostico adecuado para el paciente. (Por ejemplo, análisis de llanto en bebés, petición de ayuda, identificación de emociones…)

Para poder realizar este tipo de aplicaciones aplicamos una serie de técnicas y métodos sobre una representación del sonido a procesar, el espectrograma.

En la imagen de arriba se puede observar el espectrograma generado por la señal que aparece en la imagen de abajo. El espectrograma se representa mediante la frecuencia (eje y), el tiempo (eje x) y la intensidad de la señal (representado por el color, más claro más intensidad).

Las técnicas de análisis mediante algoritmos habituales de IA  son la combinación de los diferentes resultados de procesar el espectrograma mediante SVM (support vector machines), Template Matching y Redes neuronales (perceptrón multicapa entrenado con backpropagation)

Para la clasificación de SVM, primero generamos los vectores correspondientes a los sonidos de los modelos, estos vectores son la representación normalizada de los datos de su espectro centrado en la zona más relevante. Con estos vectores entrenamos el sistema mediante el algoritmo SVM para que después a la hora de clasificar, el sistema decida cuál es el sonido que más probabilidades tiene de ser el introducido por el usuario.

El Template Matching es una técnica que no produce resultados muy determinantes pero puede ayudar en la clasificación si se combina con otras técnicas. Básicamente consiste en comparar “cuanto” se parece el espectro de entrada con una serie de plantillas de otros espectros anteriormente obtenidas de los modelos que deseamos clasificar. Este “cuanto” se obtiene correlacionando los puntos de intensidad entre los espectros.

Para la clasificación mediante redes neuronales hemos decidido utilizar un MLP (perceptrón multicapa) el cual se entrena mediante la regla Backpropagation. Los datos utilizados para el entrenamiento son los mismos que utilizamos para la técnica SVM, es decir, la representación vectorizada del espectrograma centrado en la zona más relevante. La principal ventaja de utilizar una red neuronal para nuestro clasificador consiste en la rapidez de respuesta, además de que después de realizar varias pruebas hemos deducido que este tipo de red concretamente nos aporta mejores resultados que los SVM.

Por último hemos utilizado los principios del algoritmo que utiliza Shazam para la clasificación de canciones. Este algoritmo consiste en obtener una tabla “hash” en la cual se relacionan los picos de frecuencia con intervalos de tiempo en los que se producen, estos datos se obtienen del espectrograma. Con esta información se puede correlacionar una nueva entrada mediante Template Matching y asi obtener un resultado.

A diferencia de cómo lo hace Shazam, en nuestro sistema hemos obtenido mejores resultados utilizando los valores de picos de frecuencia de intervalos progresivamente más amplios.

Otra diferencia característica de nuestro sistema en comparación con el de Shazam es que este último recibe un intervalo de la canción, que si no coincide con el hash que contienen en sus bases de datos la canción no es detectada. Sin embargo nuestro sistema, al utilizar técnicas predictivas,  puede generalizar el patrón recibido para asi correlacionarlo con alguna de nuestras entradas de la base de datos, es decir, nos devolverá el sonido “que más se parezca”.

1 Comment

  • Just a smiling visitor here to share the love (:, btw great style .