Audio Classification
Introduction
La base de données free-spoken est une base
de 2000 signaux audio (.wav) constituée des chiffres de 0 à 9 prononcés chacun 50 fois par quatre
différents speakers masculins anglophones (jackson, nicolas, theo, yweweler). A partir de cette base de
données, le but de ce projet est de construire sous Keras deux réseaux de neurones en parallèle : un
pour la classification du speaker (4 classes) et un pour la classification des chiffres (10 classes).
Il existe de nombreuses façons de représenter un signal sonore. Vous utiliserez la librairie librosa
qui
dispose de nombreuses fonctions spécialisées dans l’extraction de caractéristiques sonores
(see features
extraction librosa). Vous pouvez utiliser pour caractéristiques le mel-scaled spectrogram
qui permet de représenter visuellement l’évolution du contenu fréquentiel d’un signal au cours du
temps.
Afin de pouvoir utiliser cette librairie, vous utiliserez google colab
qui permet de profiter d’un environnement python plus adapté. Pour vous aider sur la partie fastidieuse du travail, un début de
notebook python
ProjetAudio est fourni.
Il contient l’installation de la librairie librosa
, le chargement
du dataset, et la création des mel-scaled spectrogram.
Pour l’entraînement et le test des vos réseaux, il faudra veiller à utiliser le même nombre d’occurrences
de chaque classe. Pour ce faire, vous diviserez de manière aléatoire votre dataset en prenant
$N$ ($N$ à choisir) occurrences de chaque mot pour chaque speaker pour vos données d’entraînement, et
donc $50-N$ occurrences pour vos données de test.
HomeWork
La première étape concerne la mise en forme des données à partir des signaux audio : génération
des entrées du réseau (mel-scaled spectrogram) et labelisation des données.
Il vous reste donc seulement à procéder à la création des labels. Les noms des fichiers audio sont de
la forme chiffre_speaker_occurence.wav où chiffre est un entier compris entre $0$ et $9$, speaker
est une chaîne appartenant à {"jackson", "nicolas", "theo", "yweweler"}, et occurence est un entier compris entre $0$
et $49$. Un exemple de fichier est : 1_jackson_18.wav.
- Faire une fonction Python permettant la mise en forme des données, à savoir la création de couples (mel-scaled spectrogram, labels). La suite sur travail consiste à construire vos deux réseaux de neurones, les entraîner et évaluer leurs performances.
- Proposez une architecture de réseau de neurones prenant en entrée un mel-spectrogramme et prédisant le speaker. Vous justifierez vos choix (types de couches utilisées, fonctions d’activations,...). Un schéma de synthèse pourra être réalisé. Faire de même pour la prédiction du chiffre.
- Entraînez vos deux réseaux de neurones, puis quantifiez leurs performances respectives. Il est demandé de faire un analyse soignée des résultats (présentez les résultats sous forme de matrices de confusion et analysez les résultats obtenus)
- Fusionner les prédictions de ces deux réseaux de neurones en parallèle et évaluer la performance globale (une prédiction sera bonne lorsque à la fois le speaker et le mots prononcé ont été correctement prédits).
Les deux questions principales posées dans ce problème sont les suivantes :
- utiliser les données de trois speakers pour l’entraînement de votre réseau prédisant le chiffre, puis tester les performances sur les données du quatrième speaker pour évaluer si le réseau prédisant le chiffre possède des capacités de généralisation à une nouvelle voix.
- utiliser seulement sept des chiffres pour l’entrainement de votre réseau prédisant le speaker, puis tester les performances sur les trois chiffres restants pour évaluer si le réseau est capable de reconnaitre le speaker sur des nouveaux mots prononcés.
Livrables
Les livrables à fournir sont :
- Un rapport pdf d’environ 10 pages expliquant, le sujet, le choix de votre démarche, la mise en oeuvre, les tests réalisés, et l’analyse soignée des résultats.
- Les fichiers Python commentés.
Pour vous aider, voici un notebook détaillant les différentes étapes d’un projet deep learning (RESSOURCE). N’hésitez pas à vous en inspirer lors de vos créations de réseaux dans le futur.