usando una tiempo señales señal real procesamiento normalizar graficar grabar filtrar comparar audio fft feature-extraction

una - Extracción de funciones de audio



procesamiento de audio en matlab (6)

Estoy interesado en conocer y escribir un sistema que extraerá características de archivos de audio (mp3, wav, etc.) que luego podrán usarse para cualquier propósito. En el futuro espero usarlo para escribir algún software para la similitud de la música.

¿Hay bibliotecas que existen para ayudar? Sé de libxtract, pero no lo he usado.

Además, ¿hay bibliotecas c / c ++ de bajo nivel que serían buenas para tratar las transmisiones de audio? Simplemente no tengo experiencia en esta área.

Gracias por la ayuda,

Eric



En aras de la exhaustividad, estas son las opciones que conozco:

Yaafe y libXtract son probablemente los más optimizados en términos de rendimiento (ver los puntos de referencia a continuación). Ambos comparten computación intermedia entre extractores de características. Por ejemplo, solo ejecutarán una FFT por ventana y luego cualquier extractor que requiera una FFT simplemente hará referencia a esa FFT. Lo mismo para funciones de nivel superior. Los otros extractores mencionados en realidad no hacen eso porque dependen de una arquitectura de complemento, es decir, cada extractor necesita ser independiente.

Sonic Annotator y sus amigos se benefician de una arquitectura de complementos para que pueda disfrutar todo tipo de extractores de funciones de terceros (incluidos libXtract, aubio y Essentia). El ecosistema del plugin Vamp es realmente bastante variado y maravilloso. Hay un código de ejemplo completo en el SDK de Vamp Plugin para construir un host de complemento.

Sé muy poco sobre Essentia, excepto que es más nuevo que los demás y proviene del excelente Music Technology Group de Pompeu Fabra. Parece un proyecto grande y bien organizado. La documentación es muy buena. Lo están usando en proyectos de análisis de música a gran escala (como Freesound y AcousticBrainz). El enfoque del proyecto parece estar en el rendimiento y la corrección. Definitivamente vale la pena mirar.

MARSYAS es un marco completo, no solo bibliotecas. La documentación es bastante buena. Está en desarrollo activo y es parte de un MOOC ofrecido periódicamente por George Tzanetakis en la UVic. Parece que hay bastantes aplicaciones y proyectos construidos alrededor de MARYSYAS.

CAMEL y Maaate parecen inactivos, no han visto un nuevo lanzamiento desde 2010 y 2012, respectivamente.

Aquí hay un punto de referencia (en segundos) que compara Sonic Annotator, Marsyas y YAAFE haciendo extracción de características en 40 horas de archivos mono wav de 32 KHz:

S.A. Marsyas YAAFE MFCC 1506 1168 142 Centroid 724 942 235 Rolloff 731 951 194 ZCR 221 620 57 Total 3182 3681 628


Primero, lea sobre FFT y el procesamiento de señales digitales. Luego, obtenga un libro de texto sobre reconocimiento de voz, ya que eso se basa exactamente en lo que desea hacer: un motor de reconocimiento de voz extrae "características" del audio para determinar qué se está hablando.

Descubrí que Cepstral Coefficients tiene excelentes "características" en el sentido de aprendizaje automático.


También hay libxtract , que proporciona un conjunto completo de más de 50 funciones de audio diseñadas para uso en tiempo real. Es una biblioteca "pobre" con dependencias mínimas y proporciona enlaces para Python y Java. También hay un ''objeto externo'', que hace que la funcionalidad de libxtract esté disponible en el ambiente de música en tiempo real de Pure Data.

La referencia canónica para libxtract es este documento .


Visite el sitio web http://www.audiocontentanalysis.org/ . En la sección "software" encontrará una lista con diferentes bibliotecas relacionadas con el Procesamiento de señales de audio, Extracción de funciones y Recuperación de información musical. Además, el sitio web (y su libro) parece ser un muy buen punto de partida para profundizar en el tema.


Marsyas es un framework muy completo que también ofrece extracción de características de audio.
Está escrito en C ++ y ofrece un mecanismo de "parcheo" que le permite conectar componentes predefinidos.
El marco viene con varios ejemplos.
Echa un vistazo a las fuentes para aprender a crear extractores personalizados.
La herramienta de línea de comandos de bextract que viene con Marsyas puede extraer:

  • MFCCs
  • Tasa de cruce cero
  • Centroide espectral
  • ...

Marsyas admite varias plataformas, incluidas Windows, Linux y Mac OS X (también vi un artículo que menciona que también funciona en el iPhone)