Cómo Shazam nombra una canción sin escucharla jamás

Estás en un bar. La música suena fuerte, la gente grita por encima de ella, los vasos chocan, y una canción que reconoces a medias se abre paso entre todo ese ruido. Levantas el teléfono, esperas cinco segundos, y la pantalla te anuncia con toda calma el título, el artista y el álbum. Parece que el teléfono escuchó la melodía — que la tarareó por dentro, que reconoció la tonada. No es así. Shazam no oye la música, no en el sentido en que la oye un humano. Le dan igual la melodía, el tono, el ritmo. Lo que hace en su lugar es uno de los trucos más elegantes de la informática moderna: convierte el sonido en un mapa disperso de estrellas y sale a buscar esa constelación exacta en un pajar de varios millones.

Del sonido a una imagen del sonido
Lo primero que hace Shazam es dejar de pensar en el audio como una onda y empezar a pensarlo como una imagen. Trocea el fragmento en diminutas porciones de tiempo que se solapan y pasa cada una por una transformada de Fourier — la máquina matemática que toma un temblor confuso de presión sonora y te dice de qué frecuencias puras está hecho, y con qué intensidad suena cada una.
Apila todas esas porciones una al lado de otra y obtienes un espectrograma: el tiempo corriendo de izquierda a derecha, la frecuencia de abajo arriba, y el brillo mostrando cuánta energía hay en cada tono en cada instante. Un golpe de bombo enciende la parte baja; un charles brilla en lo más alto. Es el sonido hecho visible — el tipo de imagen que un ingeniero de sonido o un lingüista reconocerían de un solo vistazo.

Quedarse solo con las estrellas más brillantes
Aquí viene la jugada genial, la que hace que todo funcione en un bar abarrotado. Un espectrograma completo es demasiada información, y la mayor parte es papilla — el difuminado de las conversaciones de fondo, el zumbido del aire acondicionado, el murmullo de la multitud. Así que Shazam lo tira casi todo. Solo se queda con los picos: los puntos más fuertes que todo lo que los rodea, las frecuencias que atravesaron limpiamente el estruendo.
Lo que queda es un reguero de puntos que el creador de Shazam, Avery Wang, llamó un mapa de constelación — y el nombre es perfecto. Como las constelaciones de verdad, esos puntos son escasos, distintivos y sobreviven con tozudez a las malas condiciones. Un pico fuerte en la grabación original tiende a seguir siendo un pico fuerte incluso después de que lo aplaste el altavoz de un teléfono, lo empape el barullo y lo comprima un micrófono barato. El ruido de fondo es potente, pero es difuso; rara vez gana a los picos musicales nítidos en su propio terreno. Al quedarse solo con esos picos, Shazam borra discretamente casi todo el ruido antes incluso de intentar cualquier comparación.
Pares de estrellas se convierten en una huella
Un punto aislado no es único — muchísimas canciones tienen una nota fuerte en 440 Hz. Por eso Shazam no guarda puntos; guarda relaciones. Toma un pico «ancla» y lo empareja con varios picos cercanos situados justo por delante de él en el tiempo. Cada par se convierte en un diminuto hash: la frecuencia del primer punto, la del segundo, y el intervalo de tiempo entre ambos, todo condensado en un único número compacto.
Ese trío es maravillosamente distintivo. La probabilidad de que otra canción tenga las mismas dos frecuencias separadas por el mismo ínfimo intervalo de tiempo, una y otra vez y en el mismo orden, es ínfima. Y como un hash se construye a partir de relaciones entre picos — y no de una intensidad absoluta — sobrevive a los cambios de volumen, a la compresión y a bastante mugre. Shazam precalcula estos hashes para cada tema que conoce y los amontona en una base de datos gigante, cada uno etiquetado con la canción de la que procede y en qué momento de ella aparece.
Encontrar la canción sin oírla jamás
Y ahora, la magia. Tu fragmento de cinco segundos recibe el mismo tratamiento — espectrograma, picos, pares, hashes — y Shazam busca cada hash en su índice. Obtendrás aciertos dispersos: este hash encaja con esta canción, aquel con otras tres. Las coincidencias están por todas partes. Entonces, ¿cómo distingue un acierto real del puro azar?
Con una idea de una belleza sencillísima, basada en el tiempo. Si tu fragmento procede realmente de una canción, entonces cada hash coincidente debería alinearse en un desfase constante. Digamos que grabaste en el segundo 47 del tema: entonces el hash A coincide en 47 s, el hash B en 47,3 s, el hash C en 48 s — cada uno situado exactamente tu-tiempo-de-grabación más tarde que donde vive en el original. Shazam dibuja todas las coincidencias y busca esa diagonal delatora: una franja gruesa de aciertos que comparten todos el mismo desfase de tiempo. Una canción equivocada produce una lluvia aleatoria de puntos, sin línea. La canción correcta produce un trazo inconfundible. Encuentra la diagonal y habrás encontrado tu tema — sin reconocimiento de melodía, sin una IA que escuche, solo geometría.

El remate
El plano de todo esto lo publicó abiertamente Avery Wang allá por 2003, en un artículo de apenas unas páginas — años antes de que existiera el iPhone, cuando «Shazam» significaba llamar a un número — el 2580 —, acercar el teléfono a la música durante unos treinta segundos, y esperar a que un SMS te revelara la canción. El algoritmo de base apenas ha cambiado desde entonces, porque no le hizo falta. Mientras el resto del mundo persigue redes neuronales cada vez más grandes para entender la música, esa cosa que llevas en el bolsillo y que nombra una canción a través de un muro de ruido hace algo tercamente anticuado: no escucha en absoluto. Solo hace coincidir estrellas.
