• No se han encontrado resultados

Identificación automática de acordes musicales utilizando Machine Learning

N/A
N/A
Protected

Academic year: 2022

Share "Identificación automática de acordes musicales utilizando Machine Learning"

Copied!
10
0
0

Texto completo

(1)

Identificaci´on autom´atica de acordes musicales utilizando Machine Learning

Victor Santiago Monta˜no D´ıaz

Departamento de Ingenier´ıa El´ectrica y Electr´onica Universidad de los Andes

Bogot´a, Colombia [email protected]

Resumen—Entre las distintas aproximaciones de la inteligencia artificial, una de las m´as populares es Machine learning, esto se debe a la gran cantidad de problemas que pueden ser resuel- tos con esta aproximaci´on. Entre las aplicaciones de Machine learning una de las mas recientes es el uso de las CNNs para el an´alisis de sonido, esto se debe a que el sonido con un buen procesamiento se puede transformar en datos que este tipo de redes es capaz de reconocer. En este proyecto se muestra el uso de estas redes en conjunto con otras t´ecnicas en el an´alisis musical.

Mostrando los resultados obtenidos para una aplicaci´on basada en machine learning capaz de reconocer acordes musicales. Se muestran los procedimientos realizados para el preprocesamiento y limpieza de datos, el entrenamiento y validaci´on de los modelos, y finalmente la implementaci´on de los modelos en una interfaz funcional capaz de recibir y extraer los acordes musicales de cualquier canci´on de entrada.

Index Terms—Machine learning, Cromagramas, CNN, HMM, Armon´ıa, Acorde Musical.

I. INTRODUCCION´

La m´usica es y ha sido uno de los artes m´as trascendentales a trav´es de la historia, es por esto, que el realizar herramientas tecnol´ogicas que contribuyan al enriquecimiento de este arte resulta de gran importancia. La m´usica se compone de tres elementos principales: melod´ıa, armon´ıa y ritmo. La melod´ıa hace referencia a sonidos individuales los cuales se tocan uno a uno. La armon´ıa hace referencia al enlazamiento de acordes, los cuales son sonidos individuales tocados al mismo tiempo. Por otra parte, el ritmo corresponde a la m´etrica y al tempo que siguen tanto la armon´ıa como la melod´ıa. En el siguiente proyecto se busca estudiar la armon´ıa, ya que, gran parte de la musica compuesta sigue una secuencia de acordes.

La motivaci´on detr´as del proyecto consiste en facilitar la identificaci´on de acordes musicales a los m´usicos principiantes. Esto se debe a que la mayor´ıa de m´usicos experimentados son capaces de reconocer lo acordes musicales de una canci´on utilizando simplemente su o´ıdo, sin embargo, adquirir esta habilidad requiere de a˜nos y para muchos m´usicos principiantes puede resultar dif´ıcil realizar esta tarea.

Por lo cual, el principal objetivo de este proyecto de grado es implementar una soluci´on basada en machine learning capaz de reconocer los acordes musicales de cualquier canci´on.

El proyecto de grado se divide en las siguientes secciones principales: Marco te´orico, Preprocesamiento y limpieza de datos, Entrenamiento y ajuste de los modelos, y Deployment.

En la secci´on del Marco te´orico a parte de introducir algunos conceptos de machine learning que ya pueden ser familiares para el lector, se introducen algunos conceptos musicales b´asicos que se mencionaran a lo largo del texto. En la secci´on de Preprocesamiento y limpieza de datos se muestra como se obtuvieron los datos brutos, adem´as, de mostrar las dos maneras en como se transformaron en espectrogramas con el fin de ser clasificados por un modelo basado en CNNs y finalmente como se realizo la limpieza de los datos obteniendo como resultado datos limpios para el entrenamiento de los modelos. En la secci´on de entrenamiento se muestra como se entreno y se ajusto la CNN ResNet50 con el fin de poder clasificar los espectrogramas obtenidos en la secci´on de preprocesamiento, mostrando los resultados obtenidos para cada modelo. Finalmente en la secci´on de Deployment se muestra la implementaci´on de una interfaz interactiva capaz de recibir cualquier canci´on de entrada y obtener la secuencia de acordes musicales en la canci´on.

Una visi´on general del proyecto y los resultados obtenidos se describe a continuaci´on:

Figura 1. Sistema

