2 puntos por GN⁺ 2024-11-11 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2024-11-11
Comentarios de Hacker News
  • El título puede resultar confuso. Este proyecto no es de separación de audio, sino un algoritmo de detección de tono, y también incluye una función para clasificar instrumentos
    • Corregir los resultados podría tomar más tiempo
  • La transcripción automática de música (audio->MIDI) es un subcampo importante del aprendizaje profundo y de la recuperación de información musical
    • Se menciona el proyecto MT3 de Google como un modelo exitoso
    • En el caso de la transcripción de piano, muestra una precisión casi perfecta incluso con audio de baja calidad
  • Si te interesa la separación de audio, vale la pena revisar RipX
    • Puede exportar las pistas separadas como archivos MIDI
    • Todavía tiene algunos problemas, pero funciona bien
    • La separación de stems ya es un estándar en el software musical y casi todos los DAW la ofrecen
  • La física real de los instrumentos puede no quedar capturada con simples plantillas de transformada de Fourier
    • Una trompeta puede tener un espectro armónico distinto cuando se toca suavemente y cuando se toca con más volumen
    • El contenido armónico puede variar mucho según la intensidad del instrumento
    • Se podría mejorar la precisión añadiendo plantillas de Fourier dependientes de la intensidad para cada instrumento
  • Me hizo recordar cuando jugaba Audiosurf hace 15 años
  • El demo en video de YouTube no parece mostrar separación de fuentes
  • Nadie menciona que "separation" está mal escrito cuatro veces
  • Parece que algunos videos no tienen audio
  • Este proyecto podría ser trabajo del hermano de Joshua Bird
    • Joshua Bird ya ha realizado proyectos impresionantes
  • No encuentro el código fuente, pero el proyecto parece interesante