Si vous êtes un passionné de musique vous connaissez très probablement l’application Shazam qui permet de reconnaitre à la volée une chanson diffusée en soirée ou à la radio… et vous vous êtes également probablement demandé comment fonctionne Shazam pour reconnaitre une chanson.
Rien de tout cela, évidemment !
Nous allons voir ensemble comment fonctionne Shazam et comment il peut reconnaitre une chanson de façon aussi rapide que fiable, mieux que le plus expérimenté des disquaires.
Sommaire
Je me suis toujours demandé comment l’application Shazam trouvait les chansons qu’on lui suggérait, et ce dans un temps record : un extrait d’à peine 10 secondes est amplement suffisant pour trouver le titre, l’auteur et l’album.
C’est en parcourant YouTube que je suis tombé sur cette vidéo en anglais de Real Engineering qui explique en détail le fonctionnement de l’algorithme de Shazam que je vous recommande chaudement :
Pour ceux qui n’ont pas le temps ou qui ne comprennent pas l’anglais je vais vous expliquer dans la suite de l’article comment fonctionne Shazam et ses principes de bases.
L’auteur de la vidéo, tout comme moi et probablement vous si vous avez déjà réfléchi au sujet pensait au départ qu’il s’agissait d’une analyse du spectrogramme de chaque chanson.
En pratique, on transforme la musique en graphique et donc en information.
Il suffit ensuite d’enregistrer des spectrogrammes pour chaque chanson et de comparer l’échantillon soumis par l’utilisateur de Shazam à la base de données des spectrogrammes connus.
Logique, facile et fiable non?
Et bien non, le fonctionnement de Shazam ne repose pas sur une analyse de spectre !
Procéder ainsi fonctionnerait certes si le monde ne comptait qu’une poignée de chansons, mais réussir à comparer un extrait de 10s à la base de donnée entière de la musique sur terre avec tout ce qu’elle compte de chansons, albums, artistes, reprises, remixes et réinterprétations…
Cela prendrait littéralement des années mêmes avec les serveurs de calcul les plus puissants du monde, rien que de les classer dans un disque dur demande pas mal de boulot comme vu dans cet article sur comment organiser sa musique.
Là ou les ingénieurs de Shazam ont innové (et on peut clairement le dire excellé) c’est qu’ils ont inventé un système qu’ils appellent de « fingerprinting ».
On n’enregistre pas toute l’information contenue dans une chanson mais seulement les points les plus discriminants (ou particuliers) de celle-ci.
Finalement, un peu comme notre cerveau n’enregistre pas la totalité d’une chanson pour la reconnaitre, il suffit de quelques accords bien distinctifs qui la démarque et hop on gagne au blind test.
C’est exactement sur ce principe que fonctionne Shazam.
De façon très simpliste, ce fingerprinting qu’utilise Shazam est un calcul mathématique basé sur le principe bien connu du hash.
Le hash est un moyen très facile de vérifier par exemple l’intégrité d’un fichier téléchargé ou d’une transaction bitcoin : il s’agit d’un moyen simple de traduire n’importe quel information d’entrée en résultat mathématique.
Un peu comme un conspirationniste du 11 septembre le ferait : 11/09/2001 = 1+1+0+9+2+0+0+1 = 14 = 1+4= 5 soit exactement le nombre de lettres que le nom de « Georges Bush » donnerait si on additionnait la place dans l’alphabet de chaque lettre composant son nom.
Simple coïncidence ?
Euh, oui. (ne vous donnez pas la peine de vérifier, ça ne fonctionne pas)
Pourtant, bien que j’ai pris un exemple ridicule (mais familier) pour illustrer le fonctionnement d’une fonction hash, c’est en simplifiant à outrance un peu le même système qu’on utilise en informatique et donc que Shazam utilise pour reconnaitre une musique.
Vu qu’en entrée (l’échantillon prélevé par votre smartphone) on dispose de notes musicales séparées par un temps, c’est cette différence que Shazam calcule et enregistre dans son hash et non le titre ou le nom comme dans mon exemple ci-dessus.
Finalement quand on y réfléchit, c’est exactement de cette façon que notre cerveau fonctionne : quand on retient une chanson, on ne retient pas que les notes mais aussi du « temps » qui les sépare.
Tout musicien vous dira que le timing est essentiel et ralentir ou accélérer une chanson peut tout simplement la rendre non reconnaissable ou inécoutable.
Ce procédé permet à l’application de réduire au strict minimum la quantité d’information transitant par ses serveurs et surtout réduit de façon exponentielle la quantité de « points » à comparer dans un fingerprinting.
Ce qui permet à l’application de trouver en quelques secondes à peine et avec une probabilité d’erreur infinitésimale la chanson qu’on écoute.
Bref, un bel exemple d’ingénierie que je voulais partager avec vous tant ce fonctionnement parait élégant, consomme peu de ressources et donne une fiabilité à toute épreuve.
Résoudre un problème du quotidien aussi difficile avec une telle simplicité et efficacité, bravo à Shazam !
Etes-vous un utilisateur invétéré de l’application ?
Avez-vous déjà observé des bugs ou des fautes dans la reconnaissance de titres ?
N’hésitez pas à partager votre avis sur Shazam dans les commentaires et à poser vos questions, je réponds à tout le monde !
Bienvenue, cher lecteur, dans le merveilleux monde des antivirus ! Aujourd'hui, nous allons parler de…
Soyons honnêtes : l'anniversaire de mamie ou papy approchent et comme chaque année le fan…
Vous vous grattez la tête en vous demandant s'il vaut mieux un casque audio filaire…
ChatGPT est un outil d'intelligence artificielle qui fait beaucoup parler de lui, et contrairement aux…
Que vous soyez à la recherche d'idées cadeau pour passionnés d'audio pour vous-même ou pour…
Nous sommes nombreux à vouloir ajouter le bluetooth à une installation hifi déjà existante :…