Como se observa al sistema entra una canci´on cualquiera (a trav´es de un link de youtube), la aplicaci´on realiza todo el procesamiento, extracci´on y clasificaci´on de acordes. Pos- teriormente a trav´es de la interfaz gr´afica se muestran los acordes que se deben tocar para poder seguir la armon´ıa de la canci´on. Tambi´en, de manera similar a un reproductor de audio se permite al usuario pausar, repetir y desplazarse a lo largo de la canci´on.

(2)

II. MARCO TEORICO´ II-A. Redes neuronales convoluciones

Las redes neuronales convolucionales o CNNs por sus siglas en ingles son un tipo especial de redes neuronales usadas para el procesamiento de datos que tienen una estructura en forma de grilla, ej: una imagen como una grilla 2D de pixeles[1].

Reciben su nombre debido a que usan una operaci´on especial llamada convoluci´on. Son utilizadas principalmente para el an´alisis y clasificaci´on de im´agenes.

Figura 2. Estructura de una CNN tomada de [2]

II-B. Modelo oculto de Markov

Un Modelo oculto de Markov o HMM por sus siglas en ingles es una clase de modelo estad´ıstico en el cual el sistema que se esta modelando es asumido como un proce- so de markov con par´ametros desconocidos. Para diferentes secuencias observadas producidas por el proceso de markov, ambas las probabilidades de emisi´on y las probabilidades de transici´on entre los estados pueden ser calculadas utilizando m´etodos de programaci´on din´amica. Los par´ametros estimados del modelo pueden ser utilizados para el an´alisis de nuevas secuencias observadas dentro del mismo contexto.[3] Este tipo de modelos son utilizados especialmente en el an´alisis de secuencias temporales, como el audio o v´ıdeo.

II-C. Nota musical

La nota musical se puede considerar como la unidad fun- damental de la musica, una nota corresponde a un sonido con una frecuencia constante, o en t´erminos musicales una nota musical hace referencia a la altura del sonido. En la musica existen 12 notas musicales las cuales son: C, C#, D, D#, E, F, F#, G, G#, A, A#, B, tambi´en representadas como: Do, Do#, Re, Re#, Mi, Fa, Fa#, Sol, Sol#, La, La#, Si.

II-D. Acorde musical

Un acorde corresponde a un conjunto de 2 o mas notas diferentes que tocadas a la vez conforman una unidad[4].

Dependiendo de como se combinen estas notas se pueden formar acordes diferentes.

Figura 4. Acorde de Do Mayor (Cmaj) en piano

II-E. Acordes naturales

Los acordes naturales o acordes b´asicos reciben su nombre por tener el nombre de alguna de las 12 notas fundamentales y ser mayores(maj) o menores(min). En su totalidad son 24 acordes naturales y est´an presentes en la mayor´ıa de composiciones existentes. Los acordes naturales son:

Nota fundamental maj min

C Cmaj Cmin

C# C#maj C#min

D Dmaj Dmin

D# D#maj D#min

E Emaj Emin

F Fmaj Fmin

F# F#maj F#min

G Gmaj Gmin

G# G#maj G#min

A Amaj Amin

A# A#maj A#min

B Bmaj Bmin

Cuadro I ACORDES NATURALES

II-F. Cromagrama

Un cromagrama consiste en una matriz de 12xn posiciones, donde n depende de la duraci´on del audio. Es utilizado principalmente para cuantificar la presencia de cada una de las 12 notas musicales en cada instante de tiempo de un audio.

Una de las principales formas para obtener un cromagrama es utilizando la transformada de fourier en tiempo redu- cido(STFT). Adicionalmente, estos cromagramas se pueden posprocesar con el fin de obtener cromagramas mas limpios un ejemplo es CENS que consiste en un cromagrama normalizado y posteriormente cuantizado con una funcion logaritmica[5].

(3)

III. PREPROCESAMIENTO Y LIMPIEZA DE DATOS

III-A. Recopilaci´on de datos

Dado que la idea del proyecto era reconocer los acordes musicales, entre las bases de datos existentes para musica se redujo la b´usqueda a las que estuvieran relacionadas con acordes. Entre todas las bases de datos encontradas las m´as adecuadas fueron en las cuales sus archivos de anotaciones ten´ıan la siguiente estructura:

Figura 6. Estructura de una anotaci´on

Como se observa en la figura, para cada instante de tiempo de una canci´on se tiene un tiempo inicial , un tiempo final, y el acorde que se esta tocando en esta ventana de tiempo. Las bases de datos encontradas en las cuales sus archivos de anotaciones cumpl´ıan con esta estructura fueron:

Isophonics[7], McGill Billboard[8], USPOP2002[9], Robie Williams Dataset, Zweick.

Uno de los principales retos al trabajar con estos datasets fue que los audios no ven´ıan incluidos, debido a que no fueron distribuidos por motivos de copyright. Por lo cual, los audios tuvieron que ser recopilados a mano, los audios fueron descargados con Youtubedl una libreria de python que permite descargar audios a partir del link de youtube. Debido a que, la duraci´on de cada canci´on deb´ıa ser la misma de su respectivo archivo de anotaciones, y que las anotaciones debian ser precisas con la canci´on, no se lograron conseguir todos los audios para todos los archivos de anotaciones. Sin embargo, se logro obtener una cantidad adecuada para cada dataset, la cual se lista a continuaci´on:

Dataset Pares de audio y anotaci´on

Isophonics 163

McGill Billboard 270

USPOP2002 68

Robie Williams 43

Zweick 17

Total 561

Cuadro II

PARES DE AUDIO Y ANOTACION POR CADA DATASET´

los datos se separaron en 2 conjuntos, uno de train y otro de test con el fin de que las canciones de test fueran diferentes a las de train, para cada conjunto se tuvo la siguiente cantidad de pares de archivos:

Conjunto pares de audio y anotaci´on

train 438

test 123

Total 561

Cuadro III PARES POR CONJUNTO

Los datos con las anotaciones y los audios se encuentran disponibles en el siguientelink.

III-B. Obtenci´on de los audios para cada clase

Con los datos de inicio totalmente recolectados, se procedi´o con la primera parte del preprocesamiento que consist´ıa en la segmentaci´on del audio para cada clase. En este caso las anotaciones de interes eran aquellas que tenian como label los acordes naturales (que eran los que se deseaba clasificar) y el label ”N”que representaba que ning´un acorde se estaba tocando. Para estos labels se tomaba el tiempo de inicio y final y con ayuda de estos se obten´ıa el audio en este intervalo de tiempo y este nuevo fragmento de la canci´on se guardaba en una carpeta con el nombre de la clase, esto se ilustra en la siguiente imagen:

Figura 7. Segmentaci´on del audio

Este proceso se realizo para cada uno de los archivos en los conjuntos de train y test, obteniendo la siguiente cantidad de audios por clase para cada conjunto:

(4)

Clase Cantidad de audios

Cmaj 3027

Cmin 314

C#maj 1069

C#min 316

Dmaj 3012

Dmin 947

D#maj 1150

D#min 223

Emaj 2242

Emin 955

Fmaj 2023

Fmin 288

F#maj 991

F#min 476

Gmaj 3748

Gmin 550

G#maj 1267

G#min 183

Amaj 3282

Amin 1115

A#maj 1885

A#min 126

Bmaj 1346

Bmin 587

N 1378

Total 32500

Cuadro IV

DATOS POR CLASE PARA EL CONJUNTO DE TRAIN

Los cantidad de datos para el conjunto de test se observa a continuaci´on:

Clase Cantidad de audios

Cmaj 920

Cmin 209

C#maj 303

C#min 169

Dmaj 995

Dmin 177

D#maj 243

D#min 101

Emaj 908

Emin 172

Fmaj 530

Fmin 111

F#maj 189

F#min 137

Gmaj 1102

Gmin 106

G#maj 296

G#min 120

Amaj 1380

Amin 253

A#maj 592

A#min 30

Bmaj 449

Bmin 237

N 618

Total 10347

Cuadro V

DATOS POR CLASE PARA EL CONJUNTO DE TEST

III-C. Limpieza de datos

Con los audios para cada clase se procedi´o a realizar la limpieza de datos. La limpieza se realizo de manera manual, ya que, no fue posible automatizar este proceso. La limpieza consisti´o en eliminar outliers dentro de las clases. Dado que

analizar visualmente, se visualizo los datos de cada clase en cromagramas y se fue descartando aquellos en los cuales su patr´on no coincid´ıa con el de la clase. Un ejemplo de outliers en una clase se observa a continuaci´on:

