J'expérimente depuis quelques semaines pour trouver un moyen de faire correspondre / trouver des chansons similaires dans une bibliothèque contenant différents genres de musique.
Mon premier essai a été de détecter des fonctionnalités telles que le tempo ou la quantité de basses dans les morceaux pour former des groupes, mais je n'ai pas été loin avec cette approche (détection des battements basés sur les changements de volume) car environ 20% des morceaux n'ont pas à être comptés toujours, parfois 1/2 ou 1/3 d'entre eux et je ne pouvais pas implémenter cela.
Après quelques semaines d'essais infructueux, j'ai eu une nouvelle idée qui est décrite plus loin dans cet article. Autrement dit, cela fonctionne en prenant des échantillons de fichiers de spectre, créant quelque chose comme un "spectre moyen" de fichiers pour les comparer. L'idée derrière était que, par exemple, Hardstyle a beaucoup plus de basses que la musique rock moyenne, j'ai également vérifié cela en regardant certains spectres dans Audacity.
- Fichier 1: Prenez des spectres FFT de fichier complets (taille de l'échantillon 2048 atm, échelle des amplitudes)
- Additionnez tous les tableaux de spectre, prenez les moyennes de chaque bac
- Faites de même avec d'autres fichiers, stockez tous les résultats
- Faire la liste des différences de valeurs FFT entre le fichier 1 et d'autres fichiers
- Faire la moyenne des différences entre le fichier 1 et le fichier X
- Tri croissant par ces moyennes
- Les chansons avec la «valeur de différence» la plus basse sont considérées comme similaires.
Certains d'entre vous qui ont de bonnes connaissances peuvent-ils me dire si ce serait la bonne / bonne façon de mettre en œuvre mon idée?