Come funziona Shazam (e un clone come Midomi): spiegazione tecnica

Attenzione!

Questo articolo è roba per curiosoni.. per chi come me si chiede sempre “Ma come funzionerà ‘sta cosa!?” dopo esserne rimasto affascinato!
Se cercate invece una guida all’uso del software in oggetto, la potete trovate qui

Premessa: a cosa serve Shazam?

Esistono diverse applicazioni per smartphone evoluti e sempre connessi ad Internet che consentono agli utenti di identificare una canzone facendo “ascoltare” al telefonino alcuni secondi della stessa.
Spesso e volentieri queste applicazioni sono in grado di riuscire a captare una canzone anche in un ambiente affollato e rumoroso come un pub o una pizzeria.

Una delle applicazioni in oggetto più conosciuta è senza dubbio Shazam (e già che ci sono, vi segnalo il “clone” che funziona benissimo sul mio Acer s200 con Windows Mobile, Midomi).

Essendo io molto curioso, e non riuscendomi ad accontentare del fatto che dietro questa “magia” ci fosse qualcosa a me ignaro, ho iniziato a cercare su Internet il principio di funzionamento alla base di queste apps.

Analisi dello spettrogramma e fingerprinting

L’idea di base è questa: effettuare una ricerca attraverso un’analisi dello spettrogramma e il conseguente “fingerprinting musicale” (una sorta di procedura di tagging avanzato).

  1. Anzitutto Shazam “prende le impronte digitali” (fingerprints appunto) di un nutrito numero di brani musicali, che indicizza in un database
  2. Successivamente l’utente “tagga” la canzone che sta ascoltando attraverso il fingerprint di un campione di circa 10 secondi di audio
  3. L’applicazione carica il fingerprint al servizio Shazam, che effettua una ricerca sul database di un fingerprint simile sul proprio database
  4. Una volta trovata la corrispondenza, Shazam ritorna all’utente le informazioni sulla canzone ascoltata

Abbastanza chiaro fin qui, no?

Passiamo a una spiegazione un po’ più tecnica

Pensate a un qualsiasi pezzo musicale come un grafico tempo/frequenza chiamato spettrogramma. Su un asse c’è il tempo, sull’altro la frequenza, e su un terzo si trova l’intensità.
Ogni punto del grafico rappresenta l’intensità di una data frequenza a un punto specifico nel tempo. Assumendo che il tempo si trovi sull’asse delle x, e la frequenza su quello delle y, una linea orizzontale rappresenterebbe un tono continuo puro, e una verticale invece un’esplosione istantanea di rumore bianco.

Come funziona Shazam - Lo spettrogramma

L’algoritmo di Shazam applica un’impronta digitale ad una canzone generando un grafico 3D come questo, e identifica le frequenze attraverso l’intensità dei picchi. Per ognuno di questi punti di picco tiene traccia della frequenza e del quantitativo di tempo trascorso dall’inizio della traccia audio.

Frequenza in Hz — Tempo in secondi

823.441.054
1892.311.321
712.841.703
. . . . . .
819.719.943

Ancora più nel dettaglio

Shazam costruisce il suo catalogo di fingerprint attraverso una tabella hash, dove la chiave è la frequenza. Quando Shazam riceve un fingerprint come quello qui sopra, utilizza la prima chiave (823.44 nell’esempio..), e ricerca tutte le canzoni corrispondenti.

Una tabella hash di Shazam potrebbe essere una cosa del genere:

Frequenza — Tempo — Canzone
823.4353.352“Song A” by Artist 1
823.4434.678“Song B” by Artist 2
823.45 108.65“Song C’ by Artist 3
. . . . . .
1892.3134.945“Song B” by Artist 2

Ulteriore approfondimento, in inglese

Arrivato a questo punto, mi fermo. Se siete interessati, vi rimando a questo articolo in inglese (da cui ho preso tutte le info qui sopra) per ulteriori dettagli.

Ti è servito questo articolo? Aiuta il blog: condividi e commenta!

Se questo post conteneva ciò che stavi cercando o qualcosa che credi valga la pena di far sapere agli amici, lascia un commento o condividi l’articolo sui social network! Bastano pochi secondi, aiuterai il sito a crescere, e sarà per me una ragione in più per creare contenuti sempre migliori!

Enjoy your music life..
Marco

Commenti

marcofama

Condividi questo con un amico