Figura 8. Patrones correctos para el acorde Gmaj

Figura 9. Outliers en la clase de Gmaj

Despu´es de la limpieza de datos, la cantidad de audios que quedo para cada clase en los conjuntos de train y test, se observa a continuaci´on:

Clase Cantidad de audios

Cmaj 465

Cmin 58

C#maj 201

C#min 77

Dmaj 451

Dmin 148

D#maj 195

D#min 62

Emaj 317

Emin 177

Fmaj 229

Fmin 45

F#maj 133

F#min 111

Gmaj 292

Gmin 58

G#maj 123

G#min 27

Amaj 714

Amin 315

A#maj 526

A#min 43

Bmaj 212

Bmin 179

N 922

Total 6080

Cuadro VI

DATOS POR CLASE PARA EL CONJUNTO DE TRAIN DESPUES DE LA´ LIMPIEZA

(5)

Clase Cantidad de audios

Cmaj 53

Cmin 12

C#maj 35

C#min 24

Dmaj 88

Dmin 19

D#maj 26

D#min 33

Emaj 82

Emin 25

Fmaj 48

Fmin 14

F#maj 11

F#min 15

Gmaj 74

Gmin 9

G#maj 18

G#min 4

Amaj 152

Amin 69

A#maj 76

A#min 7

Bmaj 12

Bmin 29

N 250

Total 1185

Cuadro VII

DATOS POR CLASE PARA EL CONJUNTO DE TEST DESPUES DE LA LIMPIEZA´

III-D. Aumento de datos

Como se observa en los cuadros VI y VII, los datos presentaban un desbalance notorio, por lo cual, se tuvo que buscar una estrategia para lograr balancearlos. En este caso se aprovecho que un acorde puede transformarse en otro si se cambia su tonalidad, lo cual de manera t´ecnica corresponde a un corrimiento en frecuencia del audio , ej: Un acorde de Dmin se puede transformar en un acorde de Emin si se le aumentan dos semitonos, una representaci´on gr´afica de esto se observa en la figura 10 . Teniendo esto en mente cada acorde se transporto en un rango de [−5, 7] semitonos con el fin de balancear los datos, para el conjunto de train se defini´o un tama˜no m´aximo de 1250 audios por clase y para el conjunto de test se defini´o un m´aximo de 250 audios por clase. Como resultado se obtuvo un conjunto de train con 31250 audios y un conjunto de test con 6250 audios distribuidos de manera uniforme en las 25 clases.

Figura 10. Pitch Shift sobre el acorde de Dmin

III-E. Transformaci´on a cromagramas

Los datos fueron procesados a cromagramas con el fin de obtener una representaci´on ´util y que sean clasificados por una red neuronal convolucional. Los cromagramas fueron obtenidos con ayuda de 2 librer´ıas distintas: librosa y madmom. La manera en como se realizo el proceso para cada una se describe a continuaci´on.

Librosa:

En este caso cada uno de los audios fue transformado a un Chroma CENS , una ilustraci´on gr´afica de como se ve este cromagrama se observa a continuaci´on:

Figura 11. Chroma CENS para el acorde Fmaj

Para cada clase se realizo este procesamiento, obteniendo al final un dataset con un conjunto de train con 1250 im´agenes por clase, y un conjunto de test con 250 im´agenes por clase.

Madmom:

En este caso se utilizo dcp el cual usa deep learning para extraer cromagramas muchos mas limpios [10], una representaci´on gr´afica de este procesamiento se observa a continuaci´on:

Figura 12. Chroma dcp para el acorde Fmaj

Para cada clase se realizo este procesamiento, obteniendo al final un dataset con un conjunto de train con 1250 im´agenes por clase, y un conjunto de test con 250 im´agenes por clase.

(6)

IV. ENTRENAMIENTO Y AJUSTE DE MODELOS

Se utilizo transfer lerning sobre ResNet50 esta red recibe im´agenes de tama˜no 224x224, se congelaron todas las capas de la red excepto las de Batch Normalization, se elimino la ultima capa del modelo original y se a˜nadieron capas de pooling y dropout, la ultima capa tenia 25 neuronas de salida correspondientes a las 25 clases. De este proceso se obtuvieron dos modelos debido a las 2 librer´ıas usadas para el preprocesamiento en la secci´on anterior. Los resultados para los dos modelos se observan a continuaci´on:

