JPO : Webinar d'information sur nos formations → RDV mardi à 17h30.

Music Tags Inspyrer, l’AI mélomane

Classification automatique du genre musical par un algorithme de Machine Learning

L’Intelligence Artificielle commence à être bien connue pour ses capacités étonnantes et remarquables dans le domaine de la “vision par ordinateur” (classification d’images, reconnaissance faciale, …) ou le domaine du son avec la reconnaissance vocale. Qu’en est-il dans un domaine en apparence plus abstrait et subjectif tel que la reconnaissance d’un genre musical ou de l’analyse d’un morceau de musique pour en détecter les influences principales ? C’est ce qui a fait l’objet de ce projet “Music Tags Inspyrer”.

Vidéo de présentation du projet

Applications et utilité de la classification automatique du genre musical

L’enjeu de la classification automatique du genre musical est important aussi bien pour les innombrables sites hébergeant et diffusant de la musique que pour les utilisateurs disposant de stocks de musique parfois considérables qu’il serait fastidieux de classer manuellement. De plus, la classification manuelle peut parfois se révéler moins fiable qu’une classification automatisée. Un étiquetage correct des morceaux est crucial pour que ceux-ci atteignent le public auquel ils se destinent, et il y a donc un enjeu commercial évident.

Prenons un simple exemple d’étiquetage automatique déjà utilisé à l’heure actuelle dans l’industrie musicale. On peut voir que lorsque l’on télécharge un morceau sur SoundCloud sans renseigner de “tags”, le site propose lui-même ses propres suggestions de catégories une fois le morceau téléchargé et analysé (capture d’écran ci-dessous).

Notre équipe

J’ai suivi la formation bootcamp Data Scientist en trois mois de DataScientest. Au cours de cet apprentissage très intensif, Paul Brasseur, Kevin Simo et moi-même avons réalisé ce projet “fil rouge” consacré à la classification automatique du genre musical sous la supervision d’Alban Thuet.

Au départ, il y a ce sujet proposé par DataScientest, “Classification automatique du genre musical” et je suis tout de suite attiré par l’idée qui doit consister à la fin à réussir à soumettre des morceaux de musique à l’ordinateur et de le voir nous dire quel est leur style. Un bel exemple d’intelligence artificielle en action, que je ne savais pas être capable de mettre en œuvre lorsque j’ai commencé à suivre cette formation. Serions-nous capables d’aller jusqu’à ce résultat escompté ? Verrions-nous l’ordinateur commencer à “prendre vie” sous l’effet de nos algorithmes et de notre programme ? C’est ainsi que plein d’espoir j’ai opté pour ce sujet… Avec le doute raisonnable qui nous accompagne lorsque nous nous lançons dans l’inconnu !

Mes motivations personnelles

J’ai au départ un profil de Statisticien et j’ai ensuite travaillé dans le numérique (application Bookari Reader de Mantano, pour tablettes et téléphones). Je me suis tourné vers la data science car j’étais fasciné par l’intelligence artificielle, le machine learning, et ressentais le besoin d’en savoir plus et travailler dans ce domaine.

Étant par ailleurs musicien et passionné de synthèse sonore j’ai été attiré par ce projet de classification musicale qui allait nous permettre à la fois de mettre en œuvre les algorithmes de classification enseignés dans notre cursus et d’apprendre certaines des techniques utilisées pour travailler sur des fichiers son et les analyser.

Les données utilisées au cours du projet

Au départ, le projet tel qu’il était proposé était fourni avec un ensemble de données numériques extraites des fichiers audio de la base de données des extraits musicaux de référence. Il aurait donc été possible de s’en tenir là et de travailler uniquement avec ce tableau de données. Cependant par la suite, afin d’explorer des façons d’améliorer les performances de notre modèle de classification, nous avons été amenés à utiliser nous-même la librairie Librosa de Python pour extraire davantage de données, ou sous une forme différente (récupération des formes d’ondes audio sous forme visuelle pour une utilisation en tant qu’images, par exemple).

La vidéo de présentation donne un aperçu des données utilisées et des visualisations effectuées pour les étudier. Ci-dessous on peut voir comme exemple le tempo des morceaux, dont l’histogramme indique qu’il suit une répartition pouvant être considérée comme gaussienne :

Avant de commencer : étude de l’existant sur le sujet

Lorsque l’on consulte l’État de l’Art sur ce sujet, on constate que de très nombreuses approches ont déjà été réalisées, avec des résultats très variables. Notre objectif a été de chercher une méthode simple et efficace, utilisant des algorithmes vus durant la formation tout en obtenant les meilleurs résultats possibles, le projet “fil rouge” étant d’abord un exercice d’application. Nous sommes partis de zéro, sans nous fier à tels ou tels travaux de recherche pré-existants, afin de voir ce que nous pouvions déjà réussir de cette façon. Ce faisant, nous avons eu la satisfaction d’obtenir un taux de bonnes classifications de 71%, très correct pour la base de données utilisée (le fichier GTZAN), par rapport à ce que l’on peut voir ailleurs sur internet. Comme on peut le voir dans la vidéo de présentation, il est impossible d’atteindre 100% de classifications correctes dans ce domaine qui demeure quoi qu’il en soit relativement subjectif, et où un certain nombre d’œuvres se situent à mi-chemin entre plusieurs styles.

