Le résultat final sera une carte hexadécimale de toutes vos chansons, avec des pistes au son similaire placées côte à côte. La couleur des différentes régions correspond à différents genres musicaux (par exemple classique, hip hop, hard rock). A titre d'exemple, voici une carte de trois albums de ma collection musicale : Les Caprices pour violon de Paganini, The Eminem Show d'Eminem et X&Y de Coldplay. Pour rendre les choses plus intéressantes (et dans certains cas plus simples), j'ai imposé quelques restrictions.
Tout d'abord, la solution ne doit pas reposer sur des balises ID3 préexistantes (par exemple, artiste, genre) dans les fichiers MP3 ; seules les propriétés statistiques du son doivent être utilisées pour calculer la similarité des chansons. De toute façon, beaucoup de mes MP3 sont mal étiquetés, et je voulais que la solution soit applicable à n'importe quelle collection de musique, quelle que soit la qualité de ses métadonnées (en créant votre musique avec Audacity!). Deuxièmement, aucune autre information externe ne doit être utilisée pour créer la visualisation : les seules entrées requises sont l'ensemble de fichiers MP3 de l'utilisateur. Il est possible d'améliorer la qualité de la solution en puisant dans une grande base de données de chansons qui ont déjà été étiquetées avec un genre spécifique, mais par souci de simplicité, je voulais garder cette solution complètement séparée. Enfin, bien que la musique numérique existe sous de nombreux formats (MP3, WMA, M4A, OGG, etc.), pour faire simple, je me suis concentré sur les fichiers MP3. L'algorithme développé ici devrait fonctionner pour tout autre format, tant qu'il peut être extrait dans un fichier WAV. La création de la carte musicale est un exercice intéressant. Il utilise des techniques de traitement audio, d'apprentissage automatique et de visualisation.
Les étapes de base sont :
1. Convertissez les fichiers MP3 en fichiers WAV à faible débit.
deux. Extrayez des caractéristiques statistiques à partir de données WAV brutes.
3. Trouvez un sous-ensemble optimal de ces fonctionnalités afin que les chansons qui sont "proches" les unes des autres dans cet espace de fonctionnalités sonnent également de manière similaire à l'oreille humaine.
4. Utilisez des techniques de réduction de dimension pour réduire les vecteurs de caractéristiques à deux dimensions à tracer sur un plan XY.
5. Générez une grille hexagonale de points, puis utilisez les techniques du plus proche voisin pour faire correspondre chaque chanson dans le plan XY à un point de la grille hexagonale.
6. De retour dans l'espace de fonctions haute dimension d'origine, regroupez les chansons en un nombre de groupes défini par l'utilisateur (k = 10 fonctionne bien à des fins d'affichage). Pour chaque groupe, trouvez la chanson la plus proche du centre du groupe.