2009-09-22 22 views
19

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

¿Existen bibliotecas que ayuden? 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

+1

¿Cuál considera "características"? – RedFilter

+2

Cuando digo "características", me refiero a una definición teórica más AI. Una función es cualquier métrica que se puede usar para distinguir o agrupar el audio. Por ejemplo, el promedio o la varianza y otras cosas estadísticas pueden ser características. – esiegel

Respuesta

14

Marsyas es un marco 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.
Eche un vistazo a las fuentes para aprender a crear extractores personalizados.
La herramienta de línea de comandos bextract que viene con Marsias puede extraer:

  • MFCC
  • punto de cruce cero Tasa
  • espectral Centroide
  • ...

Marsias es compatible con varias plataformas, incluyendo Windows , Linux y Mac OS X (también vi un artículo mencionando que también funciona en el iPhone)

2

En primer lugar, leyeron sobre la 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.

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

6

También hay libxtract, que proporciona un conjunto integral 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 this paper.

14

En aras de la exhaustividad, aquí las opciones yo sepa:

Yaafe y libXtract son probablemente los más altamente optimizados en términos de rendimiento (ver los puntos de referencia abajo). 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 realmente 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 complemento para que pueda disfrutar de 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 framework completo, no solo librerías. 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í es un punto de referencia (en segundos) comparar Annotator de Sonic, Marsias y YAAFE haciendo la extracción de características en 40 horas de archivos WAV mono 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 
2

visitar la página web http://www.audiocontentanalysis.org/. En la sección "software" encontrará una lista con diferentes bibliotecas relacionadas con 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.

Cuestiones relacionadas