Nous nous sommes fixés comme objectif supplémentaire que notre modèle nous fournisse le pourcentage de chaque classe musicale et non seulement la classe de plus fort pourcentage. Ceci pourrait notamment nous permettre de détecter des influences musicales quand on lui propose un morceau plus récent que ceux sur lequel il a été entraîné, d’un style inconnu de la base de données initiale.

L’organisation et l’articulation du travail sur le projet avec les modules de cours

Le travail à trois nous a d’abord permis de séparer les variables en trois groupes pour travailler sur leur analyse, visualisation puis suppression des variables trop fortement corrélées, avec un gain de temps appréciable vu le temps imparti. Ensuite, cela nous a permis de tester et régler les hyper-paramètres de nombreux modèles de classification, afin de trouver le meilleur candidat pour notre modèle final. Lorsque nous avons démarré le projet nous avions déjà vu dans les cours les principaux modèles de classification tels que Régression logistique, Séparateurs à Vaste Marge, Forêts aléatoires, Voting Classifier, XGBoost, etc. Nous avons ensuite intégré dans nos tests les modèles Dense Neural Network et Réseaux Neuronaux à Convolution, au fur et à mesure que nous les découvrions dans les modules de cours vus en parallèle.

Les difficultés rencontrées en cours de route

Dans un premier temps, il n’y a pas eu de difficulté de nettoyage des données, ce type de dataset étant un cas particulier où tout est correctement renseigné puisque extrait automatiquement par un ordinateur à partir de fichiers son. En revanche, une normalisation des données s’est révélée indispensable vu les considérables différences d’échelle entre les diverses variables.

Après avoir testé et ajusté les hyper-paramètres des nombreuses méthodes de classification automatique nous sommes arrivés à un score déjà très satisfaisant. A partir de là nous avons cherché à améliorer le score en allant plus loin, et c’est là que les plus grosses difficultés se sont présentées et que le temps a manqué. Nous avons essayé d’une part d’extraire davantage de variables, et d’autre part de tenter une utilisation des réseaux de neurones à convolution sur une représentation des sons sous forme d’image. Afin de rester dans le temps imparti nous sommes finalement revenus au Multi Layer Perceptron de Scikit-Learn qui s’était distingué à l’étape précédente.

Le développement de l’application Streamlit

Afin de présenter notre projet nous avons réalisé une application Streamlit qui nous a permis d’apporter une touche finale importante. Ceci nous a permis de faire fonctionner notre modèle en temps réel sur des morceaux choisis dans un menu déroulant, instantanément analysés et classifiés par l’ordinateur (voir vidéo de présentation).

C’est à ce moment-là que nous avons pu voir véritablement l’aboutissement de tout notre travail de recherche et de préparation, et ce fut particulièrement satisfaisant et spectaculaire de voir l’ordinateur réagir à nos propositions musicales.

Le rôle du mentor au cours du projet

Alban, notre responsable projet et formateur DataScientest, nous a aidé à définir les objectifs précis et limites du projet puis à poser les étapes nécessaires à sa réalisation, avec un calendrier d’échéances permettant d’aller à l’essentiel et d’éviter de se perdre en route. Le fait de lui présenter au fur et à mesure nos résultats afin qu’il les valide nous a permis d’avancer de façon sécurisée, vu la grande autonomie qui était la nôtre par ailleurs. Enfin, il était également présent pour nous répondre si nous avions besoin d’un renseignement technique que nous n’aurions pas trouvé dans nos recherches. Autant dire que son rôle fut particulièrement précieux !

Quels développements pourraient être envisagés ?

Dans le but d’améliorer encore davantage les performances, il serait possible d’essayer certaines techniques consistant par exemple d’une part à couper chaque morceau de musique de la base de données en plus petits morceaux de 3 à 5 secondes afin d’accroître la quantité de données disponible pour l’apprentissage, d’en extraire les MFCC (coefficients cepstraux des fréquences de Mel) sous forme d’image et de les utiliser avec un Réseau Neuronal à Convolution comme on le ferait pour une classification d’images.

Il serait également intéressant de constituer une base de données actualisée et comprenant de nombreux genres et sous-genres afin de voir dans quelle mesure les performances pourraient se maintenir.

Enfin, la mise en place d’un système de multi-étiquetage pourrait être envisagée.

Si vous souhaitez aussi développer une IA, DataScientest propose une formation Deep Learning.

Facebook
Twitter
LinkedIn

Tag de l'article :

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone

S'inscrire à la JPO :

Vous souhaitez recevoir notre newsletter data 💌 hebdomadaire ?