Travaux Pratique

by Joseph Razik, last modified on 2021-09-29

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.