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 :

Comment verifier que les fréquences aux délà de 20Hz et 20KHz sont non audibles


Sujet :

Signal

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut Comment verifier que les fréquences aux délà de 20Hz et 20KHz sont non audibles
    Bonjour;
    Est ce que quelqu'un peut m'aider à mettre en oeuvre le principe que l'oreil humain ne peut pas s'apercevoir que des fréquences entre 20Hz et 20KHz.
    Alors, j'ai pris un signal, j'ai calculé son FFT. puis j'ai supprimé les fréquences au déla de l'intervalle d'audibilité [20H,20KHz].
    Le morceau de code est donné comme suit:
    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
    clear all;
    [xn,fs]=wavread('rooster44100.wav');
    sound(xn,fs);
    % Analyse spectrale
    Xn = fft(xn);
    Xn_shift = fftshift(Xn);
    A=abs(Xn);
    P=angle(Xn);
    N=length(Xn);
    f = (-N/2:N/2-1).*fs/N;
    plot(f,A);
    %% retrouver le son original
    s_orig=real(ifft(A.*exp(i*P)));
    sound(s_orig,fs);
    %supp les freq inf 20 Hz
    a=find(f>-20 & f<20);
    A2=A;
    A2(a)=0;
    figure(1);plot(f,A2);
    s_mod=real(ifft(A2.*exp(i*P)));
    sound(s_mod,fs);
    %supp les freq sup 20 KHz
    A1=A;
    b = find(f>22000 | f<-22000);
    A1(b)=0;
    figure(2);plot(f,A1);
    s_mod=real(ifft(A1.*exp(i*P)));
    sound(s_mod,fs);
    Mais le pb que je sens la modification faite malgré qu'elle a affecté l'intervalle non audible .
    Merci pour toute aide

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Comment vérifier que les fréquences aux delà de 20Hz et 20KHz sont non audibles
    C'est un problème de physiologie et non d'informatique; ça n'a donc rien à voir avec Matlab et, par conséquent, rien à faire dans ce forum.
    Pour résoudre ton problème, tu dois prendre un échantillon représentatif d'individus et déterminer expérimentalement leur audiogramme en les soumettant
    1. à des sons purement sinusoïdaux de différentes fréquences et différentes intensités;
    2. aux mêmes sons avec superposition d'un bruit.

    Jean-Marc Blanc

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    sound(xn,fs);
    b = find(f>22000 | f<-22000);
    AS-tu bien fs >= 44 000 Hz ?

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Bonjour;
    en fait, fs = c'est la fréquence d'échantillonage
    et f=les fréquence dans la fft
    C'est ca la question si j'ai bien compris?

    SVP FR119492, vous voulez dire quoi par 'audiogramme'?
    et aussi j'ai pas compris :
    1. à des sons purement sinusoïdaux de différentes fréquences et différentes intensités;
    2. aux mêmes sons avec superposition d'un bruit.
    Merci d'avance.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    en fait, fs = c'est la fréquence d'échantillonage
    Si tu testes une fréquence de 22000Hz il faut que fs soit > à 2 fois cette valeur ! SHANNON

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Ah oui, j'entends parler du théorème de shanon. Mais j'ai pas une grande idée sur son application.
    oui fs=44100Hz (la fréq d'echatillonage du fichier audio en entrée)>=2fmax
    fmax = étant la fréq maximale 22050Hz
    C'est bien ça?
    Mais ce que je veux verifier c'est le "domaine d'audibilité"
    je veux supprimer les fréquences hors 20-20000Hz dans la fft et vérifier que c'est pas perceptible en audio (malgré que le sifgnal a été modifié mais c'est pas perceptible).
    Merci pour vos conseils et aides.

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    J'ai donné un exemple de filtrage par fft - ifft là :
    http://www.developpez.net/forums/d54...es-signal-wav/

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Merci Phryte. Je vais voir le lien et vous tenir courant de mon avancement.
    Bon travail

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Oui c'est le meme principe presque (malgrés que j'ai pas compris le gabarit )
    Moi je veux aussi supprimer des intervalles de fréq dans la fft. Puis reconstruire le signal pour voir l'effet de cette modification. En fait il parait que le signal n'a pas de fréq dans l'intervalle 0-20Hz et >20KHz
    Je vais voir avec d'autres signaux.
    Merci pour tous vos aides Phryte

  10. #10
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    salut

    je propose

    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
    clear all;
    close all;
     
    fmin = 20;
    fmax = 20000;
     
    [xn,fs]=wavread('son.wav');
    Xn = fftshift(fft(xn));
    N=length(Xn);
    f = (-N/2:N/2-1).*fs/N;
    Xn(find(f >= -fmin & f <= fmin))=0;
    Xn(find(f <= -fmax | f >= fmax))=0;
     
    xn2 = real(ifft(ifftshift(Xn)));
    sound(xn2,fs);
    plot(f,abs(Xn));

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Salut;
    Ben, je ne vois aucune différence avec le code que j'ai mis dans mon premier post.
    peut tu m'expliquer stp c'est quoi l'apport.
    Merci pour ton aide

  12. #12
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    moi j'en vois

    en fait dans ton code tu confonds la version shift et la version non shift

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f = (-N/2:N/2-1).*fs/N; % version shift
    f = [(0:N/2), (-N/2+1:-1)] .*fs/N; % version non shift

  13. #13
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Oui, c'est plus simplifié en fait, et plus clair donc facile à comprendre mais ca donne le meme résultat que mon premier code. Je viens de le tester

  14. #14
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Ah oui, c'est pourquoi j'étais obligé à utiliser les fonctions angle et abs pour m'en sortir. Je connais pas la fonction ifftshift.
    Merci bcp, j'ai remarqué comment t'as utilisé ifft et ifftshift pour retrouver le signal original
    Si tu peux m'aider aussi, je dois tester un signal avec des fréquences dans l'intervalle non audible. comment je pourrais avoir un tel signal
    Merci de toute aide.

  15. #15
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    vous voulez dire quoi par 'audiogramme'
    Tu trouveras toutes les informations sous ce nom dans Wikipedia. Alors, cherche.
    Jean-Marc Blanc

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

Discussions similaires

  1. comment verifier que l'utilisateur a renseigner tous les champ obligatoir d'un formulaire ?
    Par belaggoun2000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 22/11/2010, 16h14
  2. Comment vérifier que la valeur saisie est de type numérique ?
    Par prince_antonio dans le forum ASP.NET
    Réponses: 16
    Dernier message: 20/07/2006, 12h57
  3. comment verifier que l'entrée d'un inputbox est de type numerique
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/07/2006, 22h04
  4. Comment empêcher que les textout se chevauchent ?
    Par kidpaddle2 dans le forum Windows
    Réponses: 52
    Dernier message: 29/06/2006, 23h12
  5. Réponses: 6
    Dernier message: 17/10/2005, 14h38

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