IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Interface Graphique de Reconnaissance Automatique de la Parole [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Interface Graphique de Reconnaissance Automatique de la Parole
    Bonsoir a vous mes chers amis,
    Comme je débutes sur Matlab et surtout sur la création d'une interface graphique,je me heurte a un petit problème d'affichage, c'est a dire j'ai crée une interface graphique a partir d'un programme que j'ai trouvé sur internet qu'on retrouve ici http://www.xeberon.net/gaetan/dotcle...-avec-les-mfcc

    Voici l'interface (non finie) que j'ai créé : Nom : Sans titre.png
Affichages : 1104
Taille : 19,8 Ko

    J'ai fais en sorte qu'en appuyant sur le bouton "Création d'un dictionnaire audio" ça crée/implante le dictionnaire de mots avec quoi on va comparer nos mots et en même temps nous dirige vers le choix du mot a tester avec les différents mots du dictionnaire.

    Le mot bouton "play" comme son nom l'indique nous permet d'écouter le mot qu'on a charger et qu'on va tester.

    Maintenant j'ai un probleme avec le bouton "Tester" quand je l'exécutes,mon programme marche sur la console de commande et mon mot a été reconnu, il n'y a pas de probleme la dedans, comme l'atteste l'exemple suivant : Nom : Sans titre.png
Affichages : 764
Taille : 19,8 Ko

    Ce que je veux c'est que mon interface m'affiche a l'aide d'une autre fenetre ou bien un simple texte ce que ma console m'affiche, c'est a dire quand le mot "France" est reconnu un texte s'affiche pour me dire que le mot "France" a été reconnu, avec le même procédé avec les autres mots !

    Si quelqu'un peut m'orienter pour régler ce problème, je lui serai vraiment reconnaissant !

    J'ai essayé de modifier mon programme mais ca n'a pas marcher :/ : Nom : Sans titre.png
Affichages : 1131
Taille : 120,0 Ko

    Merci a l'avance pour votre aide !

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Peux tu nous montrer ton code en le recopiant ici même et en utilisant le bouton Code (#) comme le montre cette animation?



    Cela nous permettra de t'aider plus facilement.

    Peux tu également nous dire où désires tu afficher ton mot? Dans un static text sur ton interface graphique? Si oui, la première étape sera de créer ce static text.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Oups désolé j'avais oublié de recopier mon code
    Voici le code originel qui est utilisé pour le bouton "tester" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    function testword2(test,s,fs,dic)
    % Comparaison d'un mot avec les mots qui sont dans
    % le dictionnaire, en utilisant les MFCC, puis
    % l'algorihme DTW pour la comparaison
    % Entrees:
    %   test : chemin du fichier contenant les
    %              donnees a identifier
    %   s : vecteur accoustique (donnee a identifier)
    %   fs : frequence d'echantillonnage
    %   dic : contenu du dictionnaire genere par la
    %         fonction traindic2()
    % Sortie
    %   neant.
     
    % definition de la distance seuil (au dela, les
    % resultats sont consideres comme faux)
    dseuil=3; % determine experimentalement
    % debut chronometrage
     
    logfile = [pwd '\compmfcc.dat'];
    fid = fopen(logfile,'a');
    fwrite(fid,[test char(13) char(10)],'40*uchar');
     
    t1=clock;
    % calcul des coefficients cepstraux
    % s : signal d'entree
    % fs : frequence d'echantillionnage
    % 12 : nombre de coefficient a creer
    F1=mfcc2(s,fs,12);
    % F1 : matrice des coefficient spectraux
    [a numdic]=size(dic);
    % determination du nombre d'entree dans le
    % dictionnaire
    %(c'est le nombre de colonne de dic):numdic
    dmin=inf; % on place la distance initiale a l'infini
    idx=0; % cette variable contiendra l'index du mot
    % se rapprochant le plus du mot a reconnaitre
     
    disp('Comparaison en cours...');
    tt1=clock;
    % debut de la boucle de comparaison
    for i=1:numdic
        msg = sprintf('..avec %s :',dic(i).name);
        % utilisation de l'algorithme DTW pour comparer
        % dynamiquement les 2 cepstres.
        % b1 : cepstre du signal a identifier
        % dic(i).melspectre : cepstre du ieme element du
        %  dictionnaire
        % Rem : c'est le meme algorithme qu'utilise
        % l'algorithme de comparaison des spectre.
        d=distdtw(F1',dic(i).melspectre');
        tt2=clock;
        msg=sprintf(...
        '%s Distance = %0.2f ; Temps : %0.3f s',...
            msg, d, etime(tt2,tt1));
        disp(msg);
        msg=sprintf(...
        ['%s' char(9) '%0.3f' char(9) '%0.3f' char(13) ...
            char (10)] ,...
            dic(i).name, d, etime(tt2,tt1));
        fwrite(fid, msg, '256*uchar');
        tt1=clock;
        if d<dmin % si la distance trouvee est plus petite
            % que la plus petite des precedentes.
            if (d <= dseuil) % il faut aussi qu'elle soit plus
                % petite que le seuil fixe experimentalement.
                % mise a jour de idx et dmin.
                idx=i;
                dmin=d;
            end
        end
    end
    % fin du chronometrage
    t2=clock;
    msg = sprintf(...
        'Temps de comparaison: %0.3f s',...
        etime(t2,t1));
    disp(msg);
    % conclusion
    if (idx==0)  % si idx n'a pas ete mis à jour, c'est que
        % toutes les distances sont superieures au seuil.
        msg = sprintf(...
            'Pas de ressemblance trouve dans le dictionnaire');
       Dic
    disp(msg);
     
    else  % sinon c'est que le mot a ete reconnu.
        msg = sprintf(...
            'Ce mot se rapproche le plus de %s',...
            dic(idx).name);
        disp(msg);	
    end
    end
    J'ai ajouté une condition dans la partie du code ou il m'affiche sur la console "ce mot ce rapproche le plus de 'France' " par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    function testword2(test,s,fs,dic)
    % Comparaison d'un mot avec les mots qui sont dans
    % le dictionnaire, en utilisant les MFCC, puis
    % l'algorihme DTW pour la comparaison
    % Entrees:
    %   test : chemin du fichier contenant les
    %              donnees a identifier
    %   s : vecteur accoustique (donnee a identifier)
    %   fs : frequence d'echantillonnage
    %   dic : contenu du dictionnaire genere par la
    %         fonction traindic2()
    % Sortie
    %   neant.
    
    % definition de la distance seuil (au dela, les
    % resultats sont consideres comme faux)
    dseuil=3; % determine experimentalement
    % debut chronometrage
    
    logfile = [pwd '\compmfcc.dat'];
    fid = fopen(logfile,'a');
    fwrite(fid,[test char(13) char(10)],'40*uchar');
    
    t1=clock;
    % calcul des coefficients cepstraux
    % s : signal d'entree
    % fs : frequence d'echantillionnage
    % 12 : nombre de coefficient a creer
    F1=mfcc2(s,fs,12);
    % F1 : matrice des coefficient spectraux
    [a numdic]=size(dic);
    % determination du nombre d'entree dans le
    % dictionnaire
    %(c'est le nombre de colonne de dic):numdic
    dmin=inf; % on place la distance initiale a l'infini
    idx=0; % cette variable contiendra l'index du mot
    % se rapprochant le plus du mot a reconnaitre
    
    disp('Comparaison en cours...');
    tt1=clock;
    % debut de la boucle de comparaison
    for i=1:numdic
        msg = sprintf('..avec %s :',dic(i).name);
        % utilisation de l'algorithme DTW pour comparer
        % dynamiquement les 2 cepstres.
        % b1 : cepstre du signal a identifier
        % dic(i).melspectre : cepstre du ieme element du
        %  dictionnaire
        % Rem : c'est le meme algorithme qu'utilise
        % l'algorithme de comparaison des spectre.
        d=distdtw(F1',dic(i).melspectre');
        tt2=clock;
        msg=sprintf(...
        '%s Distance = %0.2f ; Temps : %0.3f s',...
            msg, d, etime(tt2,tt1));
        disp(msg);
        msg=sprintf(...
        ['%s' char(9) '%0.3f' char(9) '%0.3f' char(13) ...
            char (10)] ,...
            dic(i).name, d, etime(tt2,tt1));
        fwrite(fid, msg, '256*uchar');
        tt1=clock;
        if d<dmin % si la distance trouvee est plus petite
            % que la plus petite des precedentes.
            if (d <= dseuil) % il faut aussi qu'elle soit plus
                % petite que le seuil fixe experimentalement.
                % mise a jour de idx et dmin.
                idx=i;
                dmin=d;
            end
        end
    end
    % fin du chronometrage
    t2=clock;
    msg = sprintf(...
        'Temps de comparaison: %0.3f s',...
        etime(t2,t1));
    disp(msg);
    % conclusion
    if (idx==0)  % si idx n'a pas ete mis à jour, c'est que
        % toutes les distances sont superieures au seuil.
        msg = sprintf(...
            'Pas de ressemblance trouve dans le dictionnaire');
       Dic
    disp(msg);
    
    else  % sinon c'est que le mot a ete reconnu.
        msg = sprintf(...
            'Ce mot se rapproche le plus de %s',...
            dic(idx).name);
        disp(msg);
    	if dic(idx).name==France;
    	France;
    	elseif dic(idx).name==Irlande;
    	Irlande;
    	
    end
    end
    J'ai eu l'idée de créer des .fig pour chaque pays pour qu'a chaque fois qu'un pays en particulier a été reconnu une nouvelle fenetre avec un static text s'affiche avec le pays en question, je sais que ce n'est pas la meilleure des méthodes et ce n'est pas très pratique mais j'ai voulu essayer, malheureusement ca n'a pas marché :/

    Et voila le code que j'utilise pour l'interface graphique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    function varargout = RAP1(varargin)
    % RAP1 MATLAB code for RAP1.fig
    %      RAP1, by itself, creates a new RAP1 or raises the existing
    %      singleton*.
    %
    %      H = RAP1 returns the handle to a new RAP1 or the handle to
    %      the existing singleton*.
    %
    %      RAP1('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in RAP1.M with the given input arguments.
    %
    %      RAP1('Property','Value',...) creates a new RAP1 or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before RAP1_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to RAP1_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
     
    % Edit the above text to modify the response to help RAP1
     
    % Last Modified by GUIDE v2.5 26-Apr-2015 21:11:24
     
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @RAP1_OpeningFcn, ...
                       'gui_OutputFcn',  @RAP1_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
     
     
    % --- Executes just before RAP1 is made visible.
    function RAP1_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to RAP1 (see VARARGIN)
     
    % Choose default command line output for RAP1
    handles.output = hObject;
     
     
     
    % Update handles structure
    guidata(hObject, handles);
     
    % UIWAIT makes RAP1 wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
     
     
    % --- Outputs from this function are returned to the command line.
    function varargout = RAP1_OutputFcn(hObject, eventdata, handles) 
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Get default command line output from handles structure
    varargout{1} = handles.output;
     
     
     
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    path1 = uigetdir;
    if ~path1
       return
    end
    % appel de la fonction de creation du dictionnaire
    handles.spectrebook= traindic2(fullfile(path1,'dic'));
    [handles.name,handles.s,handles.fs]=loadsig(fullfile(path1,'test'));
    Dic
     
    handles.output = hObject;
    guidata(hObject, handles);
     
     
     
    % --- Executes on button press in pushbutton3.
    function pushbutton3_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton3 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
     
    % --- Executes on button press in pushbutton4.
    function pushbutton4_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton4 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    open praat.exe
     
     
    % --- Executes on button press in pushbutton5.
    function pushbutton5_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton5 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    [handles.x,handles.Fs,handles.Nb]=wavread(handles.name);
    soundsc(handles.x,handles.Fs);
     
     
     
     
    %
    % --- Executes on button press in pushbutton6.
    function pushbutton6_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton6 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    testword2(handles.name,handles.s,handles.fs,handles.spectrebook);
    J’espère que je me suis bien exprimé et que vous allez pouvoir m'orienter ! Merci en avance pour votre précieuse aide !

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Je pense que le plus facile est de créer un objet static text dans ton interface graphique. Pour ce faire, tu peux le faire directement via le GUIDE, sinon en utilisant la fonction uicontrol.

    Une fois que tu as créer ton static text, qui a par exemple pour tag: text1, tu peux faire de la sorte (voir la fin du code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    function testword2(test,s,fs,dic)
    % Comparaison d'un mot avec les mots qui sont dans
    % le dictionnaire, en utilisant les MFCC, puis
    % l'algorihme DTW pour la comparaison
    % Entrees:
    %   test : chemin du fichier contenant les
    %              donnees a identifier
    %   s : vecteur accoustique (donnee a identifier)
    %   fs : frequence d'echantillonnage
    %   dic : contenu du dictionnaire genere par la
    %         fonction traindic2()
    % Sortie
    %   neant.
     
    % definition de la distance seuil (au dela, les
    % resultats sont consideres comme faux)
    dseuil=3; % determine experimentalement
    % debut chronometrage
     
    logfile = [pwd '\compmfcc.dat'];
    fid = fopen(logfile,'a');
    fwrite(fid,[test char(13) char(10)],'40*uchar');
     
    t1=clock;
    % calcul des coefficients cepstraux
    % s : signal d'entree
    % fs : frequence d'echantillionnage
    % 12 : nombre de coefficient a creer
    F1=mfcc2(s,fs,12);
    % F1 : matrice des coefficient spectraux
    [a numdic]=size(dic);
    % determination du nombre d'entree dans le
    % dictionnaire
    %(c'est le nombre de colonne de dic):numdic
    dmin=inf; % on place la distance initiale a l'infini
    idx=0; % cette variable contiendra l'index du mot
    % se rapprochant le plus du mot a reconnaitre
     
    disp('Comparaison en cours...');
    tt1=clock;
    % debut de la boucle de comparaison
    for i=1:numdic
        msg = sprintf('..avec %s :',dic(i).name);
        % utilisation de l'algorithme DTW pour comparer
        % dynamiquement les 2 cepstres.
        % b1 : cepstre du signal a identifier
        % dic(i).melspectre : cepstre du ieme element du
        %  dictionnaire
        % Rem : c'est le meme algorithme qu'utilise
        % l'algorithme de comparaison des spectre.
        d=distdtw(F1',dic(i).melspectre');
        tt2=clock;
        msg=sprintf(...
        '%s Distance = %0.2f ; Temps : %0.3f s',...
            msg, d, etime(tt2,tt1));
        disp(msg);
        msg=sprintf(...
        ['%s' char(9) '%0.3f' char(9) '%0.3f' char(13) ...
            char (10)] ,...
            dic(i).name, d, etime(tt2,tt1));
        fwrite(fid, msg, '256*uchar');
        tt1=clock;
        if d<dmin % si la distance trouvee est plus petite
            % que la plus petite des precedentes.
            if (d <= dseuil) % il faut aussi qu'elle soit plus
                % petite que le seuil fixe experimentalement.
                % mise a jour de idx et dmin.
                idx=i;
                dmin=d;
            end
        end
    end
    % fin du chronometrage
    t2=clock;
    msg = sprintf(...
        'Temps de comparaison: %0.3f s',...
        etime(t2,t1));
    disp(msg);
    % conclusion
    if (idx==0)  % si idx n'a pas ete mis à jour, c'est que
        % toutes les distances sont superieures au seuil.
        msg = sprintf(...
            'Pas de ressemblance trouve dans le dictionnaire');
       Dic
    disp(msg);
     
    else  % sinon c'est que le mot a ete reconnu.
        msg = sprintf(...
            'Ce mot se rapproche le plus de %s',...
            dic(idx).name);
        disp(msg);
        set(handles.text1,'String',dic(idx).name) 	
    end
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Rebonjour,

    J'ai fais exactement ce que vous m'avez demander de faire et j'ai eu une erreur qui s'est affichée sur ma console :

    Nom : Sans titre.png
Affichages : 1214
Taille : 21,6 Ko


    Et voila le code modifié(voir fin du code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    function testword2(test,s,fs,dic)
    % Comparaison d'un mot avec les mots qui sont dans
    % le dictionnaire, en utilisant les MFCC, puis
    % l'algorihme DTW pour la comparaison
    % Entrees:
    %   test : chemin du fichier contenant les
    %              donnees a identifier
    %   s : vecteur accoustique (donnee a identifier)
    %   fs : frequence d'echantillonnage
    %   dic : contenu du dictionnaire genere par la
    %         fonction traindic2()
    % Sortie
    %   neant.
     
    % definition de la distance seuil (au dela, les
    % resultats sont consideres comme faux)
    dseuil=3; % determine experimentalement
    % debut chronometrage
     
    logfile = [pwd '\compmfcc.dat'];
    fid = fopen(logfile,'a');
    fwrite(fid,[test char(13) char(10)],'40*uchar');
     
    t1=clock;
    % calcul des coefficients cepstraux
    % s : signal d'entree
    % fs : frequence d'echantillionnage
    % 12 : nombre de coefficient a creer
    F1=mfcc2(s,fs,12);
    % F1 : matrice des coefficient spectraux
    [a numdic]=size(dic);
    % determination du nombre d'entree dans le
    % dictionnaire
    %(c'est le nombre de colonne de dic):numdic
    dmin=inf; % on place la distance initiale a l'infini
    idx=0; % cette variable contiendra l'index du mot
    % se rapprochant le plus du mot a reconnaitre
     
    disp('Comparaison en cours...');
    tt1=clock;
    % debut de la boucle de comparaison
    for i=1:numdic
        msg = sprintf('..avec %s :',dic(i).name);
        % utilisation de l'algorithme DTW pour comparer
        % dynamiquement les 2 cepstres.
        % b1 : cepstre du signal a identifier
        % dic(i).melspectre : cepstre du ieme element du
        %  dictionnaire
        % Rem : c'est le meme algorithme qu'utilise
        % l'algorithme de comparaison des spectre.
        d=distdtw(F1',dic(i).melspectre');
        tt2=clock;
        msg=sprintf(...
        '%s Distance = %0.2f ; Temps : %0.3f s',...
            msg, d, etime(tt2,tt1));
        disp(msg);
        msg=sprintf(...
        ['%s' char(9) '%0.3f' char(9) '%0.3f' char(13) ...
            char (10)] ,...
            dic(i).name, d, etime(tt2,tt1));
        fwrite(fid, msg, '256*uchar');
        tt1=clock;
        if d<dmin % si la distance trouvee est plus petite
            % que la plus petite des precedentes.
            if (d <= dseuil) % il faut aussi qu'elle soit plus
                % petite que le seuil fixe experimentalement.
                % mise a jour de idx et dmin.
                idx=i;
                dmin=d;
            end
        end
    end
    % fin du chronometrage
    t2=clock;
    msg = sprintf(...
        'Temps de comparaison: %0.3f s',...
        etime(t2,t1));
    disp(msg);
    % conclusion
    if (idx==0)  % si idx n'a pas ete mis à jour, c'est que
        % toutes les distances sont superieures au seuil.
        msg = sprintf(...
            'Pas de ressemblance trouve dans le dictionnaire');
       Dic
    disp(msg);
     
    else  % sinon c'est que le mot a ete reconnu.
        msg = sprintf(...
            'Ce mot se rapproche le plus de %s',...
            dic(idx).name);
        disp(msg);
    	set(handles.rec,'String',dic(idx).name);
     
    end
    end
    A savoir que le Tag de mon static text est "rec" !
    PS : c'est la même erreur que m'affiche la console quand j'ai utilisé la méthode qui permet d'ouvrir une autre fenêtre .fig

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Cette fonction est à inclure dans le script associé à ton IHM.

    Tu dois bien avoir un .m lié à ton .fig de ton interface graphique où se trouve une initialisation non?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Tu parles de ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    function varargout = RAP1(varargin)
    % RAP1 MATLAB code for RAP1.fig
    %      RAP1, by itself, creates a new RAP1 or raises the existing
    %      singleton*.
    %
    %      H = RAP1 returns the handle to a new RAP1 or the handle to
    %      the existing singleton*.
    %
    %      RAP1('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in RAP1.M with the given input arguments.
    %
    %      RAP1('Property','Value',...) creates a new RAP1 or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before RAP1_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to RAP1_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
     
    % Edit the above text to modify the response to help RAP1
     
    % Last Modified by GUIDE v2.5 27-Apr-2015 16:04:30
     
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @RAP1_OpeningFcn, ...
                       'gui_OutputFcn',  @RAP1_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
     
     
    % --- Executes just before RAP1 is made visible.
    function RAP1_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to RAP1 (see VARARGIN)
     
    % Choose default command line output for RAP1
    handles.output = hObject;
     
     
     
    % Update handles structure
    guidata(hObject, handles);
     
    % UIWAIT makes RAP1 wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
     
     
    % --- Outputs from this function are returned to the command line.
    function varargout = RAP1_OutputFcn(hObject, eventdata, handles) 
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Get default command line output from handles structure
    varargout{1} = handles.output;
     
     
     
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    path1 = uigetdir;
    if ~path1
       return
    end
    % appel de la fonction de creation du dictionnaire
    handles.spectrebook= traindic2(fullfile(path1,'dic'));
    [handles.name,handles.s,handles.fs]=loadsig(fullfile(path1,'test'));
    Dic
     
    handles.output = hObject;
    guidata(hObject, handles);
     
     
     
    % --- Executes on button press in pushbutton4.
    function pushbutton4_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton4 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    open praat.exe
     
     
    % --- Executes on button press in pushbutton5.
    function pushbutton5_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton5 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    [handles.x,handles.Fs,handles.Nb]=wavread(handles.name);
    soundsc(handles.x,handles.Fs);
     
     
     
     
    %
    % --- Executes on button press in pushbutton6.
    function pushbutton6_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton6 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    testword2(handles.name,handles.s,handles.fs,handles.spectrebook);
    RAP1 c'est justement la fonction qui m’exécute ça : Nom : Sans titre.png
Affichages : 786
Taille : 26,6 Ko

    j'ai incorporé ce que tu m'as dis de faire dans le script de la fonction testword2.m qui permet de réaliser le test de reconnaissance!

    dois-je définir ma variable handles.rec quelque part dans le script ?

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Non, par contre il faut que tu envoies en entrée de ta fonction testword2 la variable handles
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci énormément Gooby ça marche du tonnerre : Nom : Sans titre.png
Affichages : 851
Taille : 19,3 Ko
    Ca fait des jours que je travailles dessus et ça me parait simple maintenant haha, en tout ca merci d'avoir prit le temps de m'aider !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. reconnaissance automatique de la parole
    Par myriamee dans le forum Signal
    Réponses: 0
    Dernier message: 10/12/2014, 18h18
  2. Réponses: 1
    Dernier message: 12/11/2010, 13h13
  3. test automatique d'interface graphique SWT
    Par caro_caro dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 03/10/2008, 09h32
  4. Mise à jour automatique de l'interface graphique
    Par Christophe_stevenin dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 11/03/2008, 13h56
  5. Réponses: 2
    Dernier message: 27/05/2007, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo