Reconaissance Parole
Reconaissance Parole
Reconaissance Parole
But du TP
Le but de ce TP est de raliser un classieur de mots parls. Pour cela on distingue trois grandes tapes : Lacquisition des signaux qui constitueront les base de donnes audio Les pr-traitement des signaux Le codage des mots La reconnaissance On travaillera sur 10 15 classes de mots au choix. Il sagira donc de construire un systme capable de reconnatre un mot parmi 10 ou 15 mots possibles. De ce point de vue le classier se range dans la catgorie des reconnaisseurs de parole monolocuteur et vocabulaire limit.
Acquisition
La fonction audioget permet de raliser lchantillonnage de signaux audio en utilisant un microcasque. Attention a bien spcier le format de gnration du chier (.mat ou .wav). Il ne sut pas de nommer un chier avec lextension .wav pour quil soit un chier au format .wav. Pour la suite du TP on demande dutiliser uniquement le format .wav.
Achages
Les achages seectuent avec la fonction plot de matlab. Cette fonction ne connat pas la nature des signaux acher. Il faut donc spcier les axes correctement pour avoir des achages qui aient un sens physique. La syntaxe suivante ache un signal avec en abscisse le numro dchantillon : plot(Signal); Echelle des temps Pour reprsenter correctement laxe des temps il faut connatre la frquence dchantillonnage. Soit par exemple Fe = 22050Hz . La priode dchantillonnage est le temps sparant deux chantillons successifs. Il est linverse de la priode : Te = 1/Fe , soit 1/22050s. Si le nombre total dchantillons est N , le signal aura une dure totale de N Te . Lchelle des temps stendra donc
de 0 secondes N Te = N/Fe secondes. Pour reprsenter cela sur le graphe, on construit un vecteur temps de N chantillons : N = length(Signal); t = 0:(N -1); Pour passer lchelle des temps on crit : Fe = 22050; Te = 1/Fe; t = t * T_e ; Il reste acher : plot(t, Signal); Echelle des frquences Le calcul du module du spectre dun signal seectue en utilisant la fonction FFT de matlab pour obtenir le spectre et de la fonction ABS an de calculer le module : SignalF = abs(fft(Signal)); plot(SignalF); Pour reprsenter laxe des frquences, on dni un vecteur de frquences, en sachant que la FFT eectue le calcul de la frquence 0 la frquence Fe : f = 0:N-1; % nombre dcrantillons en frquence (le mme quen temps f = f*F_e/(N-1); % passage en chelle frquences plot(f,SignalF); % affichage
2/ Pr-traitements
On dispose de la fonction SPEECHGET pour charger un chier .wav (un mot par chier). Le signal de parole doit subir avant codage les pr-traitements suivants : Retrait des zones de silence, dcoupage en trames, praccentuation et fenetrage de Hamming des trames (fonctions SPEECHGET, SIGPREACC et HAMMING. Suite ces traitements, on rcupre un ensemble de signaux, rangs dans un tableau, et le nombre de signaux correspond au nombre de trames composant le mot.
signal est le signal dorigine sans pr-traitements Voici un exemple de traitement qui permet dobserver le signal dorigine et le signal aprs 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 dtection. On conservera cette valeur de seuil pour la constitution des bases dapprentissage.
3/ Codage
3.1/ Codage des trames
La boite outils dispose dun certain nombre de fonctions de codage : CODLPC qui eectue un codage LPC (Linear Predictive Coding) des trames de parole ; CODLPCC qui eectue un codage LPCC des trames de parole (une extension du code prcdent qui permet destimer les coecients cepstraux partir des coecients LPC ; CODMFCC qui eectue un codage MFCC (Mel Frequency Cepstrum Coding) des trames de parole. Ces fonctions ncessitent de spcier en argument le nombre de coecients gnrer. La fonction CODMFCC ncessite galement de spcier la frquence dchantillonnage. Par ailleurs, partir du codage, les signaux doivent tre rangs en colonnes et non plus en ligne. Les lignes suivantes donnent des exemples de codage des trames de paroles gnres plus haut (noter lapostrophe permettant de transposer les matrices pour passer les signaux en colonnes : codelpc = CODLPC(TramesPraccH, 12); codelpcc = CODLPCC(TramesPraccH, 12); codemfcc = CODMFCC(TramesPraccH, 12, 16000); Complter les programmes prcdents en ajoutant ltape de codage comme dcrit. 3
3/ Classication
3.1/ Construction des bases
Enregistrer deux bases de 10 mots (20 chiers). La premire sera la base des modles de rfrence pour lalgorithme de classication DTW et la deuxime la base de test. On utilisera par exemple ref1.wav, ref2.wav, ..., ref10.wav et tst1.wav, tst2.wav, ... tst10.wav.
Construire des chanes de caractres. Pour automatiser le traitement on aura intrt utiliser la concatnation de chanes de caractres en procdant ainsi : for i=1:10 filename = [ref num2str(i) .wav ]; ... = speechget(num2str, ...); ... end;