Tenho experimentado algumas semanas para encontrar uma maneira de combinar / encontrar músicas semelhantes em uma biblioteca contendo diferentes gêneros de música.
Minha primeira tentativa foi detectar recursos como tempo ou quanto baixo há nas músicas para formar grupos, mas eu não fui muito longe com essa abordagem (detecção de batidas com base em alterações de volume), já que cerca de 20% das músicas batidas não precisam ser contadas sempre, às vezes 1/2 ou 1/3 deles e eu não conseguia implementar isso.
Após algumas semanas de tentativas fracassadas, tive uma nova idéia, descrita mais adiante neste Post. Simplificando, funciona usando amostras de arquivos do Spectrum, criando algo como um "espectro médio" de arquivos para compará-los. A idéia por trás disso era que, por exemplo, o Hardstyle tem muito mais baixo do que o rock médio, eu também verifiquei isso observando alguns Spectrums no Audacity.
- Arquivo 1: Obtenha espectros completos de FFT de arquivo (tamanho da amostra de 2048 atm, log de amplitudes dimensionado)
- Soma todas as matrizes de espectro, faça a média de cada bin
- Faça o mesmo em alguns outros arquivos, armazene todos os resultados
- Criar lista de diferenças de valores FFT entre o arquivo 1 e outros arquivos
- Faça a média das diferenças entre o arquivo 1 e o arquivo X
- Classificar em ordem crescente por essas médias
- Músicas com o "menor valor de diferença" são consideradas semelhantes.
Alguns de vocês, com bom conhecimento, podem me dizer se essa seria a maneira correta / boa de implementar minha idéia?