Ho sperimentato alcune settimane per trovare un modo per abbinare / trovare brani simili in una libreria contenente diversi generi di musica.
Il mio primo tentativo è stato di rilevare funzioni come il tempo o la quantità di bassi presente nelle canzoni per formare gruppi, ma non sono andato molto lontano con questo approccio (rilevamento delle variazioni del volume in base al volume) poiché su circa il 20% delle canzoni non è necessario contare sempre, a volte 1/2 o 1/3 di loro e non potevo implementarlo.
Dopo alcune settimane di tentativi falliti, ho avuto una nuova idea che verrà descritta più avanti in questo post. In poche parole, funziona prendendo campioni di file di spettro, creando qualcosa di simile a uno "spettro medio" di file per confrontarli. L'idea alla base era che, ad esempio, Hardstyle ha molti più bassi rispetto alla musica rock media, l'ho verificato anche guardando alcuni spettri in Audacity.
- File 1: Acquisisci spettro FFT file completo (2048 Dimensione campione atm, Registro ampiezze ridimensionato)
- Somma tutte le matrici di spettro, prendi le medie di ogni bin
- Fai lo stesso alcuni altri file, archivia tutti i risultati
- Crea un elenco di differenze di valori FFT tra il file 1 e altri file
- Calcola la media delle differenze tra il file 1 e il file X
- Ordinamento crescente in base a queste medie
- I brani con il "Valore di differenza" più basso sono considerati simili.
Alcuni di voi che hanno una buona conoscenza possono dirmi se questo sarebbe il modo giusto / buono per attuare la mia idea?