Sei appena entrato in un bar a prenderti il tuo cornetto preferito. E fin qui, tutto bene. Poi però parte una canzone che non avevi mai sentito, ma che dopo 15 secondi stai già immaginando come sottofondo di un momento della tua vita o del tuo allenamento.
Vuoi sapere come si chiama, ma la gente intorno non sa nulla e tu non hai né tempo né dignità per iniziare a urlare “SCUSA MA CHE CANZONE È?” tra un cappuccino e l’altro.
E quindi come fai?
Beh, Shazam.
Apri l’app, premi un tasto, aspetti due o tre secondi e puff: titolo, artista, album… a volte pure il testo e i link per ascoltarla ovunque. E ogni volta mi chiedo… ma come fa? E anche questa volta… fisica!
Spettacolare come l’informatica utilizzi in modo intelligente la fisica e la matematica per risolvere i problemi di tutti i giorni!
Quando è nato Shazam (e perché all’inizio non era un’app)
Shazam nasce nel 1999 a Londra, con un’idea tanto semplice quanto folle per l’epoca… riconoscere una canzone ascoltando pochi secondi di audio.
Solo che… nel 1999 non esistevano gli smartphone. Quindi non c’era “l’app”, non c’era “tocca qui”, non c’era “microfono decente”, non c’era “connessione veloce”.
C’erano invece un bel po’ di problemi pratici:
- rumore di sottofondo (bar, radio, persone che parlano)
- audio compresso e spesso pessimo
- hardware ridicolo rispetto a oggi
- reti lente
E in più c’era un vincolo enorme: doveva funzionare in pochi secondi.
Dopo anni di sviluppo, nel 2002 arriva il primo servizio “vero”. Ma non era come lo immaginiamo oggi.
Nel Regno Unito si poteva chiamare un numero (2580), far ascoltare la musica al telefono e dopo pochi secondi ricevere un SMS con titolo e artista.
Ed era stata una scelta geniale!
Perché a quel tempo il telefono serviva solo per chiamare e mandare messaggi, punto. I componenti hardware, come CPU e microfoni, erano imbarazzanti. Internet era lentissimo (parliamo di 9.6–14.4 kbps), non potevi far viaggiare grandi quantità di dati e pretendere risposte immediate per migliaia di utenti.
Insomma, fare Shazam “sul telefono” era impraticabile con i vincoli dell’epoca.
Quindi che hanno pensato? Cambiamo paradigma, anziché costruire il software nel telefono, utilizziamo il telefono solo come microfono e la linea telefonica per comunicare. Stop.
Tutto il resto avveniva su alcuni server collegati alla rete telefonica che ricevevano il flusso audio, lo analizzavano e riconoscevano il brano. Poi inviavano un SMS con titolo e artista.
Semplice, chiaro e lineare ma soprattutto, doveva essere qualcosa di veloce, scalabile e robusto al rumore.
Ovviamente, anche qui c’erano alcuni svantaggi. I server avevano un loro costo, la capacità di elaborazione era limitata e i database non potevano essere così grandi a causa dei costi da sostenere. Infatti, per questo motivo il server non poteva salvare l’audio e processarlo con calma a chiamata conclusa ma doveva funzionare in live.
Il suo modello di business iniziale era basato sul pagamento per ogni utilizzo.
L’idea geniale dietro Shazam
Come detto il database era limitato ad un determinato limite di memoria, non ci possiamo permettere di poter immagazzinare tutta la musica del mondo, era necessario scegliere cosa includere e cosa no.
Quindi, quali sono i brani che gli utenti con maggiore probabilità vogliono sapere il titolo? Probabilmente più le hit del momento e la musica popolare. Bene, questi erano i brani con maggiore priorità che dovevano essere all’interno del database.
Ok, quindi i server ricevono il flusso audio della chiamata. Ma ora arriva il vero problema: come fai a riconoscere una canzone senza confrontarla con “tutte le canzoni del mondo” in modo lento e pesante? E soprattutto, come posso massimizzare il numero di tracce memorizzate così da individuare sempre un risultato?
Quello che si è detto è stato: “Se utilizzassimo uno spettrogramma?”
Se ci pensiamo, è un’idea geniale!
Uno spettrogramma è un grafico che mostra come cambiano le frequenze di un segnale nel tempo, quindi invece di avere una semplice onda audio, hai una mappa completa di cosa sta succedendo dentro al suono.
Non memorizzi la canzone come audio. Memorizzi una sua firma, un’impronta digitale.
La mappa segreta del suono

