como-funciona-shazam-para-reconocer-las-canciones-4

Como funciona Shazam para reconocer las canciones

Hola amigos y amigas desde Canarias! Hoy vamos a conocer Como funciona Shazam para reconocer las canciones.

¿Qué es Shazam?

Escuchas una canción que te suena de algo en la discoteca o en el restaurante. Has escuchado esta canción millones de veces desde hace mucho tiempo y te recuerda a la infancia… ¡La quieres volver a escuchar en la mañana, pero no recuerdas su nombre! Afortunadamente, en nuestro increíble mundo futurista, tienes un teléfono con software de reconocimiento de música instalado. Puedes relajarte, ya que el Software te dijo el nombre de la canción, así que sabes que la puedes escuchar una y otra vez hasta que se convierta en una parte de ti…o te llegue a desesperar…

Como funciona Shazam para reconocer las canciones

¿Como funciona Shazam realmente? Shazam’s algorithm La aplicación fue expuesta por primera vez por su inventor Avery Li-Chung Wang en el 2003. En este artículo hablaremos de los fundamentos del algoritmo de reconocimiento de música Shazam.

Conversión de la señal de audio

El sonido es algún tipo de material místico que no podemos tocar pero que vuela en nuestros oídos y nos hace escuchar las cosas?

Sabemos que, en realidad, el sonido es una vibración que se propaga como una mechanical wave ola mecánica de presión y se desplaza a través de un medio tal como el aire o el agua. Cuando esta vibración llega a nuestros oídos, particularmente en el tímpano, mueve pequeños huesos que transmiten las vibraciones a las células ciliadas bastante profundas en nuestro oído interno. Además, las pocas células ciliadas producen impulsos eléctricos que se transmiten a nuestro cerebro a través del nervio auditivo del oído.

Los dispositivos de grabación imitan este proceso mediante la presión de la onda de sonido para convertirla en una señal eléctrica. Una onda de sonido real en el aire es una continuos señal de presión. En un micrófono, el primer componente eléctrico al encontrar esta señal se traduce en una señal de tensión analógica – nuevamente, continua. Esta señal continua no es tan útil en el mundo digital, así que antes de ser procesada, debe ser traducida en discrete signal una señal discreta que se pueda almacenar digitalmente. Esto se realiza mediante la captura de un valor digital que representa la amplitud de la señal.

La conversión implica quantization la cuantificación de la entrada que necesariamente introduce una pequeña cantidad de error. Por lo tanto, en lugar de una simple conversión, un analog-to-digital converter convertidor analógico digital realiza muchas conversiones en pedazos muy pequeños de la señal – un proceso conocido como sampling

Como funciona Shazam para reconocer las canciones 3

¿ Como funciona Shazam para reconocer las canciones ?

Grabar una señal de audio muestreado es sencillo. A continuación explico  Como funciona Shazam para reconocer las canciones. Ya que las tarjetas de sonido modernas ya vienen con convertidores analógicos-digitales, sólo tienes que seleccionar un lenguaje de programación, encontrar una biblioteca adecuada y establecer la frecuencia de la muestra, el número de canales (mono o estéreo) y normalmente, el tamaño de la muestra (por ej. Muestras de 16 bits). Después abre la línea de tu tarjeta de sonido, al igual que cualquier flujo de entrada, y escribe en una matriz de bytes. Así es cómo puedes hacerla en Java:

private AudioFormat getFormat() {
   float sampleRate = 44100;
   int sampleSizeInBits = 16;
   int channels = 1;          //mono
   boolean signed = true;     //Indicates whether the data is signed or unsigned
   boolean bigEndian = true;  //Indicates whether the audio data is stored in big-endian or little-endian order
   return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
}
 
final AudioFormat format = getFormat(); //Fill AudioFormat with the settings
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
final TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format);
line.start();

Lee los datos de ‘TargetDataLine’. (En este ejemplo, el ‘Running’ es una variable global que está detenida por otro subproceso – por ejemplo, si tenemos GUI con el botón STOP).

OutputStream out = new ByteArrayOutputStream();
running = true;
 
try {
   while (running) {
       int count = line.read(buffer, 0, buffer.length);
       if (count > 0) {
           out.write(buffer, 0, count);
       }
   }
   out.close();
} catch (IOException e) {
   System.err.println("I/O problems: " + e);
   System.exit(-1);
}

¿Cómo funcionan las frecuencias?

Lo que tenemos en esta matriz de bytes es la señal grabada en el tiempo del dominio domain. La señal de dominio de tiempo representa el cambio de amplitud de la señal a lo largo del tiempo.

Jean-Baptiste Joseph Fourier hizo el notable descubrimiento que ninguna señal en el dominio del tiempo es equivalente a la suma de algunos (posiblemente infinito) números de simples señales sinusoidal, dado que cada componente tiene una cierta sinusoidal de frecuencia, amplitud y fase. La serie de los sinusoides que juntos forman la señal de dominio de tiempo original se conoce como serie de Fourier.

En otras palabras, es posible representar cualquier señal en el dominio del tiempo simplemente dando el conjunto de frecuencias, amplitudes y fases correspondientes a cada sinusoide que compone la señal. Esta representación de la señal es conocida como la frecuencia de dominio frequency domain. En cierto modo, el dominio de la frecuencia actúa como un tipo de huella dactilar o firma para la señal de dominio de tiempo, proporcionando una representación estática de una señal dinámica.

La siguiente animación muestra la serie de Fourier de una onda cuadrada de 1 HZ squarewave y cómo una onda cuadrada (aproximada) puede ser generada a partir de componentes sinusoidales. La señal se muestra en el dominio del tiempo anterior y en el dominio de la frecuencia a continuación.

Fourier series of a 1 Hz square wave

Source: René Schwarz

Analizar una señal en el dominio de la frecuencia simplifica muchas cosas inmensamente. Es más cómodo en el mundo del procesamiento de señal digital porque el ingeniero puede estudiar el espectro (la representación de la señal en el dominio de la frecuencia) y determinar las frecuencias que están presentes y las que faltan. Después de eso, uno puede hacer el filtrado, aumentar o disminuir algunas frecuencias, o simplemente reconocer el tono exacto de las frecuencias.

Lo cierto es que gracias al descubrimiento de este algoritmo y a la fusión con las frecuencias (digitalizar el sonido), podemos averiguar en cuestión de segundos cuál es esa canción que te recuerda a un momento de tu vida que quieres llevar contigo a todos lados y poder reproducir en cualquier momento.

Leer artículo original

 

Añadir un comentario

Tu correo electrónico no será publicado. Los campos requeridos están marcados

cuatro + 2 =