He estado experimentando algunas semanas para encontrar una manera de combinar / encontrar canciones similares en una biblioteca que contenga diferentes géneros de música.
Mi primer intento fue detectar características como Tempo o la cantidad de graves que hay en las canciones para formar grupos, pero no llegué lejos con este enfoque (detección de ritmos basada en cambios de volumen) ya que no es necesario contar alrededor del 20% de los ritmos de las canciones. siempre, a veces 1/2 o 1/3 de ellos y no pude implementar eso.
Después de algunas semanas de intentos fallidos, tuve una nueva idea que se describe más adelante en esta publicación. En pocas palabras, funciona tomando muestras de archivos de Spectrum, haciendo algo así como un "espectro promedio" de archivos para compararlos. La idea detrás era que, por ejemplo, Hardstyle tiene mucho más bajo que la música rock promedio, también verifiqué esto mirando algunos espectros en Audacity.
- Archivo 1: Tome espectros FFT de archivo completo (2048 Tamaño de muestra atm, Amplitudes Log. Escalado)
- Suma todas las matrices de espectro, toma promedios de cada contenedor
- Haz lo mismo con otros archivos, almacena todos los resultados
- Hacer una lista de las diferencias de valores FFT entre el archivo 1 y otros archivos
- Hacer promedio de las diferencias entre el archivo 1 y el archivo X
- Ordenar ascendente por estos promedios
- Las canciones con el "valor de diferencia" más bajo se consideran similares.
¿Pueden algunos de ustedes que tienen buen conocimiento decirme si esta sería la forma correcta / buena de implementar mi Idea?