Ingeniería31 MAY 2026

Cómo funciona el fingerprinting de audio

Del espectrograma al hash: el método de constelación que popularizó Shazam, explicado con un laboratorio que ejecuta el algoritmo sobre una señal sintética.

Laboratorio de audio
Investigación aplicada · 11 min de lectura

Identificar una canción de 7 segundos grabada en un bar ruidoso parece magia, pero es una tubería sorprendentemente sencilla. La idea central: no compares audio, compara constelaciones de picos. Una huella es resistente al ruido porque tira casi toda la información y se queda solo con lo que sobrevive a la compresión, el reverb y el ruido de fondo.

El laboratorio

Todo lo de abajo corre en tu navegador sobre un espectrograma sintético. Mueve los parámetros y verás cambiar la cantidad de picos, el tamaño de la huella y la robustez del match en tiempo real.

CARGANDO LABORATORIO DE FINGERPRINTING

Por qué pares y no picos sueltos

Un pico individual (t, f) es poco discriminante: hay miles. La clave es emparejar cada ancla con varios picos en una zona objetivo posterior y guardar el triplete (f1, f2, dt). Eso genera hashes específicos e invariantes al desplazamiento temporal: da igual en qué segundo empieces a grabar.

fingerprint.pypython
def build_hashes(peaks, fan_out=4, zone=20):
    # peaks ordenados por tiempo
    hashes = []
    for i, anchor in enumerate(peaks):
        for target in peaks[i + 1 : i + 1 + zone]:
            dt = target.t - anchor.t
            if 0 < dt <= zone:
                # hash invariante al offset temporal absoluto
                key = (anchor.f, target.f, dt)
                hashes.append((key, anchor.t))
            if len(hashes) >= fan_out:
                break
    return hashes  # match = histograma de (t_db - t_query)
Fin del artículoJavadaba · 31 MAY 2026
Seguir leyendo