Skip to content

Visión general de shazam

busca tu cancion
Visión general de shazam
5 (100%) 1 vote[s]

En el lado del servidor:

Shazam precomputa las huellas dactilares de una gran base de datos de pistas de música.

Todas esas huellas digitales se ponen en una base de datos de huellas digitales que se actualiza cada vez que se agrega una nueva canción en la base de datos de canciones.

En el lado del cliente:

-cuando un usuario usa la aplicación Shazam, la aplicación primero graba la música actual con el micrófono del teléfono

-el teléfono aplica el mismo algoritmo de huellas dactilares que Shazam en el registro

-el teléfono envía la huella digital a Shazam

-Shazam comprueba si esta huella digital coincide con una de sus huellas dactilares

Si no, informa al usuario que la música no se puede encontrar

En caso afirmativo, busca los metadatos asociados con las huellas dactilares (nombre de la canción, URL de iTunes, URL de Amazon …) y se los devuelve al usuario.

Los puntos clave de Shazam son:

-siendo tolerante al ruido / fallas porque la música grabada por un teléfono en un bar / al aire libre tiene mala calidad

-debido al artefacto debido a las funciones de la ventana,

-debido al micrófono barato dentro de un teléfono que produce ruido / distorsión

-debido a muchas cosas físicas que no conozco

las huellas dactilares deben ser invariantes en el tiempo: la huella digital de una canción completa debe ser capaz de coincidir con solo un registro de 10 segundos de la canción

La coincidencia de huellas digitales debe ser rápida: ¿quién quiere esperar minutos / horas para obtener una respuesta de Shazam?

tener pocos falsos positivos: ¿quién quiere obtener una respuesta que no corresponde a la canción correcta?

Mejoras

El documento de Shazam es de 2003, lo que significa que la investigación asociada es aún más antigua. En 2003, los procesadores de 64 bits se lanzaron al mercado principal. En lugar de utilizar un punto de anclaje por zona objetivo como propone el papel (debido al tamaño limitado de un entero de 32 bits), puede usar 3 puntos de anclaje (por ejemplo, los 3 puntos justo antes de la zona objetivo) y almacenar la dirección de un punto en la zona objetivo en un entero de 64 bits. Esto mejoraría dramáticamente el tiempo de búsqueda. De hecho, la búsqueda sería encontrar 4 notas en una canción separada de detla_time1, detla_time2 y detla_time3 segundos, lo que significa que el número de resultados M sería muy (muy) más bajo.

Una gran ventaja de esta búsqueda de huellas dactilares es su alta escalabilidad:

En lugar de tener 1 base de datos de huellas dactilares puede tener bases de datos D, cada una de ellas contiene 1 / D de la colección de canciones completa

Puede buscar al mismo tiempo la canción más cercana del registro en las bases de datos D

Luego eliges la canción más cercana de las canciones D

Todo el proceso es D veces más rápido.

Compensaciones

Otra buena discusión es la robustez del ruido de este algoritmo. Podría agregar fácilmente 2k palabras solo para este tema, pero después de 11k palabras, creo que es mejor no hablar sobre eso o solo unas pocas palabras.

El verdadero desafío es encontrar los valores y algoritmos correctos que maximicen:

-La resistencia a los ruidos

-La complejidad del tiempo

-La precisión (reduciendo el número de resultados positivos falsos).

https://www.youtube.com/watch?v=eAMf14eF2AI
shazam

Shazam