TP Parole Reconnaissance de mots isolés

Documents pareils
Dan Istrate. Directeur de thèse : Eric Castelli Co-Directeur : Laurent Besacier

Transmission d informations sur le réseau électrique

Expérience 3 Formats de signalisation binaire

3.2. Matlab/Simulink Généralités

Abdenour Hacine-Gharbi. Sélection de paramètres acoustiques pertinents pour la reconnaissance de la parole

Séance 0 : Linux + Octave : le compromis idéal

Ministère de l Enseignement Supérieur et de la Recherche Scientifique

Introduction à MATLAB R

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

THÈSE. présentée à l Université d Avignon et des Pays de Vaucluse pour obtenir le diplôme de DOCTORAT

Les techniques de multiplexage

Etude et conception d un serveur vocal :

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

REPRÉSENTATIONS ANALYTIQUES AVANCÉES AVEC EANALYSIS

Enregistrement et transformation du son. S. Natkin Novembre 2001

Partie Agir : Défis du XXI ème siècle CHAP 20-ACT EXP Convertisseur Analogique Numérique (CAN)

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

(Quelle identité par la parole?) Thèse. présentée à la section. Systèmes de Communication. par. Dominique Genoud

Python - introduction à la programmation et calcul scientifique

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

TP Modulation Démodulation BPSK

Traitement du signal avec Scilab : la transformée de Fourier discrète

TP: Représentation des signaux binaires. 1 Simulation d un message binaire - Codage en ligne

1.1 L EXPLORATEUR WINDOWS

Chapitre 4 : Édition de fichiers texte - Vi

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

STRICTEMENT CONFIDENTIEL

Chaine de transmission

LABO PROJET : IMPLEMENTATION D UN MODEM ADSL SOUS MATLAB

Extraction de descripteurs musicaux: une approche évolutionniste

COMPTABILITE SAGE LIGNE 30

Mesures en réception télévision

TP1. Outils Java Eléments de correction


ISO/CEI NORME INTERNATIONALE

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

Le contenu de ce manuel peut faire l objet de modifications sans préavis et n engage pas la responsabilité de la société BENTEL SECURITY srl.

Avis: Réservations. Version 2 Page 1

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

COMMUNAUTE ECONOMIQUE ET MONETAIRE DE L AFRIQUE CENTRALE LA COMMISSION

Paramétrisation adaptée de transitoires pour la reconnaissance d instruments de musique

Excel 2007 Niveau 3 Page 1

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

COMPTABILITE SAGE LIGNE 100

Tutorial Terminal Server sous

25/01/05 TD Entrepôt de données IHS / Master ICA

CRÉER DES LEÇONS AVEC L'ÉDITEUR DU LOGICIEL 1000 MOTS POUR APPRENDRE À LIRE EN FRANÇAIS, ANGLAIS ET ALLEMAND

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Vos outils CNED COPIES EN LIGNE GUIDE DE PRISE EN MAIN DU CORRECTEUR. 8 CODA GA WB 01 13

Apprentissage Automatique

FAG Detector II le collecteur et l analyseur de données portatif. Information Technique Produit

Programme awk------introduction rapide

ADMINISTRATION TÉLÉSERVICES

Étude des Corrélations entre Paramètres Statiques et Dynamiques des Convertisseurs Analogique-Numérique en vue d optimiser leur Flot de Test

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

DEMANDE D INFORMATION RFI (Request for information)

Créer le schéma relationnel d une base de données ACCESS

Plateforme de capture et d analyse de sites Web AspirWeb

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Annexe commune aux séries ES, L et S : boîtes et quantiles

Projet audio. Analyse des Signaux ELE2700

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Exemples de Projets SAFI

Chap17 - CORRECTİON DES EXERCİCES

: seul le dossier dossier sera cherché, tous les sousdomaines

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

TP 03 B : Mesure d une vitesse par effet Doppler

Chap III : Les tableaux

WINDOWS SERVER 2003 Maintenance d'active directory V1.0

M1107 : Initiation à la mesure du signal. T_MesSig

Internet et Multimédia Exercices: flux multimédia

La structure du mobile GSM

En quelques mots. 8 millions de profils Opt-In et qualifiés. nos fichiers exclusifs contiennent

