noiz Posté(e) le 31 mai 2009 Partager Posté(e) le 31 mai 2009 Bonjour, j'utilise actullement Matlab pour tenter de faire de la reconnaissance de mots isolés. J'ai trouvé une procédure sur internet que j'ai modifiée et qui fonctionne. JE comprendre tout sauf ce que fais la fonction LPC (linéar predictive coding) et cette fonction joue un role clé puisqu'elle extrait des parametres qui sont ensuite comparés a ceux du mot que je souhaite reconnaitre. Voici le programme: % This code is for creating the library of Linear Predictive Coding (LPC) features. Fs = 10000; % Sampling Frequency (Hz) n = 20; % LPC order Nseconds = 1; % Length of speech signal % List of words (you can add more words to this list but make sure % each word has five characters (if less then pad it with spaces) words = {'mélodie'; 'composant'; 'caisse'; 'voiture'}; % Matrix to store features for each word (rows correspond to words) fw = zeros(size(words,1),n+1); fprintf('You will get one second to say each word.\n\n'); % For each word, get the word from microphone and compute its features for i=1:size(words,1) fprintf('Hit enter and say immediately ''%s'':',words{i}); % pause for enter key junk=input(''); % get a word from microphone y = wavrecord(Nseconds*Fs, Fs, 'double'); % Calculate the features of the word f = lpc(y,n); % Save them in the features matrix fw(i,:) = f; % abs(f) % plot(1:Fs,fft(y)); end % Save features matrix to a file (this file will be loaded into Matlab during speech recognition) save words_lpc.mat Fs n words fw; % Speech Recognition using Linear Predictive Coding (LPC) y=0; % load training data load words_lpc.mat; % ask user to say a word fprintf('You will get one second to say your word.\n\n'); fprintf('Hit enter and say your word immediately:'); % pause for enter key junk=input(''); % get the word from microphone y = wavrecord(1*Fs, Fs, 'double'); % Calculate the features of the word f = lpc(y,n); % Calculate distances between the spoken word and each word in the library d = zeros(1,size(words,1)); for i=1:size(words,1) d(i) = sqrt(sum((f-fw(i,:)).^2)); end % Print the word with minimum feature distance. This word was spoken. [temp1,indx1] = min(d); fprintf('You said: %s\n',words{indx1,:}); J'ai déjà lu l'aide Matlab mais je ne comprend pas ce que fais physiquement cette fonction lpc. Dans l'aide il dise que la fonction calcule des coefficients de prédiction qui dépendent des instants antérieurs de mon signal. MAis je vois pas comment ces coefficients peuvent servir pour reconnaitre et comparer des signaux sonores! Je ne vois pas non plus ce que ces parametres représentent physiquement. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.