Auteur/responsable : Ignacio Heredia (CSIC)
Projet : Ce travail fait partie du projet DEEP Hybrid-DataCloud qui a reçu un financement du programme de recherche et d'innovation Horizon 2020 de l'Union européenne dans le cadre de la convention de subvention n° 777435.
Il s'agit d'un outil plug-and-play permettant d'effectuer une classification audio avec le Deep Learning. Il permet à l'utilisateur de classer ses échantillons audio ainsi que de former son propre classificateur pour un problème personnalisé. Le classificateur est actuellement pré-entraîné sur les 527 classes de haut niveau de l'ensemble de données AudioSet.
Vous pouvez trouver plus d’informations à ce sujet sur le DEEP Marketplace.
Table des matières
Exigences
Ce projet a été testé sous Ubuntu 18.04 avec Python 3.6.5. D'autres exigences du package sont décrites dans le fichier
requirements.txt
.
- Pour prendre en charge un large éventail de formats audio, nous devons utiliser la bibliothèque FFMPEG. Pour l'installer sous Linux, veuillez exécuter :
apt-get install ffmpeg libavcodec-extra- Il est obligatoire d'avoir Tensorflow>=1.14.0 installé (soit en mode GPU, soit en mode CPU). Ceci n'est pas répertorié dans le
requirements.txt
car cela rompt la prise en charge du GPU.
Pour commencer à utiliser ce framework, clonez le dépôt et téléchargez les poids par défaut :
git clone https://github.com/deephdc/audio-classification-tf
cd audio-classification-tf
pip install -e .
curl -o ./models/default.tar.gz https://api.cloud.ifca.es:8080/swift/v1/audio-classification-tf/default.tar.gz
cd models && tar -zxvf default.tar.gz && rm default.tar.gz
maintenant, lancez DEEPaaS :
deepaas-run --listen-ip 0.0.0.0
et ouvrez http://0.0.0.0:5000/ui et recherchez les méthodes appartenant au module audioclas
.
Nous avons également préparé un conteneur Docker prêt à l'emploi pour exécuter ce module. Pour l'exécuter :
docker search deephdc
docker run -ti -p 5000:5000 -p 6006:6006 -p 8888:8888 deephdc/deep-oc-audio-classification-tf
Ouvrez maintenant http://0.0.0.0:5000/ui et recherchez les méthodes appartenant au module audioclas
.
Vous pouvez entraîner votre propre classificateur audio avec votre ensemble de données personnalisé. Pour cela il faut :
Mettez vos images dans le dossier ./data/audios
. Si vous avez vos données ailleurs, vous pouvez utiliser cet emplacement en définissant le paramètre dataset_directory
dans les arguments de formation. Veuillez utiliser un format audio standard (comme .mp3
ou .wav
).
Remarque Le classificateur fonctionne sur des échantillons de 10 secondes. Ainsi, si un fichier audio est plus long/plus court que 10 s, il sera concaténé en boucle pour le faire durer un multiple de 10 s. Ainsi, un fichier audio de 22 secondes créera 3 intégrations :
*-0.npy
,*-1.npy
et*-2.npy
.
Vous devez d'abord ajouter au répertoire ./data/dataset_files
les fichiers suivants :
Fichiers obligatoires | Fichiers facultatifs |
---|---|
classes.txt , train.txt | val.txt , test.txt , info.txt |
Les fichiers train.txt
, val.txt
et test.txt
associent un nom audio (ou chemin relatif) à un numéro d'étiquette (qui doit commencer à zéro ). Le fichier classes.txt
traduit ces numéros d'étiquette en noms d'étiquette. Enfin le info.txt
vous permet de fournir des informations (comme le nombre de fichiers audio dans la base de données) sur chaque classe.
Si vous utilisez l'option compute_embeddings=False
, le chemin du fichier doit pointer vers le chemin .npy
de l'intégration plutôt que vers le fichier audio d'origine et le paramètre dataset_directory
doit pointer vers le dossier contenant les intégrations.
Vous pouvez trouver des exemples de ces fichiers sur ./data/demo-dataset_files
.
Accédez à http://0.0.0.0:5000/ui et recherchez la méthode TRAIN
POST. Cliquez sur « Essayer », modifiez les arguments d'entraînement de votre choix et cliquez sur « Exécuter ». La formation sera lancée et vous pourrez suivre son statut en exécutant la méthode TRAIN
GET qui donnera également un historique de toutes les formations précédemment exécutées.
Si le module dispose d'une sorte de suivi de formation configuré (comme Tensorboard), vous pourrez le suivre sur http://0.0.0.0:6006.
Accédez à http://0.0.0.0:5000/ui et recherchez la méthode PREDICT
POST. Cliquez sur « Essayer », modifiez les arguments de test de votre choix et cliquez sur « Exécuter ». Vous pouvez soit fournir un :
data
avec un chemin pointant vers un fichier audio ou un fichier compressé (par exemple zip, tar, ...) contenant des fichiers audio.OU
url
avec une URL pointant vers un fichier audio ou un fichier compressé (ex. zip, tar, ...) contenant des fichiers audio. Voici un exemple d'une telle URL que vous pouvez utiliser à des fins de test. Le code de ce projet est basé sur le dépôt original d'IBM et implémente l'article « Multi-level Attention Model for Weakly Supervised Audio Classification » de Yu et al.
Les principaux changements par rapport au dépôt original sont les suivants :
Si vous considérez ce projet utile, pensez à citer le projet DEEP Hybrid DataCloud :
García, Álvaro López et al. Un cadre basé sur le cloud pour les charges de travail et les applications d'apprentissage automatique. Accès IEEE 8 (2020) : 18681-18692.
avec l'une des références ci-dessous :
- Jort F. Gemmeke, et al., Ensemble audio : une ontologie et un ensemble de données étiquetées par l'homme pour les événements audio, IEEE ICASSP, 2017.
- Qiuqiang Kong, et al., Classification des ensembles audio avec modèle d'attention : une perspective probabiliste. Préimpression arXiv arXiv:1711.00927 (2017).
- Changsong Yu et al., Modèle d'attention multi-niveaux pour la classification audio faiblement supervisée. Préimpression arXiv arXiv:1803.02353 (2018).
- S. Hershey et al., Architectures CNN pour la classification audio à grande échelle, préimpression arXiv arXiv : 1609.09430, 2016.