La gran pregunta es cómo podemos mejorar los modelos de transcripción automática.
Para desarrollar un sistema más eficaz para separar notas musicales en voces y pentagramas, particularmente para música de piano compleja, necesitamos repensar el problema desde una perspectiva diferente. Nuestro objetivo es mejorar la legibilidad de la música transcrita a partir de un MIDI cuantificado, lo cual es importante para crear buenos grabados de partituras y una mejor interpretación de los músicos.
Para una buena legibilidad de la partitura, dos elementos son probablemente los más importantes:
- la separación de pentagramas, que organiza las notas entre el pentagrama superior e inferior;
- y la separación de voces, resaltada en esta imagen con líneas de diferentes colores.
En las partituras de piano, como se dijo antes, las voces no son estrictamente monofónicas sino homofónicas, lo que significa que una sola voz puede contener una o varias notas tocadas al mismo tiempo. De ahora en adelante, los llamaremos acordes. Puedes ver algunos ejemplos de acordes resaltados en violeta en el pentagrama inferior de la imagen de arriba.
De un perspectiva del aprendizaje automáticotenemos dos tareas a resolver:
- El primero es separación del personallo cual es sencillo, solo necesitamos predecir para cada nota una etiqueta binaria, para el pentagrama superior o inferior, específicamente para partituras de piano.
- El separación de voz La tarea puede parecer similar, después de todo, si podemos predecir el número de voz para cada voz, con un clasificador multiclase, ¡y el problema estaría resuelto!
Sin embargo, predecir directamente las etiquetas de voz es problemático. Tendríamos que fijar el número máximo de voces que el sistema puede aceptar, pero esto crea un equilibrio entre la flexibilidad de nuestro sistema y el desequilibrio de clases dentro de los datos.
Por ejemplo, si establecemos el número máximo de voces en 8, para representar 4 en cada pentagrama, como se hace comúnmente en el software de notación musical, podemos esperar tener muy pocas apariciones de las etiquetas 8 y 4 en nuestro conjunto de datos.
Mirando específicamente el extracto de la partitura aquí, las voces 3, 4 y 8 faltan por completo. Los datos muy desequilibrados degradarán el rendimiento de un clasificador multietiqueta y si configuramos un número menor de voces, perderíamos flexibilidad del sistema.
La solución a estos problemas es poder traducir el conocimiento que el sistema aprendió en algunas voces a otras voces. Para esto, abandonamos la idea del clasificador multiclase y enmarcamos la predicción de voz como un predicción de enlaces problema. Queremos unir dos notas si son consecutivas en una misma voz. Esto tiene la ventaja de dividir un problema complejo en un conjunto de problemas muy simples donde para cada par de notas predecimos nuevamente una etiqueta binaria que indica si las dos notas están vinculadas o no. Este enfoque también es válido para los acordes, como puedes ver en la voz baja de esta imagen.
Este proceso creará un gráfico que llamamos gráfico de salida. Para encontrar las voces, ¡simplemente podemos calcular los componentes conectados del gráfico de salida!
Para reiterar, formulamos el problema de la separación de voz y personal como dos tareas de predicción binaria.
- Para separación del personalpredecimos el número de pentagrama para cada nota,
- y a voces separadas Predecimos vínculos entre cada par de notas.
Si bien no es estrictamente necesario, nos pareció útil para el rendimiento de nuestro sistema agregar una tarea extra:
- Predicción de acordessimilar a la voz, vinculamos cada par de notas si pertenecen al mismo acorde.
Recapitulemos cómo se ve nuestro sistema hasta ahora, tenemos tres clasificadores binarios, uno que ingresa notas individuales y dos que ingresan pares de notas. Lo que necesitamos ahora son buenas características de entrada, para que nuestros clasificadores puedan usar información contextual en su predicción. Usando vocabulario de aprendizaje profundo, necesitamos una buena codificador de notas!
Elegimos utilizar Graph Neural Network (GNN) como codificador de notas, ya que a menudo sobresale en el procesamiento de música simbólica. Por lo tanto necesitamos crear un gráfico a partir de la entrada musical.
Para esto, construimos de manera determinista un nuevo gráfico a partir del midi cuantificado, al que llamamos gráfico de entrada.
La creación de estos gráficos de entrada se puede realizar fácilmente con herramientas como GraphMuse.
Ahora, juntando todo, nuestro modelo se ve así: