Come funziona Shazam

Shazam ti permette di inviare una registrazione fatta sul tuo telefono di quasi tutte le canzoni e Shazam ti dirà il nome della canzone, il nome dell’artista e altri dati su quella canzone. Questi altri dati spesso includono link a luoghi dove è possibile acquistare la canzone così come le prossime date del tour di quell’artista. Negli ultimi anni, Shazam ha esteso la sua libreria per includere pubblicità e televisione. Per esempio, è possibile Shazam una pubblicità e ricevere informazioni aggiuntive sul prodotto, compreso un link per l’acquisto di quel prodotto.

Fondato nel 1999, Shazam è più vecchio dello smartphone. Nei primi giorni di Shazam, gli utenti chiamavano con un dispositivo che assomigliava a questo

Una ricerca Shazam è in grado di trovare una corrispondenza anche in ambienti rumorosi come bar o discoteche, purché quella canzone sia già nel database di Shazam. Una registrazione di almeno cinque secondi darà i migliori risultati. È possibile iniziare a registrare in qualsiasi punto della canzone e Shazam vi invierà una corrispondenza in pochi secondi. Perché questo servizio funzioni bene, Shazam ha un database in crescita di oltre 8 milioni di canzoni/file audio. Supponendo che il file audio medio sia lungo tre minuti, ci vorrebbero più di 45 anni per riprodurli tutti!

Con un database di queste dimensioni hanno una grande copertura, ma come fa Shazam a trovare una corrispondenza così rapidamente in un database così grande? Prima di tutto, i file audio effettivi non sono ciò che viene cercato quando si Shazam una canzone. Invece, Shazam ha un’impronta digitale audio per ogni file audio nel database. La registrazione che un utente Shazam invia è anche trasformata in un’impronta audio che permette di fare confronti in modo accurato e veloce. Queste impronte audio consistono in collezioni di dati numerici. Se ti stai chiedendo come questa melodia orecchiabile che stai Shazam viene trasformata in numeri, la prossima sezione è per te.

Come funziona il suono

Nella sua definizione più elementare, il suono è particelle che vibrano. Ci sono tre elementi che rendono ogni suono unico: Ampiezza, frequenza e tempo. L’ampiezza è la dimensione della vibrazione, che noi percepiamo come il volume del suono. La frequenza è il ritmo con cui avviene la vibrazione. La frequenza di un suono è ciò che percepiamo come altezza. La frequenza si misura in Hertz (Hz) che rappresentano quante volte un’onda sonora si ripete al secondo. L’orecchio umano può sentire suoni che vanno da 20Hz a 20.000Hz. Per dare una prospettiva, la nota più bassa su un pianoforte tradizionale a 88 tasti, A0 ha una frequenza di 27,5Hz. La frequenza di una nota musicale ad ogni ottava aumenta logaritmicamente. In altre parole, la frequenza di ogni ottava è il doppio dell’ottava sottostante. Per esempio, la frequenza di A1 è 55Hz, la frequenza di A2 è 110Hz, e la frequenza di A3 è 220Hz.

Nel grafico sopra, si può vedere che molti strumenti possono suonare le stesse note ma una nota sul violino e la stessa nota su un pianoforte suoneranno in modo diverso. Questa differenza di qualità tonale è conosciuta come timbro. Il timbro di un suono è creato da frequenze all’interno del suono che sono più alte (si ripetono ad un ritmo più veloce) rispetto all’altezza percepita del suono. Queste frequenze sono conosciute come overtones. Guarda questa registrazione che inizia con una nota (C4 261.23Hz) su un pianoforte seguita da ciascuno degli overtones all’interno del suono suonato uno per uno e si conclude con la stessa nota con cui è iniziato.

Queste frequenze di overtone sono ciò che dà ad uno strumento il suo timbro caratteristico.

Il tempo è importante perché non solo ci dà la lunghezza del tempo in cui avviene ma anche in quale momento un suono avviene in relazione ad altri suoni. Una data canzone può essere composta da molti strumenti che variano in frequenza e ampiezza mentre si muovono nel tempo in relazione l’uno all’altro. A causa della complessità dell’ampiezza, della frequenza e del tempo, e della capacità di misurarli con precisione, due versioni diverse della stessa canzone genereranno comunque un’impronta audio unica.

