Pregunta

Yo quiero construir algo similar a tunático o miomi (pruébelos si no está seguro de lo que hacen) y me pregunto qué algoritmos tendría que usar;La idea que tengo sobre el funcionamiento de este tipo de aplicaciones es algo como esto:

  1. tener una gran base de datos con varias canciones
  2. para cada canción en 1. reduzca la calidad/tasa de bits (a 64 kbps, por ejemplo) y calcule el "hash" del sonido
  3. tener el sonido/extracto de la música que deseas identificar
  4. para la canción en 3. reduzca la calidad/tasa de bits (nuevamente a 64 kbps) y calcule el "hash" del sonido
  5. si 4. El hash de sonido está en cualquiera de los 2. Los hashes de sonido devuelven la música coincidente.

Pensé en reducir la calidad/tasa de bits debido a los ruidos ambientales y las diferencias de codificación.

¿Estoy en el camino correcto aquí? ¿Alguien puede proporcionarme alguna? documentación específica o ejemplos?Midori parece incluso reconocer hum's, ¡Eso es increíblemente impresionante!¿Cómo lo hacen?

¿Existen hashes de sonido o es algo que acabo de inventar?Si es así, ¿cómo puedo calcularlos?Y más importante, ¿Cómo puedo comprobar si child-hash es en father-hash?

¿Cómo haría? construir un sistema similar con Python (tal vez un módulo incorporado) o PHP?

Se agradecerán mucho algunos ejemplos (preferiblemente en Python o PHP).¡Gracias de antemano!

¿Fue útil?

Solución

trabajé en la periferia de un marco fresco que implementa varias técnicas de recuperación de información musical. Difícilmente soy un experto (edit: en realidad estoy ni cerca de un experto, sólo para aclarar), pero puedo decir que que la Transformada Rápida de Fourier se utiliza por todo el lugar con estas cosas. El análisis de Fourier es loco, pero su aplicación es bastante sencilla. Básicamente se puede obtener una gran cantidad de información acerca de audio cuando usted lo analiza en el dominio de la frecuencia en lugar del dominio del tiempo. Esto es lo que el análisis de Fourier le da.

Esto puede ser un poco fuera del tema de lo que quiere hacer. En cualquier caso, hay algunas herramientas interesantes en el proyecto con los que jugar, así como para ver el código fuente de la propia biblioteca central: http : //marsyas.sness.net

Otros consejos

hago investigación en recuperación de información musical (MIR). El artículo seminal sobre las huellas digitales de música es el uno por Haitsma y Kalker alrededor de 2002-03. Google debe obtener la misma.

leí un temprano (muy temprano; antes de 2000) Libro Blanco sobre el método de Shazam. En ese punto, que, básicamente, sólo detectaron picos spectrotemporal, y luego hash los picos. Estoy seguro de que el procedimiento ha evolucionado.

Ambos métodos dirección de similitud de música en el nivel de la señal, es decir, es robusto a distorsiones de entorno. No creo que funciona bien para la consulta cantada (QBH). Sin embargo, esto es un problema diferente (pero relacionadas) con diferentes soluciones (aunque relacionados), para que pueda encontrar soluciones en la literatura. (Demasiados para nombrarlos aquí.)

Los procedimientos ismir están libremente disponibles en línea. Puede encontrar cosas valiosas allí: http://www.ismir.net/

Estoy de acuerdo con el uso de una biblioteca existente como Marsias. Depende de lo que quieras. Numpy / Scipy es indispensable aquí, creo. cosas simples se puede escribir en Python por su cuenta. Heck, si necesita cosas como STFT, MFCC, puedo enviar por correo electrónico de código.

Recientemente porté mi sistema de huellas dactilares basado en puntos de referencia de audio a Python:

https://github.com/dpwe/audfprint

Puede reconocer pequeños extractos (5-10 segundos) de una base de datos de referencia de decenas de miles de pistas y es bastante resistente al ruido y las distorsiones de canal.Utiliza combinaciones de picos espectrales locales, similar al sistema Shazam.

Esto sólo puede coincidir exactamente con la misma pista, ya que se basa en detalles finos de frecuencias y diferencias de tiempo; ni siquiera coincidiría con diferentes tomas, ciertamente no cubriría versiones ni tarareos.Hasta donde tengo entendido, Midomi/SoundHound funciona haciendo coincidir tarareos entre sí (p. ej.a través de distorsión dinámica del tiempo), luego tiene un conjunto de vínculos seleccionados por humanos entre conjuntos de tarareos y la pista musical deseada.

