2009-09-22 26 views
19

Je suis intéressé par l'apprentissage et l'écriture d'un système qui va extraire des fonctionnalités de fichiers audio (mp3, wav, etc.) qui pourront être utilisés ultérieurement à quelque fin que ce soit. À l'avenir, j'espère pouvoir l'utiliser pour écrire des logiciels de similarité musicale.Extraction de fonction audio

Y a-t-il des bibliothèques qui existent pour vous aider? Je connais le libxtract, mais je ne l'ai pas utilisé.

De même, existe-t-il des bibliothèques c/C++ de bas niveau qui seraient bonnes pour traiter les flux audio? Je n'ai simplement aucune expérience dans ce domaine.

Merci pour l'aide,

Eric

+1

Que considérez-vous "caractéristiques"? – RedFilter

+2

Quand je dis "caractéristiques", je fais référence à une définition plus théorique de l'IA. Une caractéristique est n'importe quelle métrique qui peut être utilisée pour distinguer ou grouper l'audio ensemble. Par exemple, la moyenne ou la variance et d'autres choses statistiques peuvent être des caractéristiques. – esiegel

Répondre

14

Marsyas est un cadre très complet qui offre également l'extraction de caractéristiques audio.
Il est écrit en C++ et propose un mécanisme de "patcher" qui vous permet de connecter des composants prédéfinis.
Le cadre est livré avec plusieurs exemples.
Jetez un oeil aux sources pour apprendre à créer des extracteurs personnalisés.
L'outil de ligne de commande bextract qui vient avec Marsyas peut extraire:

  • MFCCs
  • Zero Crossing Rate
  • spectrale Centroïde
  • ...

Marsyas prend en charge plusieurs plates-formes, y compris Windows , Linux et Mac OS X (j'ai aussi vu un article mentionnant qu'il fonctionne aussi sur l'iPhone)

2

Tout d'abord, lisez la FFT et le traitement du signal numérique. Ensuite, obtenez un manuel sur la reconnaissance vocale, car il est basé sur exactement ce que vous voulez faire - un moteur de reconnaissance vocale extrait des «caractéristiques» de l'audio afin de déterminer ce qui est parlé.

J'ai constaté que les coefficients de Cepstral font de grandes "caractéristiques" dans le sens de l'apprentissage de la machine.

6

Il existe également libxtract, qui fournit un ensemble complet de plus de 50 fonctions audio conçues pour une utilisation en temps réel. C'est une bibliothèque «allégée» avec des dépendances minimales, et fournit des liaisons pour Python et Java. Il existe également un 'objet externe', qui rend la fonctionnalité libxtract disponible dans l'environnement de musique informatique en temps réel Pure Data. La référence canonique pour libxtract est this paper.

14

Par souci d'exhaustivité, voici les options que je suis au courant:

Yaafe et libXtract sont probablement les plus fortement optimisés en termes de performance (voir les repères au dessous de). Ils partagent tous deux le calcul intermédiaire entre les extracteurs de caractéristiques. Par exemple, ils n'exécuteront qu'une FFT par fenêtre et tout extracteur qui nécessite une FFT ne fera que référencer cette FFT. Même chose pour les fonctionnalités de niveau supérieur. Les autres extracteurs mentionnés ne le font pas vraiment car ils dépendent d'une architecture de plugin, c'est-à-dire que chaque extracteur doit être autonome.

Sonic Annotator et ses amis bénéficient d'une architecture de plugin pour que vous puissiez profiter de toutes sortes d'extracteurs de fonctionnalités tierces (y compris libXtract, aubio et Essentia). L'écosystème plugin Vamp est vraiment très varié et merveilleux. Il y a un exemple de code complet dans le SDK Vamp Plugin pour construire un hôte de plugin.

Je connais très peu d'Essentia, sauf qu'elle est plus récente que les autres et provient de l'excellent groupe de technologie musicale de Pompeu Fabra. Cela semble être un grand projet bien organisé. La documentation est très bonne. Ils l'utilisent sur des projets d'analyse de musique à grande échelle (comme Freesound et AcousticBrainz). L'objectif du projet semble être la performance et la correction. Vaut vraiment le coup d'oeil.

MARSYAS est une structure complète, pas seulement des bibliothèques. La documentation est assez bonne. Il est en cours de développement et fait partie d'un MOOC périodiquement offert par George Tzanetakis à l'UVic. Il semble y avoir pas mal d'applications et de projets construits autour de MARYSYAS. CAMEL et Maaate semblent dormants - ils n'ont pas vu de nouvelle version depuis 2010 et 2012 respectivement.

est ici une référence (en secondes) comparant Sonic Annotator, Marsyas et YAAFE faire l'extraction de caractéristiques sur 40 heures de 32 KHz fichiers wav mono:

 
      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

Consultez le site Web http://www.audiocontentanalysis.org/. Sous la section «logiciel», vous trouverez une liste de différentes bibliothèques liées au traitement du signal audio, à l'extraction de caractéristiques et à la recherche d'informations musicales. En outre, le site Web (et son livre) semble être un très bon point de départ pour plonger dans l'ensemble du sujet.