Come viene fatta un’impronta digitale

Per fare un’impronta audio, un file audio viene convertito in uno spettrogramma dove l’asse y rappresenta la frequenza, l’asse x il tempo e la densità delle ombreggiature rappresenta l’ampiezza (Fig 1A).

Per ogni sezione di un file audio, vengono scelti i picchi più forti e lo spettrogramma viene ridotto a uno scatter plot. A questo punto, l’ampiezza non è più necessaria (Fig 1B).

Ora abbiamo tutti i dati di base per abbinare due file che hanno subito il processo di fingerprinting. Tuttavia, è possibile abbinarli solo se un utente Shazam ha iniziato a registrare nell’esatto millisecondo in cui una canzone è iniziata. Poiché questo non è quasi mai il caso, ci sono ulteriori passaggi per l’impronta audio. Attraverso un processo chiamato hashing combinatorio, i punti sul grafico di dispersione sono scelti per essere ancore che sono collegate ad altri punti sul grafico che si verificano dopo il punto di ancoraggio durante una finestra di tempo e frequenza conosciuta come una zona di destinazione (Fig 1C).

Ogni coppia ancora-punto viene memorizzata in una tabella contenente la frequenza dell’ancora, la frequenza del punto, e il tempo tra l’ancora e il punto noto come hash. Questi dati sono poi collegati a una tabella che contiene il tempo tra l’ancora e l’inizio del file audio. I file nel database hanno anche ID unici che vengono utilizzati per recuperare ulteriori informazioni sul file come il titolo della canzone e il nome dell’artista.

Come trovare una corrispondenza

Ora che abbiamo creato le impronte digitali per entrambi i file audio, ciascuna delle coppie di punti di ancoraggio dalla registrazione dell’utente Shazam viene inviata al database di Shazam per cercare coppie di punti di ancoraggio corrispondenti. Questa ricerca restituirà le impronte audio di tutte le canzoni che contengono delle corrispondenze hash. Una volta che abbiamo tutte le possibili corrispondenze per la registrazione dell’utente Shazam, dobbiamo trovare l’offset temporale tra l’inizio della registrazione dell’utente Shazam e l’inizio di una di queste possibili corrispondenze dal database. Questo scostamento temporale può essere calcolato sottraendo il tempo della comparsa della coppia di punti di ancoraggio nella registrazione dell’utente Shazam dal tempo di comparsa dell’hash corrispondente nel file audio dal database di Shazam. Se una quantità significativa di hash corrispondenti hanno lo stesso offset di tempo, quella canzone è determinata per essere una corrispondenza!

Quando mappati in un grafico di dispersione dove l’asse y rappresenta il tempo in cui l’hash si verifica nella registrazione dell’utente Shazam e l’asse x rappresenta il tempo in cui l’hash si verifica nel file audio dal database di Shazam, gli hash corrispondenti formeranno una linea diagonale (Fig 3A). In un istogramma degli stessi dati dove l’asse y rappresenta i tempi di offset e l’asse x rappresenta la quantità di corrispondenze, ci sarà un grande picco al tempo di offset corretto (Fig 3B).

Questo metodo di ricerca audio è abbastanza accurato da trovare le corrispondenze nonostante la registrazione dell’utente Shazam contenga rumore come persone che parlano, rumore della strada e anche altre canzoni. Poiché il numero di hash dei punti di ancoraggio creati da un’impronta audio è molto più alto della quantità di corrispondenze di punti di ancoraggio richieste per restituire un risultato di ricerca positivo, gli hash dei punti di ancoraggio che sono mascherati dal rumore esterno non è sufficiente a impedire a Shazam di trovare costantemente una corrispondenza per un file audio dal database. Dato che l’algoritmo di ricerca è costruito per trovare corrispondenze con l’audio registrato nel database di Shazam, se siete a un concerto e ottenete una corrispondenza positiva quando shazamate una canzone, è molto probabile che l’artista stia usando tracce di accompagnamento e/o il lip-syncing. Un altro effetto collaterale è che Shazam restituirà la registrazione originale da cui proviene un campione se un artista non ha combinato il campione con altri suoni e non ha alterato il campione in alcun modo.

Leave a Reply