Audio Decomposition – código abierto para separar la música por instrumentos
(matthew-bird.com)-
Resumen del proyecto
- Este proyecto tiene como objetivo crear un programa que convierta música en partituras.
- Es un proyecto de código abierto que separa la música en los instrumentos que la componen sin usar bibliotecas externas de separación de instrumentos.
- La motivación del proyecto surgió de una necesidad personal y de la falta de algoritmos simples de código abierto.
-
Proceso de preparación
- Los datos de instrumentos se obtuvieron de la base de datos de University of Iowa Electronic Music Studios.
- A partir de estos datos se calcularon la transformada de Fourier de la forma de onda completa y la envolvente de la forma de onda.
-
Cómo funciona
- La forma de onda del sonido de un instrumento se caracteriza principalmente por la transformada de Fourier y la envolvente.
- Con esto se puede determinar qué instrumento está tocando qué nota.
-
Transformada de Fourier
- Se realiza la transformada de Fourier del archivo de música cada 0.1 segundos para generar un espectrograma.
- Se reconstruye la transformada de Fourier de cada ventana de 0.1 segundos sumando las transformadas de Fourier almacenadas de cada instrumento.
- La magnitud de cada instrumento se obtiene mediante la derivada parcial con respecto a la frecuencia de la función de costo MSE.
-
Envolvente
- La envolvente es la línea superior de la forma de onda, y se necesita un método robusto frente al ruido y a ciertos tipos de formas de onda.
- La envolvente se obtiene dividiendo la forma de onda en fragmentos y tomando el valor máximo de cada fragmento.
- La envolvente se analiza dividiéndola en ataque, sostenido y liberación.
- La forma de onda de un instrumento puede tener decaimiento estático o dinámico, y para distinguirlos se analizan el factor de decaimiento y la tasa de cambio.
-
Varios tipos de formas de onda
- Para procesar el archivo de música, se aplica un filtro pasa banda a la frecuencia de cada nota.
- Para cada instrumento, se encuentran el inicio y el final de cada nota mediante la correlación cruzada del ataque y la liberación, y se calcula el MSE para obtener el costo.
- La magnitud final se obtiene multiplicando la magnitud encontrada en la etapa de transformada de Fourier por el inverso del costo.
-
Resultados y visualización
- La partitura se muestra usando un gráfico de dispersión de matplotlib.
- Originalmente se intentó reconstruir el audio a partir de la magnitud, pero surgieron muchos problemas y se abandonó esa idea.
- Es útil para reconstruir partituras y resulta especialmente útil si cuesta trabajo identificar tonos o acordes.
1 comentarios
Comentarios de Hacker News