Les outils actuels permettent-ils d automatiser la production de cartes? De quels outils dispose-t-on?

Tutoriels. 01 Utiliser Praat. 02 Transcrire sous Praat en utilisant les conventions VALIBEL. Sylviane Bachy. Rédaction octobre 2005

Cours 1 : La compilation

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

CAPTURE DES PROFESSIONNELS

Hélène Lœvenbruck, Christophe Savariaux, Dorothée Lefebvre

Câblage des réseaux WAN.

Objet du document. Version document : 1.00

Couche application. La couche application est la plus élevée du modèle de référence.

Choisir le mode d envoi souhaité. Option 1 : Envoyer un SMS à un nombre réduit de numéros (0 10 )

- Le Diagramme de Gantt. - Le Diagramme de Pert - La Méthode QQCQCCP - La Méthode MOSI - Cahier des charges fonctionnel

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Manipulation de données avec SAS Enterprise Guide et modélisation prédictive avec SAS Enterprise Miner

Indications pour une progression au CM1 et au CM2

Didier Pietquin. Timbre et fréquence : fondamentale et harmoniques

Travaux publics et Services gouvernementaux Canada. Title - Sujet Services de réparation mécanique. Solicitation No. - N de l'invitation W SO53

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Cours 7 : Utilisation de modules sous python

Transcription:

TP Parole Reconnaissance de mots isolés But du TP Le but de ce TP est de réaliser un classifieur de mots parlés. Pour cela on distingue trois grandes étapes : L acquisition des signaux qui constitueront les base de données audio Les pré-traitement des signaux Le codage des mots La reconnaissance On travaillera sur 10 à 15 classes de mots au choix. Il s agira donc de construire un système capable de reconnaître un mot parmi 10 ou 15 mots possibles. De ce point de vue le classifier se range dans la catégorie des reconnaisseurs de parole monolocuteur et à vocabulaire limité. 1/ Prise en main de la boite à outils Le matlab path Ranger la boite à outils dans un répertoire puis décompresser le fichier rdf_3.1.13.zip. Pour vérifier le bon fonctionnement de l installation, taper la commande help rdf qui doit afficher la liste des fonctions de la boite à outils. Les programmes devront être rangés dans un autre répertoire pour ne pas être mélangés avec les fonctions de la boite à outils. La commande help nom_fonction permet d afficher l aide sur la fonction nom_fonction. Acquisition La fonction audioget permet de réaliser l échantillonnage de signaux audio en utilisant un microcasque. Attention a bien spécifier le format de génération du fichier (.mat ou.wav). Il ne suffit pas de nommer un fichier avec l extension.wav pour qu il soit un fichier au format.wav. Pour la suite du TP on demande d utiliser uniquement le format.wav. Affichages Les affichages s effectuent avec la fonction plot de matlab. Cette fonction ne connaît pas la nature des signaux à afficher. Il faut donc spécifier les axes correctement pour avoir des affichages qui aient un sens physique. La syntaxe suivante affiche un signal avec en abscisse le numéro d échantillon : plot(signal); Echelle des temps Pour représenter correctement l axe des temps il faut connaître la fréquence d échantillonnage. Soit par exemple F e = 22050Hz. La période d échantillonnage est le temps séparant deux échantillons successifs. Il est l inverse de la période : T e = 1/F e, soit 1/22050s. Si le nombre total d échantillons est N, le signal aura une durée totale de NT e. L échelle des temps s étendra donc 1

de 0 secondes à NT e = N/F e secondes. Pour représenter cela sur le graphe, on construit un vecteur temps de N échantillons : N = length(signal); t = 0:(N -1); Pour passer à l échelle des temps on écrit : Fe = 22050; Te = 1/Fe; t = t * T_e ; Il reste à afficher : plot(t, Signal); Echelle des fréquences Le calcul du module du spectre d un signal s effectue en utilisant la fonction FFT de matlab pour obtenir le spectre et de la fonction ABS afin de calculer le module : SignalF = abs(fft(signal)); plot(signalf); Pour représenter l axe des fréquences, on défini un vecteur de fréquences, en sachant que la FFT effectue le calcul de la fréquence 0 à la fréquence F e : f = 0:N-1; % nombre d écrantillons en fréquence (le même qu en temps f = f*f_e/(n-1); % passage en échelle fréquences plot(f,signalf); % affichage 2/ Pré-traitements On dispose de la fonction SPEECHGET pour charger un fichier.wav (un mot par fichier). Le signal de parole doit subir avant codage les pré-traitements suivants : Retrait des zones de silence, découpage en trames, préaccentuation et fenetrage de Hamming des trames (fonctions SPEECHGET, SIGPREACC et HAMMING. Suite à ces traitements, on récupère un ensemble de signaux, rangés dans un tableau, et le nombre de signaux correspond au nombre de trames composant le mot. 2.1/ Seuil de détection du signal de parole La fonction SPEECHGET s utilise de la façon suivante : [trames sigcut signal] = speechget( mot.wav, 256, 128, 0.01); Dans cette exemple, le signal au format.wav rangé dans le fichier mot.wav est segmenté en trames de 256 échantillons, entrelacées de 128 échantillons (en général le nombre d échantillons de la trame divisé par deux) et un seuil de 0.01 est appliqué pour séparer les zones de silence de part et d autre. La fonction retourne trois signaux : trames est une matrice qui comprend toutes les trames les unes sous les autres (rangées en ligne). Sa dimension est donc de nb_trame, 256, où nb_trame désigne le nombre de trames extraites. Ce nombre ne peut évidemment pas être connu à l avance. sigcut est le signal dans lequel les zones détectées comme du silence par la fonction ont été remplacées par des 0 ; 2

signal est le signal d origine sans pré-traitements Voici un exemple de traitement qui permet d observer le signal d origine et le signal après segmentation des zones de silence : close all; clear all; [Trames, CutSignal, Signal] = speechget( deux.wav, 256, 128, 0.05);- sound(signal, 22050); sound(cutsignal, 22050); subplot(211); plot(signal); subplot(212); plot(cutsignal); Tester la fonction SPEECHGET sur un signal de parole pour plusieurs valeurs du seuil de détection. On conservera cette valeur de seuil pour la constitution des bases d apprentissage. 2.2/ Pré-traitement des signaux Les fonctions SIGPREACC et HAMMING réalisent respectivement la préaccentuation et le fenêtrage de l ensemble des trames données en argument. Typiquement, en reprenant l exemple précédent : TramesPracc = sigpreacc(trames, 0.97); TramesPraccH = sighamming(tramestracc); Appliquer aux trames extraites à la question précédente les pré-traitements de préaccentuation et de Hamming. En choisissant une trame comportant suffisamment d énergie, comparer sur le plan temporel et sur le plan spectral l impact de ces traitements (Visualiser le module du spectre du signal sur une trame avant et après les prétraitements). Observer la structure formantique des signaux voisés. Pour afficher à la dixième trame, on écrira : plot(tramespracch(10,:)); 3/ Codage 3.1/ Codage des trames La boite à outils dispose d un certain nombre de fonctions de codage : CODLPC qui effectue un codage LPC (Linear Predictive Coding) des trames de parole ; CODLPCC qui effectue un codage LPCC des trames de parole (une extension du code précédent qui permet d estimer les coefficients cepstraux à partir des coefficients LPC ; CODMFCC qui effectue un codage MFCC (Mel Frequency Cepstrum Coding) des trames de parole. Ces fonctions nécessitent de spécifier en argument le nombre de coefficients à générer. La fonction CODMFCC nécessite également de spécifier la fréquence d échantillonnage. Par ailleurs, à partir du codage, les signaux doivent être rangés en colonnes et non plus en ligne. Les lignes suivantes donnent des exemples de codage des trames de paroles générées plus haut (noter l apostrophe permettant de transposer les matrices pour passer les signaux en colonnes : codelpc = CODLPC(TramesPraccH, 12); codelpcc = CODLPCC(TramesPraccH, 12); codemfcc = CODMFCC(TramesPraccH, 12, 16000); Compléter les programmes précédents en ajoutant l étape de codage comme décrit. 3

3.2/ Evolution des codes dans le temps Afin de se rendre compte de la corrélation des coefficients de code avec l évolution du conduit vocal, représenter l évolution dans le temps des coefficients de codage pour chacun des codes LPC, LPCC, MFCC. Pour cela on sélectionne une trame de coefficients, comme plus haut pour les pré-traitements. L exemple suivant montre l évolution dans le temps du premier coefficients de code : plot(codelpc(1,:)); Pour afficher l évolution de l ensemble des codes, attention à penser à afficher la transposée de la matrice de code : plot(codelpc ); Observer l évolution dans le temps d un signal de parole quelconque pour plusieurs valeurs de la taille des trames : 32, 64, 128, 256, 512, et 1024. Qu observe-t-on? Enregistrer un signal de parole pour lequel le conduit vocal reste à peu près stationnaire (AAAAAAA. par exemple). Enregistrer un deuxième signal pour lequel le conduit vocal évolue (BONJOUR par exemple). Observer l évolution des coefficients dans les deux cas de figure. Que peut-on en conclure? Coder le signal BONJOUR avec 32 coefficients de codes et observer l évolution des 32 codes. Sont-ils tous représentatifs de l évolution du signal? Expliquer pourquoi. 3/ Classification 3.1/ Construction des bases Enregistrer deux bases de 10 mots (20 fichiers). La première sera la base des modèles de référence pour l algorithme de classification DTW et la deuxième la base de test. On utilisera par exemple ref1.wav, ref2.wav,, ref10.wav et tst1.wav, tst2.wav, tst10.wav. 3.2/ Codage des bases Ecrire deux fonctions CODEREF( tramesize, offset, ncoeff, code, ) et CODETST( tramesize, offset, ncoeff, code, ) permettant de coder l ensemble des mots des bases de référence et de test en utilisant les paramètres de codage donnés en argument (taille des trames, entrelacement, nombre de coefficients de codage, méthode de codage, ). L argument code pourra être une chaîne de caractère spécifiant la méthode de codage à utiliser (LPC, LPCC, MFCC, ). Les fonctions retourneront les jeux de code de tous les mots rangés dans un tableau de cellules. Utiliser les tableaux de cellules en Matlab. Les tableaux de cellules permettent de ranger des éléments de type différent dans le même tableau. La syntaxe est la suivante : var{1} = 1:100; % on range un tableau de 100 éléments dans la première cellule var{2} = bonjour ; % on range une chaîne de caractères dans la deuxième cellule var{3} = 1.9; % on range un réel dans la troisième cellule Pour accéder aux éléments du tableau de cellules : disp (var{3}) ; % affichage de la chaîne de caractères valeur = var{1}(8); % affectation de la huitième valeur du tableau de 100 éléments 4

Construire des chaînes de caractères. Pour automatiser le traitement on aura intérêt à utiliser la concaténation de chaînes de caractères en procédant ainsi : for i=1:10 filename = [ ref num2str(i).wav ]; = speechget(num2str, ); 3.3/ Reconnaissance par l algorithme DTW La fonction dtw de la boite à outils permet de calculer la distance DTW (Dynamic Time Warping) entre deux matrices de code (LPC, MFCC, ) de taille différente (les mots comportent tous un nombre de trames différent). L algorithme prendra la forme suivante : for i=1:10 for j=1:10 codetest = coderef = % Code du i-ème mot à tester % Code du j-ème mot de référence d(i,j) = dtw(codetest, coderef ); % Calcul de la distance DTW A l issue, la variable d contient l ensemble des distances entre les mots de test et les mots de la base de référence. Ecrire le programme permettant de classer l ensemble des mots de la base de test en utilisant un algorithme de type 1-PPV avec la distance DTW. On commencera en codant les trames sur 8 coefficients. Observer la matrice des distances d obtenue ; Tester le programme en testant les mots de référence avec eux-mêmes. Observer la matrice des distance d obtenue. Visualiser les classes proposées par l algorithme en recherchant les minima des lignes de la matrice d : [dmin, classe] = min(d); disp(d); La fonction score de la boite à outils permet de déterminer le nombre d exemples bien classés relativement au nombre total d exemples : taux = score(classe, 1:10); disp(taux); Comparer les scores lorsque l on diminue ou augmente la dimension du codage (8,12,16, par exemple). Etudier de la même façon l influence de la taille des trames. Tester les différents codages (LPC, LPCC, MFCC) Tester un locuteur pour la base de test différent de celui pour la base de référence. 5