Librosa:

Para este caso se entreno el modelo durante 20 epocas, se tomo un subset del conjunto de train para validaci´on del 20 %, es decir se tuvieron 1000 im´agenes por clase para el conjunto de train, 250 im´agenes por clase para el conjunto de validaci´on y 250 im´agenes por clase para el conjunto de test. Las curvas de accuracy y loss durante cada ´epoca en el entrenamiento se observan a continuaci´on:

Figura 13. Accuracy en train y validaci´on por ´epoca

Figura 14. Loss en train y validaci´on por ´epoca

El reporte de clasificaci´on al evaluar el modelo sobre el

Figura 15. Reporte de clasificaci´on

Para este modelo se obtuvo un accuracy de 98.9 % y un loss de 0.099 en el conjunto de test. La matriz de confusi´on al evaluar el modelo en el conjunto de test se encuentra en el anexo 1.

Madmom:

En este caso el modelo tambi´en se entreno durante 20 epocas, y se tomo un subset de un 20 % del conjunto de train para validaci´on, por lo cual, se tuvo 1000 im´agenes por clase para el conjunto de train, 250 im´agenes por clase para el conjunto de validaci´on y 250 im´agenes por clase para el conjunto de test. Los resultados obtenidos al entrenar este modelo se observan a continuaci´on:

(7)

Figura 17. Loss en train y validaci´on por ´epoca

El reporte de clasificaci´on al evaluar el modelo en el conjunto de test se observa a continuaci´on:

Figura 18. Reporte de clasificaci´on

Para este modelo se obtuvo un accuracy de 98.2 % y un loss de 0.328 en el conjunto de test. La matriz de confusi´on al evaluar el modelo en el conjunto de test se encuentra en el anexo 2.

V. DEPLOYMENT

V-A. Modelo oculto de Markov

Como se observo en la secci´on anterior los modelos en- trenados son capaces de identificar un acorde a partir de un cromograma de entrada. En este caso el modelo solo era capaz de realizar la identificaci´on siempre y cuando el patr´on sea de un solo acorde y no una secuencia. Sin embargo, en una canci´on se tiene una secuencia de acordes, en un cromagrama esto se ver´ıa como en la figura 19.

Figura 19. Primeros 15 segundos de una canci´on de muestra

En la imagen de la figura 19 ocurren 3 cambios de acor- des(lineas rojas), por lo cual, fue necesario alguna manera en la que se pudiera detectar los tiempos en los cuales ocurr´ıan estos cambios, aqu´ı fue donde se utilizo el modelo oculto de Markov. Este modelo ya se encontraba implementado para cromagramas en la libreria madmom de Python, en este caso para la canci´on de ejemplo se obtiene una matriz de la siguiente forma al utilizar el modelo sobre el audio:

frames = [[0, 1], [1, 5], [5, 10], [10, 15]]

V-B. Descripci´on del sistema

El sistema funciona de dos maneras utilizando la terminal y con una interfaz gr´afica. Para el caso de la terminal se pueden utilizar ambos modelos, sin embargo, para la interfaz gr´afica se utiliza el modelo que usa dcp, debido a que es el que requiere un menor tiempo de computo. El proceso que siguen las dos aproximaciones se observa en la siguiente imagen:

Figura 20. Sistema

V-C. Interfaz gr´afica

El funcionamiento de la interfaz gr´afica es sencillo, esta recibe un link de youtube, el audio se descarga localmente en una carpeta temporal y se extraen los acordes con el sistema de la figura 20, finalmente estos acordes son guardados en un archivo .lab de anotaciones. Posteriormente con el archivo de

(8)

anotaciones la interfaz muestra el acorde que se debe tocar en la ventana de tiempo y permite al usuario moverse a trav´es de la canci´on(como un reproductor de audio). Una imagen de la interfaz se observa a continuaci´on:

Figura 21. Interfaz gr´afica

Una demo del funcionamiento de la interfaz se encuentra en el siguiente link: https://youtu.be/3b4xgkvJZRE Los archivos y la gu´ıa de instalaci´on para Linux y Win- dows se encuentran disponibles en el siguiente reposito- rio:https://github.com/santiagomd11/chord-recognizer El v´ıdeo de instalaci´on para Linux y Windows se encuen- tra en el siguiente link: https://youtu.be/zQ3w5fg5qbI

