Comment fonctionne shazam?

Comment fonctionne shazam?
4.8 (95%) 8 vote[s]

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…

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 :

Comment fonctionne Shazam alors?

Pour ceux qui n’ont pas le temps ou qui ne comprennent pas l’anglais voici un résumé du fonctionnement de shazam :

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 gros, on transforme la musique en graphique et donc en information, il suffit ensuite d’enregristrer des spectrogrammes pour chaque chanson et de comparer l’échantillon soumis par l’utilisateur de Shazam à la base de données des spectrogrammes connus, non?

comment fonctionne shazam - spectrogramme

Exemple du spectrogramme d’une musique au hasard.

Eeeeeerm, non.

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 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 apellent de « fingerprint » : on n’enregistre pas toute l’information contenue dans une chanson mais seulement les points les plus discriminants (ou particuliers) de celle-ci, un peu comme notre cerveau n’enregistre pas la totalité d’une chanson pour la reconnaitre, il suffit de quelques accords bien distinctifs et hop on gagne au blind test.

comment fonctionne shazam - fingerprint

Avantage du fingerprint : on n’enregistre que les points et pas tout le spectrogramme.

De façon très simpliste, ce fingerprint 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 coincidence ?

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.

Comment fait Shazam sans le titre de la chanson ?

Vu qu’en entrée (l’échantillon prélévé 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élerer une chanson peut tout simplement la rendre non reconnaissable ou inécoutable.

Ce procédé permet à Shazam 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 fingerprint, 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énéerie que je voulais partager avec vous tant ce fonctionnement parait élégant : résoudre un problème du quotidien aussi difficile avec une telle simplicité et efficacité, bravo à Shazam.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *