AHORA NUESTROS CURSOS TAMBIÉN ONLINE
ONLINE
Contactar
Menu
ALUMNOS
Contactar

Proyecto de Data Science. Redes neuronales para la clasificación de música utilizando atributos y espectrogramas

27 de febrero de 2020 9:00:00 CET

Prácticamente a diario utilizamos plataformas para escuchar nuestras canciones favoritas, y muchos de los sistemas de recomendación de música tienden a agrupar canciones por idioma, país del artista o popularidad. 

Esto hace difícil descubrir nueva música en base a cómo suena. Por ejemplo, si a una persona le gusta música rítmica y con Vocoder, seguramente las recomendaciones entrarán en el bucle del Regaetton si ya ha guardado algunas canciones de este género. 

Por este motivo, recomendar y agrupar canciones en base a sus características, tanto numéricas como de imágenes (espectrogramas), podría permitir conocer nueva música, aunque no sea muy popular o cercana geográficamente. 

Ante esta situación, Ricardo Sousa Freitas, alumno del Data Science Bootcamp de NEOLAND, propuso evaluar la precisión de los algoritmos de Machine Learning, específicamente de Redes Neuronales y K-Means, para clasificar la música por género y por tipo de música (más melódica y armónica o más rítmica y enérgica). Todo ello extrayendo variables numéricas e imágenes (espectrogramas) a partir de muestras de audio. Veamos paso a paso el proyecto.

¿Cómo recoger las señales de audio?

Comencemos desde el principio, las señales de audio se recogen como muestras de amplitudes en función del tiempo. La transformada de Fourier, que es una transformación matemática empleada para convertir señales entre el dominio del tiempo (o espacial) y el dominio de la frecuencia, nos permite en este caso extraer el espectro de frecuencias y obtener las características de la señal.

Desarrollo del proyecto y metodología

Para empezar a entrar en la materia y encauzar el proyecto, se revisaron diferentes artículos y estudios sobre el tratamiento de audio con algoritmos de Machine Learning.

¿Por qué se escogió el Machine Learning para este proyecto? 

Porque se encarga de educar a la tecnología. Se basa en la predicción y clasificación de datos para obtener información útil.

Por otro lado, fue muy importante la búsqueda y recopilación de los conjuntos de datos o datasets de audio y por último, y no por ello menos importante, se realizó el aprendizaje de procesamiento y análisis de audio con Python.

Creación de los datasets para los modelos de Machine Learning

Fue necesario crear dos datasets diferentes, por un lado uno de variables numéricas y por otro uno de imágenes recogidas de espectrogramas de Mel, que son las que ayudaron a ver de una forma visual la percepción auditiva humana.

Análisis de algunas canciones 

Se pueden observar a continuación las diferencias entre 3 géneros musicales del dataset. En la forma de onda se pueden observar solo las variaciones de amplitud en el tiempo, mientras que el espectrograma de Mel correspondiente arroja mucha más información de la canción, revelando las variaciones del espectro de frecuencias en el tiempo y de su intensidad, reflejada esta última en la escala de colores. 



Machine Learning y el dataset de espectrogramas

Para poner entender la continuación del proyecto, daremos una pinceladas sobre el aprendizaje automático. Los modelos pueden clasificarse en dos: 

  • Supervisados, donde el modelo se entrena con los datos de entrada y de salida. El algoritmo aprende con una parte de los datos, luego se evalúa el modelo entrenado con otra parte de los datos que no han sido tocados para el aprendizaje. Si el valor a predecir es continuo, se califica como de regresión, mientras que si es discreto sería de clasificación. 
  • No supervisados, en los cuales se agrupan e interpretan los datos solo con datos de entrada, estableciendo “clusters”. 

Las Redes Neuronales Convolucionales, CNN por sus siglas en inglés, son el algoritmo utilizado en Aprendizaje Automático para dar la capacidad de «ver» al ordenador. Gracias a esto, podemos clasificar imágenes, enseñar a conducir a los coches autónomos y un sinfín de otras aplicaciones.

En nuestro caso, son un buen recurso para la clasificación de imágenes. En este proyecto, la idea fue entrenar la red neuronal convolucional de tal forma que extrajera patrones comunes a cada género de los espectrogramas y permitiese diferenciar unos géneros de otros. 

Primeras pruebas con Redes Convolucionales para los géneros 

Debido a los pobres resultados de las predicciones de redes convolucionales con espectrogramas (49% de precisión sobre el test) y debido al bajo número de muestras con el que permitía trabajar el dataset, se decidió agruparlas utilizando K-Means.

El problema vino porque patrones tan específicos y sutiles de los espectrogramas son difíciles de entrenar para la red neuronal.

El algoritmo K-Means es un método de agrupamiento que divide un conjunto de observaciones en grupos distintos gracias a valores medios. Pertenece al ámbito de los algoritmos no supervisados, ya que las  observaciones no cuentan con una etiqueta que nos diga de qué grupo es cada dato, siendo los datos agrupados según sus propiedades o características.

Redes neuronales tipo Multilayer Perceptron (MLP) con el dataset de atributos

Aquí se trataron los aspectos numéricos de los géneros musicales. Las redes neuronales multicapa son una estructura donde una red de neuronas consta de múltiples capas (capa de entrada, capas ocultas y capa de salida) y cada capa esta compuesta por una gran cantidad de neuronas, lo que permite aumentar el aprendizaje de la red y la complejidad de los problemas a solucionar.

En las redes neuronales multicapa los parámetros de entrada serán las variables de cada canción, las cuales se relacionan con las capas ocultas a través de funciones de activación y pesos. Estos últimos se van actualizando en las diferentes iteraciones con relaciones complejas entre las neuronas estableciendo al final unas probabilidades para cada categoría en la capa de salida.

Conclusiones del proyecto

Tras el análisis y limpieza de los datos, se concluyó que, a pesar de haber trabajado con un dataset pequeño, las redes neuronales consiguieron unas buenas predicciones, haciendo posible unir canciones de diferentes zonas geográficas o artistas clasificándolos por el tipo de música que elijas. 

Con este proyecto hemos podido aprender que el Data Science no tiene límites, temas como la música que a priori pueda parecer más abstracto, puede proporcionar una buena cantidad de datos que nos permite trabajar con ello.

Muchas gracias Ricardo por permitirnos mostrar tu proyecto, te auguramos una gran proyección profesional como Data Scientist.

Si te estás planteando orientar tu carrera profesional hacia el tratamiento de los datos, no lo dudes, nuestros Data Science Bootcamp son la opción que buscas. 

También te puede interesar

Estos post sobre Data Science

Suscríbete a nuestro email

Todavía no hay comentarios

Dinos que estás pensando