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

Signal Discussion :

detection de pitch


Sujet :

Signal

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut detection de pitch
    salut,j'ai fais un programme qui permet d'extraire la frequence fondamentale
    d'un signal de parole ,d'abord j'ai eliminer le silence pour recuperer l'information utile car je travaille juste sur des voelles ,
    et j'ai opte pour la technique cepstrale pour detecter F0
    mais ce que je comprends pas c'est que lorsque j'applique le programme a mon signal original sans filtrage et sans elimination du silence ca marche
    mais lorsque je l'applique a mon signal utile ca me donne rien
    ,voila mon programme ,svp aidez moi
    je n'arrive pas a voir l'erreur
    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
    clc
    clear all;
    close all;
    %lecture du signal
    [signal,fs] = wavread('ah.wav');
    signal = resample(signal,3000,32000);
    %********************************elimination du silence et filt*********
    % On travaille en mono
    signal = signal(:,1);
    % Affichage du signal
    subplot(311)
    plot(signal,'b')
    title('Signal');
    % Calcul de l'énergie (approximation)
    S = abs(signal);
    m = min(S(:));
    S = S - m;
    M = max(S(:));
    S = S/M;
    e = S.^2;
    % Seuillage de e
    seuil = .01;
    e = e>seuil;
    % Détection des "silences"
    idx(1) = find(e>seuil,1,'first');
    idx(2) = find(e>seuil,1,'last');
    signal(1:idx(1)) = 0;
    signal(idx(2):end) = 0;
    x=signal(idx(1):idx(2));
    subplot(3,1,1),plot(x)
    %la dsp
    nfft=512;
      fe=100000;
      n=1024;
    deltaf=fe/nfft;
    f=[0:(nfft-1)/2]*deltaf;
    xn=fft(x,nfft);
    dsp=xn.*conj(xn)/n;
     
    plot(f,dsp(1:nfft/2)),grid
    %methode cepsctrale:
    ms2=floor(fs*0.002);
    ms10=floor(fs*.01);
    ms20=floor(fs*0.02);
    ms30=floor(fs*0.03);
    % plot waveform
    t=(0:length(x)-1)/fs;
    plot(t,x);
    legend('Waveform');
    xlabel('Time (s)');
    ylabel('Amplitude');
    % get window
    w=hamming(ms30);
    pos=1;
    fx=[];
    while (pos+ms30) <= length(x)
        y=x(pos:pos+ms30-1);
        % do fourier transform of windowed signal
        Y=fft(y.*w);
        % cepstrum is DFT of log spectrum
        C=fft(log(abs(Y)+eps));
        % search for maximum  between 2ms (=500Hz) and 20ms (=50Hz)
        [c,fxval]=max(abs(C(ms2:ms20)));
        fx=[fx fs/(ms2+fxval-1)];
        pos=pos+ms10;
    end;
    % plot FX trace
    t=(0:length(fx)-1)*0.01
    subplot(3,1,2);
    plot(t,fx);
    legend('FX Trace');
    xlabel('Time (s)');
    ylabel('Frequency (Hz)');


    ca m'affiche une matrice vide
    si vous avez un programme qui utilise la methode d'autocorrelation svp donner le moi ,je dois rendre mon rapport cette semaine ,et je n'arrive pas a faire le programme

  2. #2
    Invité
    Invité(e)

Discussions similaires

  1. detection de pitch en utilisant les ondelettes
    Par sarah89 dans le forum Signal
    Réponses: 0
    Dernier message: 10/05/2010, 23h34
  2. Virus detecté au demarrage
    Par Nasky dans le forum Sécurité
    Réponses: 7
    Dernier message: 26/11/2002, 23h07
  3. [VB6] [Lecteur] Détection de disquette
    Par oazar dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/10/2002, 12h37
  4. detection de lignes
    Par the.cable.guy dans le forum Algorithmes et structures de données
    Réponses: 29
    Dernier message: 10/10/2002, 11h15
  5. Detection arret de windows
    Par philippe30 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 21/09/2002, 18h41

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