Créer un bot de partage musical sur Discord
5
 min
Projet data
 Publié le 
7/10/2021

Créer un bot de partage musical sur Discord

Apple Music, Spotify ou encore Deezer, des plateformes musicales connues par tous et utilisées tous les jours. Vous vous êtes sûrement demandé s'il n'existait pas un chatbot permettant à chaque utilisateur sur différents services musicaux d'échanger leur musique dans un seul et même endroit ? C'est à cela qu'a pensé Samuel, élève du programme Fullstack chez Jedha, à la création d'un bot musical ! Découvrez dans cet article, les enjeux, les avantages, les obstacles rencontrés et l'évolution de son projet.

Présentation du projet : créer un bot de partage musical sur Discord

Samuel Millan- Promotion Fullstack à temps partiel - Campus Lyon

Ce projet de création d'un bot de partage musical sur Discord a pour objectif d'être mis en production et d'être accessible à tout utilisateur.

Comment partager de la musique facilement entre différents services musicaux ?

Apple Music, Spotify ou Deezer, sont des plateformes musicales des plus connues. L'objectif est de partager une musique que l'on apprécie à son récepteur. Celui-ci recevra le lien du partage, mais selon sa plateforme il ne pourra pas lire la musique, n'aura pas de compte ou pourra uniquement écouter un extrait de 30 secondes. Au final, une fois sur deux la musique n'est pas écoutée et l'écoute sera procrastinée.

créer un bot musical
Créer un bot de partage musical

Exemple

Voici un lien partagé qui redirige vers Spotify. Si nous souhaitons écouter la musique, il faut se créer un compte, retourner en arrière pour faire un copier-coller du titre, aller sur la plateforme Apple Music et chercher le nom du titre. Une fois cela fait, on récupère la musique sur la plateforme Apple Music. Le problème reste que ce processus prend un temps non-négligeable sur smartphone.

La solution ? Créer un bot qui interroge les services du chat, permettant de requêter les services Apple Music, Deezer, Spotify, Sound Cloud et d'envoyer tous les liens en une seule fois.

Streaming musical

Les différents services de streaming sont multiples. Il en existe partout dans le monde, que ce soit Spotify, Apple Music, YouTube Music, Tidal ou encore Qobuz qui ont chacun leur particularité.

En 2020 Spotify recensait 158 millions d'utilisateurs premium, dont 356 millions d'utilisateurs. En terme de bibliothèque, Apple Music recensait 75 millions de titres et Deezer 56 millions de titres.

API des services musicaux

Tous les services de musiques trouvés possèdent des API, une clé de lecture permettant d'interagir entre différentes applications. On va requêter tous ces services avec leur API et par la suite nous allons procéder à un mapping de leurs données. Si dans leur format de données, une personne envoie les données du titre, de l'artiste, du nom de l'album et une autre personne envoie le titre et l'artiste, il faudra tout nettoyer pour que ces données soient alignées et propres. Pour finir, on renvoie tout cela vers le bot. Cependant, les API de services musicaux sont très complexes, notamment pour Apple Music, dont le requêtage est très contraignant dû au service de sécurité à double authentification.

Illustration des API des différents services musicaux
Illustration des API des différents services musicaux

Quels sont les avantages des API ?

  • Une libraire musicale exhaustive
  • L'interopérabilité (l'adaptabilité de services indépendants les uns des autres)
  • Un développement intéressant

Quels sont les autres solutions envisagées ?

Il existe des plateformes pour effectuer ce travail. Il sera possible par la suite de scrapper ces utilisateurs et de renvoyer des données vers le bot. Une première alternative est SongWhip, une API disponible qui va renvoyer des données que l'on pourra scrapper. Le développeur qui est derrière SongWhip reste également très accessible, donne des conseils !

Exemple

Il suffit de poser son lien sur SongWhip. Ce lien génère une page avec toutes les URL indiquées. Le problème est qu'il est impossible de scrapper de manière directe, car tout est coder en JavaScript. De plus, la plateforme régénère automatiquement les URL ce qui devient très compliqué.

La solution est de récupérer avec l'API de SongWhip des données englobant les éléments de tous les artistes. Dans une chanson, s'il y a deux artistes, nous aurons toutes les informations complémentaires d'un artiste, comme le nombre d'albums par exemple. Notre URL peut générer SongWhip et à partir de celle-ci, nous pourrons la scrapper pour la renvoyer vers le bot.

Voici les données que l'on aura par API

  • La description
  • Les liens des artistes sur les services musicaux
  • Une partie configuration, c'est-à-dire permettant de vérifier si certains artistes sont accessibles dans certains pays en fonction de la propriété intellectuelle

Les deux données qui nous intéressent sont les suivantes :

  • L'image : il s'agit de l'image de l'artiste ou de la musique
  • URL-song : l'URL sera scrappée et nous pourrons récupérer les données les plus intéressantes sur Spotify, Apple Music et Deezer

Le résultat de SongWhip

Nous allons renvoyer un JSON, un format de fichier données très souvent utilisé dans les différents sites présentant le nom du titre, l'artiste, les liens Apple, Spotify, Deezer, ainsi qu'un lien image avec son thumbnail, c'est-à-dire le jacket du single, de l'album ou de l'artiste.

Bot

