Shazam: come fa a trovare il titolo della canzone che ci interessa?

Creato il 06 settembre 2014 da Enjoyphone

Avete presente quella fantastica applicazione della quale non si può proprio fare a meno, disponibile praticamente per tutte le più diffuse piattaforme mobili, capace di riconoscere il titolo di una canzone solo avvicinando il telefono ad una radio o ad una qualunque fonte sonora e nota con il nome Shazam, vero ? Ora, vi siete mai chiesti come, in pochi secondi d’ascolto, sia in grado di fornirvi il titolo della canzone che tanto vi piace ? Se la risposta è si allora oggi sarà il giorno della verità, finalmente scoprirete quale astruso meccanismo si cela dietro un’applicazione in apparenza tanto semplice. Se la risposta è no, poco male, oramai abbiamo catturato – si spera – la vostra attenzione e non potrete fare a meno di proseguire la lettura per rispondere alla domanda che, solo adesso, vi siete posti.

Prima però, un po’ di storia.

L’azienda, fondata nel 1999, riuscì a lanciare il proprio prodotto – scritto da zero in quanto, in quel periodo, non esisteva niente in grado di offrire un servizio del genere – già dopo tre anni dalla sua costituzione e, nel 2002, fece il suo debutto nel Regno Unito sotto il nome di “2580“. Il nome del servizio, a quel tempo, derivava direttamente dal numero che bisogna comporre manualmente sul tastierino numerico del proprio telefono in modo tale da avviare la chiamata attraverso la quale il servizio stesso “ascoltava” il brano del quale si voleva conoscere il titolo. Una volta terminata la telefonata – della durata standard di trenta secondi – l’utente riceveva sul proprio cellulare un SMS contente proprio il titolo della canzone ricercata. Fu solo intorno al 2007 che, dopo la diffusione dei primi smartphone, la società pubblicò la sua applicazione per telefoni cellulari la quale, senza aver bisogno di effettuare una chiamata vera e propria, era in grado di trasmettere la registrazione acquisita ai server Shazam in modo tale che potesse partire in automatico e in velocità il processo di identificazione del brano.

Ma torniamo a noi adesso e cerchiamo di capire come Shazam effettivamente riesca ad individuare la traccia che le abbiamo fatto ascoltare. A sciogliere questo dubbio a noi comuni mortali c’ha pensato Avery Li-Chun Wang – Chief Scientist e co-fondatore della società londinese – attraverso un documento all’interno del quale, a grandi linee, viene spiegato il funzionamento del processo di identificazione delle tracce audio. Vediamo assieme quindi quali sono i punti cardine sui quali quest’identificazione si basa:

  • Per prima cosa, tutte le tracce disponibili – che ad oggi risultano essere più di 11000000 – vengono analizzate per poter creare uno spettrogramma, un grafico bidimensionale all’interno del quale viene rappresentata graficamente l’intensità di un suono (di una canzone in questo caso) in funzione del tempo (posto solitamente nell’asse X del diagramma) e della frequenza (posto invece nell’asse Y). A ciascun punto (del brano) con coordinate X e Y, in seguito, viene assegnata una tonalità di grigio – o di un qualunque altro colore – che rappresenta l’intensità del suono in un dato momento e ad una data frequenza. La figura qui in basso rappresenta proprio lo spettrogramma di un brano e i puntini neri al suo interno rappresentano i picchi del suono udibili durante l’ascolto del brano stesso.

  • Dopo aver creato uno spettrogramma grezzo si procede con l’individuazione, all’interno del diagramma, dei picchi di suono presenti e con l’eliminazione dei punti intermedi. Così facendo, all’interno del diagramma a costellazione – questo il nome del nuovo grafico ottenuto con l’individuazione dei picchi principali e l’eliminazione di quelli intermedi – ogni picco dello spettro manterrà le coordinate originarie che presentava nello spettrogramma  e, nel contempo, si riuscirà a semplificare molto il processo di analisi in quanto, i punti significativi da analizzare, saranno stati ridotti notevolmente. NB: per capire l’importanza di questo nuovo tipo di grafico pensate ad un foglio sul quale sono riportati tutti i picchi di un’intera canzone e sul quale viene fatta scorrere una pellicola lucida contenente i picchi di una registrazione di qualche secondo della canzone della quale volete conoscere il titolo. Ad un certo punto, i picchi riportati su entrambi i fogli, verranno a combaciare e ciò starà a significare che è stato trovato il titolo della canzone che stavamo cercando. NB(2): i punti scuri nello spettrogramma corrispondono alle “x” presenti nel diagramma a costellazione riportato di seguito.

  • Per garantire una rapida individuazione del titolo del brano in questione però, il tipo di semplificazione apportata con il diagramma a costellazione non risulta essere sufficiente. È a questo punto quindi che si procede con un ulteriore step: all’interno del diagramma a costellazione viene scelto un picco – che in questo caso prende la denominazione di “ancora” – il quale viene associato ad altri picchi nelle sue immediate prossimità – che prendono il nome di “bersaglio“- in modo tale da formare una “stringa“, ovvero un punto che non rappresenta più un singolo picco, bensì, un assembramento di picchi che, nonostante non vengano più rappresentati e considerati singolarmente, sono ancora in grado di fornire le informazioni esatte riguardo la parte di traccia audio della quale fanno parte. Così facendo – sostiene il co-fondatore di Shazam – si riesce, da una parte, a ridurre di 10 volte lo spazio d’archiviazione necessario per stipare i dati della traccia audio e, dall’altra, a velocizzare l’operazione di ricerca del brano di circa 10000 volte a fronte unicamente di una piccola possibilità che, per via dei dettagli del brano che vengono tralasciati, non si riesca ad individuare il titolo del brano.

  • Ora che abbiamo capito come Shazam interpreta, semplifica e salva i singoli brani musicali possiamo anche concentrarci sul momento magico vero e proprio, l’individuazione del titolo della canzone che stiamo ascoltando. Nel momento in cui avviamo l’applicazione e iniziamo a registrare il brano che ci interessa, il sistema, così come successo per i brani musicali completi, analizza la traccia audio e riduce la registrazione di 10 secondi in stringhe pronte da confrontare con quelle presenti all’interno dello sterminato database. Se volessimo rendere graficamente il processo di ricerca ci troveremmo davanti ad un grafico a dispersione dove, nell’asse X viene riportata la durata del brano completo preso in considerazione per cercare la corrispondenza con l’audio registrato dall’utente mentre, nell’asse Y, la durata della registrazione che è stata inviata dall’utilizzatore dell’app.

  • In un grafico come quello riportato qui sopra, ogni singolo cerchietto corrisponde ad una similitudine – ad una corrispondenza tra stringhe – tra la traccia audio inviata dall’utente e il brano utilizzato in quel momento per cercare il file musicale di provenienza. Per fare un esempio pratico concentriamoci sul cerchietto rosso in alto a sinistra: quel cerchietto (come qualunque altro presente nel grafico) indica che è stata trovata una similitudine ma, in questo caso, vista la sua posizione, indica che tale similitudine è stata trovata tra l’inizio della canzone utilizzata da Shazam come metro di paragone (all’inizio perché è prima del valore 10 riportato nell’asse X) e la fine della registrazione inviata dall’utente (alla fine perché appare dopo il valore 20 riportato sull’asse Y). In ogni caso ricordate, affinché vi sia corrispondenza tra l’audio registrato dall’utenze e il brano completo non è sufficiente che quei cerchietti, quelle similitudini, appaiano in maniera casuale all’interno del grafico a dispersione (come avviene nel grafico riportato qui sopra). Affinché ci sia corrispondenza e quindi si possa affermare che la registrazione dell’utente appartiene proprio a quel brano specifico è necessario che, all’interno del grafico a dispersione, si venga a creare una sorta di linea obliqua costituita da singoli cerchietti – singole similitudini.

  • Quando c’è corrispondenza, il grafico che si genera è esattamente come quello appena riportato: a partire da un dato valore dell’asse X (40 nel nostro caso) iniziano le similitudini principali e, con il procedere del tempo – sia della registrazione effettuata dall’utente sia della canzone utilizzata per cercare la corrispondenza – si crea una linea obliqua chiaramente distinguibile che, sostanzialmente, mostra che le stringhe dei due file audio utilizzati per la ricerca hanno combaciato in un determinato punto temporale del brano. Una volta effettuati questi passaggi e tutte le ricerche del caso all’interno del database, Shazam, vi farà avere il titolo del brano solo e soltanto se si riuscirà a creare un grafico – questa volta virtuale. Il sistema infatti non ha bisogno di analizzare graficamente i valori per interpretarli, a differenza di noi poveri umani – come quello riportato qui sopra e, in caso non fosse possibile crearne uno – e quindi non fosse possibile trovare una canzone che combaci -, ecco che comparirà la schermata d’errore che, prontamente, getterà alle ortiche la nostra speranza di trovare il titolo della canzone che tanto ci piaceva.

Questi dunque i retroscena di un’applicazione che, nella sua immediatezza, cela tutti i passaggi che occorrono per trovare il titolo della canzone che ci interessa. In ogni caso, per rincarare la dose e per farvi capire di cosa quest’applicazione effettivamente nasconde, ricordate: in un lasso di tempo che varia dai 5 ai 500 millisecondi (0,005 – 0,5 secondi), Shazam analizza più di 20000 canzoni. Non perdete dunque la pazienza in caso il titolo tanto atteso non arrivi immediatamente, dopotutto, per analizzare 11000000 di tracce possibili ci vuole tempo.