Isolated Words Speech Recognition

by

 

Basic program to recognize a word based on the analysis of its energy.

voc.m
%tableau contenant les mots  reconnaitre
global mots sons0;
Fe=8000;
L=t*Fe;



%choix de l'action
choix=input('\n1.Ajouter mot\n2.Supprimer mot\n3.Modifier mot\n4.liste des mots disponibles\n5.Modifier intervalle de temps\n6.Activer saisie\n','s');

switch choix
    
    
    
%-------------------------------------------ajouter un mot
    case '1'
%taper le mot souhait
mot=input('\n Nouveau mot?\n','s'); 

if isempty(mot)
     disp('opration annule')
else
mots=strvcat(mots,mot);

%lancer l'enregistrement
disp('appuyer sur entre pour lancer l''enregistrement (1sec)')
pause

%enregitrer le son
son=wavrecord(t*Fe,Fe);

%TFF du son jusque Fe/2
NFFT = 2^nextpow2(L); %puissance de 2 pour optimiser fft
y=fft(son,NFFT);
y=y(1:t*Fe/2);

%puissance
power=y.*conj(y);


%trouver maxima
maximum=max(power);
[pics,indices]=findpeaks(power,'minpeakdistance',25,'sortstr','descend');

%classer frequences
indices=sort(indices);

%stocker paramtres de rfrence
sons0=[sons0 ; indices(1:7)];

disp('mot enregistr')
end




%--------------------------------------------supprimer mot
    case '2'
  index=input('\n Numro du mot  supprimer?\n');
  
  if isempty(index)
      disp('opration annule')

  else
      disp(['   le mot " ',mots(index,:),'" a t supprim'])
  mots(index,:)=[];
  sons0(index,:)=[];
  
  end
 
  
  
  
  
%---------------------------------------------modifier mot
    case '3'
   index=input('\n Numro du mot  modifier?\n');
  
  if isempty(index)
      disp('opration annule')
      
  else
      modif=input('\n Nouveau mot? (Appuyer sur entre pour conserver le mme mot)\n','s');
      
    if isempty(modif)
               
        %lancer l'enregistrement
        disp('appuyer sur entre pour lancer l''enregistrement (1sec)')
        pause
        
        %enregitrer le son et afficher
        son=wavrecord(t*Fe,Fe);
        plot(son);

        %TFF du son jusque Fe/2 et afficher
        fourier=abs(fft(son));
        fourier=fourier(1:t*Fe/2);
        plot(fourier)

        %stocker paramtre de rfrence
        son0=max(fourier);
        sons0(index)=son0;
        
        disp(['enregistrement du mot "',mots(index,:),'" modifi'])
        
    else
         %modifier le mot
         mots(index,:)=[];
         
         mots=strvcat(  mots(1:index-1,:),  modif,    mots(index:length(mots(:,1)),:) ) ;
         disp('Nouveau mot enregistr');
    
                 
         %lancer l'enregistrement
        disp('appuyer sur entre pour lancer l''enregistrement (1sec)')
        pause
        
        %enregitrer le son et afficher
        son=wavrecord(t*Fe,Fe);
        plot(son);

        %TFF du son jusque Fe/2 et afficher
        fourier=abs(fft(son));
        fourier=fourier(1:t*Fe/2);
        plot(fourier)

        %stocker paramtre de rfrence
        son0=max(fourier);
        sons0(index)=son0;
        
        disp(['enregistrement du mot "',mots(index,:),'" modifi'])
     end
  end


  

%---------------------------------------------liste des mots disponibles
    case '4'
if isempty(mots)
    disp('aucun mot enregistr!')

else
    disp('   ')
    disp('Mots disponibles:')


    for i=1:length(mots(:,1))
        disp(['  ',num2str(i),'/. ',mots(i,:)])
    end
end



%----------------------------------------------modifier intervalle de temps
    case '5'
disp(['Intervalle actuel (sec):',num2str(t)])
temps=input('Entrer le nouvel intervalle (sec):');
t=temps;
save data



%----------------------------------------------activer saisie
    case '6'
disp('appuyer sur entre pour commencer l''acquisition')
pause
resultat=[];

for i=1:3
    reco
    beep
end

end

Contact us