Mise en place d'un système de reconnaissance simple
Objectif
L'objectif de ce TP est de vous familiariser avec les différentes étapes que l'on rencontre dans le développement d'un système de reconnaissance automatique.
Le but sera donc de construire un système qui sera capable de reconnaître un son test et de l'identifier.
Pour effectuer les quelques manipulations de ce TP, vous allez travailler dans l'environnement notebook d'IPython/Jupyter. Pour cela, créez un répertoire pour cette matière, déplacez-vous dans celui-ci et exécutez les commandes suivantes :
$> jupyter-notebook
Ceci va ouvrir votre navigateur sur un explorateur de fichier du répertoire dans lequel vous avez lancé la commande.
Créez un nouveau projet Python3, que vous nommerez reconnaissance.
Au début, dans la première cellule, pour activer le remplissage de l'espace de nommage avec les modules Numpy et Matplotlib (et math), écrivez la commande suivante et exécutez la cellule avec la séquence de touche Ctrl-Enter ou Shift-Enter
%pylab inline
L'option inline permet d'afficher les images dans le notebook et non dans une nouvelle fenêtre à part.
La commande %pylab est équivalente à ces commandes
%pylab makes the following imports:: import numpy import matplotlib from matplotlib import pylab, mlab, pyplot np = numpy plt = pyplot from IPython.display import display from IPython.core.pylabtools import figsize, getfigs from pylab import * from numpy import *
Les données
Les données que vous allez manipuler sont des fichiers audios de différents sons, tous différents. Les caractéristiques de ces sons sont les suivantes:
- Fréquence d'échantillonage : 22050 Hz
- Nombre de canaux : 1
- Codage : entier signé sur 2 octets
Les fichiers qui vous sont fournis sont des fichiers brutes, c'est-à-dire sans entête (équivalent du format wav PCM mais sans entête). Ils sont situés dans le répertoire /home/partage/I322/RAW.
Paramétrisation
La paramétrisation que vous allez utiliser sera le taux de passage par zéro (ZCR). Il sera à vous de définir le(s) paramètre(s) de cette méthode. L'avantage de ce choix de paramétrisation est d'obtenir une valeur monodimensionelle simple.
Modèle de reconnaissance
Le modèle de reconnaissance va se baser sur une modélisation par mélange de lois Gaussiennes (GMM). Chaque classe de sons sera modélisée par un GMM.
Vous définirez les hyperparamètres (nombre de gaussiennes dans le mélange) mais les autres paramètres (moyennes, variances, pondérations) seront apprises à partir des exemples.
Évaluation
Les contraintes de ce système jouet étant très fortes (un seul exemple par classe), l'évaluation de votre système se fera par son taux d'erreurs et une matrice de confusion.
Contraintes techniques
Pour réaliser cet exercice pratique, vous n'utiliserez pas de librairies annexes autres que les librairies standard du système et Numpy / Matplotlib. N'oubliez pas que Python peut aussi être utilisé comme un langage de script.