Título resumido: Cómo funciona la tecnología de reconocimiento musical de Shazam
¿Qué es Shazam?
- Shazam es una app que identifica la música que está sonando a tu alrededor.
- Abres la app y, mientras suena la música, graba unos segundos de audio para buscarlo en la base de datos.
- En el pasado ofrecía el servicio por número telefónico, y debido a las limitaciones de la calidad de las llamadas, el reconocimiento musical era una tarea difícil.
Por qué el reconocimiento musical es difícil
- Para quienes no están familiarizados con el procesamiento de señales, reconocer música es un problema difícil por la complejidad de la señal de audio.
- Un enfoque de fuerza bruta para encontrar una parte específica de una canción dentro de la pista completa sería muy lento, y además la forma de la señal puede cambiar mucho por ruido de fondo y efectos de frecuencia.
Resumen del sistema
- Shazam se divide en dos flujos: registrar música y reconocerla, y ambos comparten pasos como calcular el espectrograma, encontrar picos dentro del espectrograma y aplicar hashing a esos picos.
- El flujo de registro guarda los hashes en la base de datos, y el flujo de reconocimiento los compara con los hashes de la base de datos para identificar la canción que se está reproduciendo.
Cálculo del espectrograma
- Para obtener el espectrograma de un audio hay que entender la transformada de Fourier.
- La transformada de Fourier indica qué frecuencias están presentes en el audio, y con eso se genera un espectrograma que representa cómo cambian las frecuencias con el tiempo.
Espectrograma
- Para representar mejor las frecuencias que cambian con el tiempo, el espectrograma divide la canción en partes pequeñas y aplica la transformada de Fourier.
- El espectrograma es una gráfica 3D de tiempo (eje X), frecuencia (eje Y) e intensidad (eje Z/color).
Generación de huellas
- Se extrae una huella única del audio encontrando en el espectrograma los picos que representan las frecuencias más altas.
- Estos picos pueden resistir el ruido y otras distorsiones, por lo que son adecuados para generar huellas.
Búsqueda de picos
- Los picos del espectrograma representan las frecuencias más fuertes de la señal y deben estar distribuidos de manera uniforme para usarse en la huella de audio.
- Se usa una técnica de filtro máximo para resaltar los picos del espectrograma y encontrar su ubicación.
Hashing
- Se generan hashes formando pares de picos del espectrograma, lo que aumenta la unicidad.
- El hash incluye las frecuencias de dos picos y la diferencia de tiempo entre ellos, y luego se almacena en la base de datos.
Coincidencia
- Se describe el proceso de encontrar en la colección de huellas de la base de datos las que coinciden con una muestra de audio dada.
- Se buscan los hashes, luego se agrupan por canción y se verifica cuáles hashes coinciden para elegir la pista con más coincidencias.
Conclusión
- Shazam pasa por procesos como calcular el espectrograma, extraer picos, crear pares hash y almacenar huellas para registrar y reconocer canciones.
Opinión de GN⁺
- Lo más importante de este artículo es que explica de forma fácil de entender el complejo proceso con el que Shazam reconoce música.
- Resulta interesante y atractivo que descomponga los detalles técnicos paso a paso para que incluso un ingeniero de software principiante pueda entenderlo.
1 comentarios
Comentarios de Hacker News
El enfoque eficiente basado en hashes de Shazam
El atractivo mágico y duradero de Shazam
Un video de Wall Street Journal que explica cómo funciona Shazam
Explicación sobre Chromaprint y AcoustID
Un texto interesante sobre Shazam y el procesamiento digital de señales
Algoritmos similares que también pueden aplicarse a otros medios
La importancia del sitio web Every Noise At Once
La intuición del proceso de reconocimiento musical
La transformada de Fourier utilizada en el reconocimiento musical