Une fois toutes ces données récupérées il faut les implémenter dans un bot, mais pour quelles raisons ?

  • Un bot est une interaction simple et accessible sur tous les appareils en mobile first
  • Il possède de nombreuses fonctionnalités à implémenter avec tous ces services de chatbot

L'UX par la Data Science

Comme nous l'avons vu précédemment nous avons un chatbot qui est mis en place permettant de renvoyer de la musique. En utilisant la Data Science, la finalité est d'aider les utilisateurs dans l'interaction de la conversation. Par exemple, recommander des musiques, enregistrer des playlists de manière automatique, faire des analyses variées sur les interactions entre les utilisateurs. L'idée est de manipuler la conversation avec le bot par la reconnaissance grâce au NLP (la reconnaissance automatique de texte).

Quel est l'objectif de l'UX ? Concevoir un produit au service des utilisateurs en passant par un ressenti émotionnel. Par l'utilisation de ce ressenti nous récupérons le feedback des utilisateurs qui servira à faire de la génération d’une playlist automatique, une recommandation musicale ou les statistiques de partage.

Afin de pouvoir utiliser l'UX dans notre bot il faut comprendre la notion de communication par un schéma. Dans un canal de communication on a un émetteur, un récepteur et un message que l'on doit coder et décoder. Par ailleurs nous rajouterons à ce schéma un élément qui est le feedback, la rétroaction, c'est-à-dire, qu'après avoir émis un message, nous allons pouvoir y réagir et y répondre.


Que donne le feedback sur un chatbot ? L’utilisateur va envoyer un message, le bot va le transmettre avec les fameux liens et ensuite il détectera le feedback du récepteur. Il existe plusieurs cas de Feedback :

  • Cas 2 Feedback multiple 
  • Cas 3 Feedback multiple asynchrone
  • Cas 4 Feedback partiel

Ces données sont proche de l'oralité. De plus, il faudra également labéliser les données. Le modèle algorithmique doit apprendre à partir d’une base existante et les données doivent être étiquetée en fonction des émotions, positives, négatives ou neutres.

La solution ? Récupérer ces éléments grâce aux données récupérées d'un corpus de texte avec les labels.


Le modèle BERT

Ces données  seront par la suite placées dans le modèle BERT, modèle crée par Google faisant de l'apprentissage par le contexte, avec des sous-tâches automatisées. Deux éléments sont à retenir :

  • ML (Machine Learning) : un autre modèle en Data Science caché dans le modèle BERT. Ce modèle va prendre une série de mot, par exemple “ Je m’appelle Samuel” et sur 15% du corpus il va enlever un mot en faisant une classification derrière pour voir quel est le bon mot
  • NSP (Next Sentence Proposition) : un modèle qui procèdera de même mais avec une série de phrases, à la place de mots, par exemple " Super ta musique Richard, je vais la mettre dans ma playlist". Nous avons ici deux phrases qui sont connectées. Le modèle va cacher la deuxième phrase et trouver la prédiction de cette phrase sur 50% du corpus

Les étapes du modèle

  • Nettoyage des données : en enlevant les hashtag des URL
  • Découpage du train & test : train pour les données d’entraînement et test pour tester son modèle derrière
  • Lancement du modèle (BERTL : MLM, NSP & Prédiction) 
  • Évaluation du modèle avec une accuracy c’est-à-dire, une précision.

L'évolution du projet

L'évolution de ce projet s'effectue en plusieurs étapes :

  • Ce projet était lié à de nombreuses contraintes liées au chatbot. La finalité est d'en faire un chatbot simple sans modèle en y implémentant la Data Science
  • Débugage du scrapping
  • Création de la représentation graphique grâce à Open AI : OpenIA a créé un modèle dans lequel apparaît une image lorsqu'on tape du texte
  • Mise en place de boutons car les liens ne sont pas esthétiques
  • Embed optimisé : avoir des images plus esthétiques comme la représentation de Spotify sur mobile
  • Enrichissement des données d’utilisation : il faudra entraîner son modèle avec la langue française , récupérer des conversations en mettant des règles de gestion spécifiques. Sur chaque partage, récupérer les 10 derniers messages à la fin du message de chatbot et par la suite faire un prétraitement
  • Anonymisation des données : les données récupérées sont publiques et le chatbot ouvert à tous. En terme de RGPD aucune donnée ne peut être récupérée hormis du texte
  • Intégration du modèle de reconnaissance d’émotion pour générer des playlists automatiques avec un historique de partage entre amis
  • Modèle de recommandation : à long terme, ce chatbot sera utilisé par un bon nombre d'utilisateurs. C'est pour cette raison que l'on fera des recommandations, car SongWhip nous apporte des données complémentaires. Le chatbot pourra faire des recommandations.
évolution projet
L'évolution du projet


Si vous souhaitez acquérir les compétences en Data recherchées des recruteurs et réalisés des projets IA & Tech, n'hésitez pas à regarder les formations Data que Jedha Bootcamp propose.

Rejoignez la communauté sur JULIE !

Python, SQL, gestion de projet Data, toutes les compétences à acquérir pour monter en compétences avec cours en ligne gratuits.

Marina Kia
Écrit par
Marina Kia
 - 
Content & Event Manager
@ Jedha

Python : le language de programmation le plus
populaire parmi les professionnels de la Data !

Obtenez notre livre d'Introduction Pratique à Python !

Programmes, thématiques Data, admissions,
vous avez une question ?

Prenez rendez-vous avec nos équipes