Shazam : comment ça marche ?

[par Thomas Vaes]

Comment ça fonctionne ?

Shazam et abracadabra !

Shazam c’est cette application pour smartphone qui te permet de retrouver le titre d’une chanson et son auteur après seulement quelques secondes d’écoute. Avec une base de données de plus 8 millions de titres, on est en droit de se demander comment cela marche.

Pour Shazam, chaque chanson a un code qui lui est propre. Quand tu demandes à l’application de reconnaître un morceau, elle décompose le son et le transforme en code. Elle le compare ensuite à ceux présents dans sa base de données et trouve le résultat correspondant.

Pour créer ces codes, l’application délaisse la majeure partie de la chanson et se concentre uniquement sur les passages intenses. Pour ce faire, l’algorithme utilise un spectrogramme. Ce graphique à trois dimensions donne l’intensité d’un son en fonction de sa fréquence et de son instant t dans le morceau.

Ce qui nous donne : en ordonnées, le temps (de zéro jusqu’à la fin du morceau) et en abscisses, la fréquence, de 20 Hz à 20 kHz (spectre audible de l’oreille humaine). La troisième dimension est représentée par un code couleur servant à indiquer le volume (ici, le rouge symbolise un fort volume et le bleu l’inverse).

httpcoding-geek.comwp-contentuploads201505piano_spectrogram_min.jpg

Pour chaque point d’intensité, l’application garde la trace de la fréquence et le temps écoulé depuis le début de la chanson. On obtient donc une myriade de points qu’il faut transformer en empreinte numérique.

Des points d’ancrage sont choisis et associé à une zone cible. On associe ensuite les couples point d’ancrage/point de la zone cible. Ces couples sont formés de trois éléments : la fréquence du point d’ancrage (« f1 »), la fréquence du point de la zone cible, (« f2 ») et la différence de temps entre les deux (« ∆t« ).

graphique_marqueurs

 

Ce couple est ce que l’on appelle un marqueur. On assigne ensuite à ce marqueur l’instant t du point d’ancrage pour obtenir un marqueur temporel. Le regroupement de tous les marqueurs temporels forme l’empreinte. À cette empreinte, on associera les informations du morceau (artiste, nom de la chanson, nom de l’album, année de sortie, etc). En moyenne, une empreinte se retrouve dans seulement trois morceaux. Il faut en général comparer une centaine d’empreintes correspondant chacune à trois morceaux. Cela nous donne pas moins de trois cent morceaux possibles. Heureusement, si seulement deux empreintes correspondent à un même morceau, Shazam considère que c’est le bon.

Bémol (quand on parle de musique), il faut aussi que l’algorithme puisse reconnaître le morceau même si l’échantillon a des défauts (bruits ou enregistrement tardif) et il y en a toujours. Comme on ne peut pas simplement comparer l’échantillon avec l’ensemble du répertoire (cela prendrait trop de temps), on ne compare pas l’empreinte dans son ensemble uniquement les marqueurs. On place tous les marqueurs sur une ligne de départ et on les lances Le but de chaque marqueur est de trouver ses jumeaux (ceux avec les mêmes coordonnées). Puis, chaque couple de marqueurs est classé en fonction du décalage entre les deux instants t entre les marqueurs de l’échantillon et du morceau d’origine. L’instant t de chaque point d’ancrage de l’échantillon est donc peut-être différent de celui du morceau original mais pas le décalage entre les différents instants t.

Le morceau correspondant ne sera pas celui dont l’empreinte sera identique à celle de l’échantillon, mais celui dont l’empreinte aura le plus de marqueurs temporels « assortis » à ceux de l’échantillon (à un décalage temporel près).

L’application n’est pas capable de reconnaître un morceau joué en live. Si une chanson est identifiée par Shazam, cela veut dire que chaque musicien ou chanteur interprète le morceau original à la milliseconde près. En résumé, il s’agit d’un playback. Shazam a donc du mal à reconnaitre une chanson que l’on sifflerait ou fredonnerait. Par contre, un autre programme de reconnaissance audio permet cela : Soundhound.

 

Bibliographie :

http://coding-geek.com/how-shazam-works/

http://www.lesnumeriques.com/audio/magie-shazam-dans-entrailles-algorithme-a2375.html

http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

https://questions2physique.wordpress.com/2011/02/05/application-shazam/

http://www.slate.fr/story/12039/la-magie-shazam