Questo nell’immagine è esattamente uno spettrogramma, sull’asse orizzontale abbiamo il tempo e sull’asse verticale le frequenze del brano, mentre il colore (o l’intensità) rappresenta “quanto è forte” la frequenza in quel momento.
Questa cosa, già di per sé, è potentissima perché trasforma un suono (che è un’onda un po’ difficile da “leggere”) in una specie di mappa visiva. In una caratteristica.
Come lo ottieni?
Ma come si ottiene questo grafico? Si prende il pezzo di audio e lo si spezza in piccoli pezzi nel tempo. Su ogni pezzo, si applica una trasformazione chiamata “Trasformata di Fourier”. Questa ti dice: “quali frequenze ci sono dentro questo pezzetto di suono?”. Ripetendo il processo nel tempo, ottieni proprio lo spettrogramma.
Ok, ma lo spettrogramma è ancora troppo “pesante”
A questo punto potresti dire: “Perfetto, allora Shazam confronta lo spettrogramma della canzone che sto ascoltando con lo spettrogramma nel database”. Sì… ma no.
Perché uno spettrogramma completo è ancora tanta roba da memorizzare e confrontare su scala enorme.
In realtà, dallo spettrogramma non ci interessano tutte le frequenze. Ci interessano quelle più evidenti, più robuste, più “riconoscibili” anche se c’è rumore, il microfono è scarso o la canzone si sente in lontananza.
Quindi estraiamo i picchi più forti, i punti distintivi nel tempo e in frequenza. E questo già risolve due problemi in uno:
- riduce drasticamente i dati
- aumenta la resistenza al rumore
Ma continuano ad essere ancora tanti dati da memorizzare. Serve un’altra idea… bisogna ridurre e rendere confrontabile velocemente due pezzi di audio.
Quindi cosa facciamo?
Ed è qui che entra in gioco l’hash, l’ultimo ingrediente matematico di cui avevamo bisogno. Una funzione che permette, dato un input (lo spettrogramma), di restituire un valore unico e confrontabile velocemente e facilmente con altri valori. E con questo abbiamo finalmente un’impronta digitale del brano (o meglio, di quel pezzetto di brano).
Tutta l’ingegneria del progetto era basata su questo modo di pensare.
Quindi quale sarebbe l’algoritmo di Shazam?
Quindi quale sarebbe l’algoritmo? Ripercorriamo quanto pensato.
- Shazam ascolta pochi secondi di audio
- genera lo spettrogramma
- prende solo i picchi più forti e “caratteristici”
- li trasforma in hash (impronte compatte)
- cerca quegli hash nel database (matching)
- quando trova abbastanza corrispondenze coerenti… ti dice “è questa”
Ed è qui che capisci perché spesso Shazam ci mette pochissimo, non sta “capendo la musica” come una persona ma sta trovando una firma… delle paroline da confrontare, quella che ha generato a partire dall’audio e quella che ha in memoria nel database associato al brano. Semplice, pulita e lineare.
L’arrivo degli smartphone
Con l’arrivo degli smartphone, Shazam esplode grazie all’app che tutti conosciamo oggi. Cambia tutto anche grazie ai miglioramenti introdotti. Microfoni migliori, Internet veloce e app sempre disponibili. Per non dimenticare che l’app è sempre super intuitiva. La apri, un tap e subito il risultato a tutto schermo.
Ma la cosa che fa impazzire è che il concetto di base era già pronto dai primi anni 2000. L’introduzione degli smartphone non ha cambiato il principio alla base, tutto quello che era stato pensato quando fu progettato… esiste ancora oggi. Ovviamente, con un’app si riesce ad implementare ed inserire più funzionalità, ma il concetto è rimasto sempre lo stesso.
Con l’acquisizione di 400 milioni da parte di Apple nel 2018, ha fatto un grande salto in avanti. Integrazioni con Spotify, Apple Music, YouTube e niente più pubblicità.
E oggi?
Oggi Shazam usa l’intelligenza artificiale per migliorare il matching, ha database molto più grandi e fornisce la possibilità di funzionare anche offline, ma il meccanismo in questo caso sarebbe: ascolta il brano in una quantità di tempo sufficiente da poterlo capire, si salva il file e appena avrà di nuovo connessione si fa una chiacchierata con i server!
Alla fine, come penserebbe una persona ma tradotto sotto forma di una sequenza di passi… un algoritmo ma in pochi secondi.