VI. CONCLUSIONES Y TRABAJO FUTURO

Unos de los principales retos al realizar este trabajo fue la recolecci´on de los datos, ya que, como se menciono los datasets no contaban con los audios, los cuales eran de vital importancia para el desarrollo del proyecto. Sin embargo, a pesar de las dificultades y el largo tiempo que requiri´o obtener los audios para cada anotaci´on, se logro obtener un dataset limpio y con una cantidad suficiente de audios y anotaciones para trabajar. La carpeta con el dataset limpio se incluyo como parte del trabajo y esta disponible para que sea utilizado por personas que quieran continuar o mejorar el proyecto.

Como se observo los modelos obtenidos tiene una buena precisi´on a la hora de clasificar los 24 acordes naturales y la clase ”N”, ya que, como se pudo ver para ambos modelos se obtuvo un accuracy por encima del 98 % en los 6250 datos del conjunto de test. Para esto fue de gran importancia el ajuste correcto de la red ResNet50, ya que, en la practica el no entrenar las capas de Batch Normalization en el proceso de transfer learning causaba que el modelo no aprendiera, por lo cual, es importante tener en cuenta este punto si se quiere realizar transfer learning sobre esta red.

En el proyecto se le dio una gran importancia al proceso de deployment, logrando obtener al final de este una interfaz interactiva capaz de recibir cualquier canci´on de youtube y realizar el proceso de clasificaci´on de acordes musicales a lo largo del audio. Por otra parte, se dejo en conjunto con el repositorio que contiene todos los c´odigos de la interfaz, una gu´ıa de instalaci´on con el fin de que usuarios de Linux y Windows puedan usar la aplicaci´on desde su maquina.

Adem´as, el c´odigo se hizo utilizando OOP con el fin de que se pueda leer y escalar f´acilmente.

Finalmente, como trabajo futuro se podr´ıa pensar en ajustar los modelos e implementar la interfaz para m´as acordes, ya que, como se menciono; el sistema solo identifica acordes naturales y la clase ”N”. Por otra parte, en la practica se observo que el uso de un HMM y una CNN para la clasi- ficaci´on de acordes puede ser bastante preciso, sin embargo, no el m´as eficiente, por lo cual, se puede pensar en modelos como una red neuronal recurrente(RNN) o una red neuronal convolucional recurrente(CRNN), los cuales pueden ser usados en este contexto y que si se ajustan de manera adecuada pueden llegar a ser m´as eficientes.

AGRADECIMIENTOS

A mis padres y a mis hermanas por su apoyo incondicional durante mi formaci´on como ingeniero y por motivarme en todo momento, sin ellos no habr´ıa llegado hasta este instante.

Tambi´en quiero agradecer a mis asesores Fernando Enrique Lozano Martinez y Juan Jos´e Garcia C´ardenas, por haberme dado la oportunidad de trabajar con ellos en el desarrollo de este proyecto de grado, y por compartir sus conocimientos en los cursos de la carrera.

REFERENCIAS

[1] Goodfellow, I., Bengio, Y., and Courville, A. (2016). Deep Learning. MIT Press.

[2] A Comprehensive Guide to Convolutional Neural Networks the ELI5 way.

url

[3] Bosch A. (2011) Hidden Markov Models. In: Sammut C., Webb G.I. (eds) Encyclopedia of Machine Learning. Springer, Boston, MA.url

[4] Belkin A. (2003) General Principles of Harmony.url

[5] https://librosa.org/doc/main/generated/librosa.feature.chroma cens.html [6] Muller M. (2015) Feature Design (Chroma, CENS).url

[7] http://isophonics.net/datasets

[8] John Ashley Burgoyne, Jonathan Wild, and Ichiro Fujinaga, ‘An Expert Ground Truth Set for Audio Chord Recognition and Music Analysis’, in Proceedings of the 12th International Society for Music Information Retrieval Conference, ed. Anssi Klapuri and Colby Leider (Miami, FL, 2011), pp. 633–38url

[9] http://labrosa.ee.columbia.edu/projects/musicsim/uspop2002.html [10] https://madmom.readthedocs.io/en/v0.16/modules/features/chords.html

(9)

Matriz de confusión librosa

Anexo 1

(10)

Matriz de confusión madmom

Anexo 2

Referencias

Documento similar