Hacer coincidir un zumbido directamente con una pista musical ("Consulta mediante zumbido") es un problema de investigación en curso en la recuperación de información musical, pero sigue siendo bastante difícil.Puede ver resúmenes de un conjunto de sistemas evaluados el año pasado en el Resultados MIREX 2013 QBSH.

MFCC extraído de la música es muy útil en la búsqueda de la similitud entre las canciones pandero .. esta es la más utilizada para encontrar canciones similares. Como se ha señalado por Darren, Marsias es una herramienta que se puede utilizar para extraer MFCC y encontrar canciones similares al convertir el MFCC para una sola representación vectorial ..

Aparte de MFCC, ritmo también se utiliza para encontrar la canción similitud .. Hay pocos trabajos presentados en el mirex 2009

que le dará una buena visión general de los diferentes algoritmos y características que son más útiles en la detección de similitud música.

El proyecto MusicBrainz mantiene una base de datos de este tipo. Puede hacer consultas a la misma a una huella dactilar.

El proyecto ya existe desde hace tiempo y ha utilizado diferentes huellas dactilares en el pasado. Ver aquí para obtener una lista.

La última huella digital que están usando es AcoustId . Existe la href="http://acoustid.org/chromaprint" rel="nofollow"> Chromaprint biblioteca (también con enlaces Python) donde se puede crear este tipo de huellas dactilares. Debe alimentar datos PCM primas.

I recientemente he escrito una biblioteca en Python que hace la decodificación (usando FFmpeg) y proporciona funciones tales como para generar la huella digital AcoustId (usando Chromaprint) y otras cosas (también para reproducir la secuencia a través de PortAudio). Ver aquí .

Ha sido un tiempo desde la última vez que hice el procesamiento de señales, pero en lugar de la disminución de resolución que debe buscar en las representaciones del dominio de frecuencia (por ejemplo, FFT o DCT). Posteriormente, se podría hacer un hash del tipo y la búsqueda de la canción con la base de datos de esa secuencia en.

parte difícil es hacer esta búsqueda rápida (tal vez algunos papeles en la búsqueda de genes podrían ser de interés). Sospecho que iTunes también hace algo de detección de instrumentos para limitar la búsqueda.

Lo que leí un artículo sobre el método en el que un determinado servicio de recuperación de información musical (no hay nombres mencionados) lo hace - mediante el cálculo de la transformada de Fourier de tiempo corto sobre la muestra de audio. El algoritmo luego escoge 'picos' en el dominio de frecuencia es decir, posiciones de tiempo y frecuencias que son particularmente de gran amplitud, y utiliza el tiempo y la frecuencia de estos picos para generar un hash. Resulta que el hash tiene sorprendentes pocas colisiones entre diferentes muestras, y también se pone de pie contra la pérdida de datos de aproximadamente el 50% de la información pico .....

Actualmente estoy desarrollando un motor de búsqueda de música con ActionScript 3. La idea es analizar los acordes primero y marcar los fotogramas (es limitada a los archivos mp3 en el momento), donde la frecuencia cambia drásticamente (cambios de melodía y ruidos haciendo caso omiso). Después de que hago lo mismo con el sonido de entrada, y combinar los resultados con los archivos invertidos. El juego determina la canción coincidente.

Para el método de Axel, creo que no debe preocuparse por la consulta de si se trata de un canto o simplemente tarareando, ya que no se implementa un programa de reconocimiento de voz. Pero tengo curiosidad acerca de su método que utiliza funciones hash. Podría explicar eso a mí?

Para consulta por función zumbido, es más complicada que la solución de huellas digitales de audio, la difícil proviene de:

  • cómo recoger eficazmente la base de datos de la melodía en la aplicación en el mundo real? muchos de demostración del uso del sistema MIDI para la acumulación, pero el costo de la solución midi no es muy asequible para una empresa.
  • cómo hacer frente a la variación de tiempo, por ejemplo, zumbido usuario puede rápido o lento. utilizar DTW? Sí, DTW es una muy buena solución para hacer frente a las series de tiempo con variación de tiempo, pero cuesta demasiado CPU-carga.
  • cómo hacer índice de series de tiempo?

Esta es una consulta de demostración tarareando proyecto de código abierto, https://github.com/EmilioMolina/QueryBySingingHumming, podría ser una referencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top