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 :

Amplitude fichier wave [Débutant]


Sujet :

Signal

  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut Amplitude fichier wave
    Bonjour à tous,

    Lorsque je récupère les données d'un fichier wave à l'aide de la commande waveread(), je remarque que les valeurs de tous les échantillons sont comprises entre -1 et 1.
    J'aimerais revenir aux amplitudes initiales mais je ne sais pas comment faire. Je suppose que cela à un rapport avec l'encodage du fichier, nb de bites etc..

    J'ai cherché sur le forum et sur internet mais je n'ai pas réussi à régler mon probleme

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Salut,

    Tu parles bien de wavread?

    regarde dans la doc, tu peux spécifier le format dans les paramètres (double ou native).
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Oui désolé pour l'orthographe de la fonction. Je parlais bien de wavread().

    J'ai essayer de changer le format en native, j'obtiens des valeurs non comprises entre -1 et 1 (portionnelle à mon signal) mais ces valeurs ne correspondent pas aux valeurs de mon signal initial.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Tu peux nous montrer ce que renvoie WAVFINFO sur ton fichier ?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    wavinfo retourne ca :

    m = Sound (WAV) file
    d = Sound (WAV) file containing: 368384 samples in 1 channel(s)

    et wavread m'indique que Fe =12800 et nbits = 16

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Et MMFILEINFO ?

  7. #7
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    MMFILEINFO retourne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Filename: '1.wav'
            Path: 'C:\Users\Robin\Documents\MATLAB'
        Duration: 28.7800
           Audio: [1x1 struct]
           Video: [1x1 struct]

  8. #8
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Pour mettre mes données à la bonne amplitude, j'ai effectués des relevés d'amplitude sur des pics se trouvant sur mes fichiers initiaux et sur les mêmes pics se trouvant sur les fichiers wav lues avec matlab.
    En effectuant le rapport de ces amplitudes il apparait un coefficient à peu près constant dont la valeur est comprise entre 115 et 120.

    Est-ce que ca éclair quelqu'un ? Quel pourrait être exactement ce coefficient ?

  9. #9
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    je ne comprends pas ton histoire d'amplitude. quelle est la 'bonne' amplitude ?
    en général on considère des dB (par rapport à une référence), pas des valeurs absolues ça n'a pas de sens
    1 correspond à 0dBFS ce qui est tout à fait logique
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    t=(0:1:44100)/44100
    x=sin(2*pi*1000*t);
    wavwrite(x,44100,16,'sin');
    te crée un sinus 1000Hz à 0dBFs, 1s de signal

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par Robin-a Voir le message
    MMFILEINFO retourne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Filename: '1.wav'
            Path: 'C:\Users\Robin\Documents\MATLAB'
        Duration: 28.7800
           Audio: [1x1 struct]
           Video: [1x1 struct]
    Et ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    f = mmfileinfo('1.wav');
     
    f.Audio

  11. #11
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Je vais expliquer sur quoi je travail, ca serait plus clair avec mon histoire d'amplitude

    J'utilise un ordinateur avec une carte d'acquisition intégrée et un logiciel propriétaire qui me permet de mesurer des vibrations. Les amplitudes que je peux lire sur ce logiciel s'exprime en m/s² et correspondent à des accélérations.

    Ce logiciel permet d'exporter le signal sous forme de fichier wav et je suppose que si ils ont choisi ce format c'est qu'il conserve l'intégrité des données.

    J'aimerais donc lorsque je traite mes données sous matlab avoir des données avec la même amplitudes que mon signal initial.

    Et ce que je disais plus haut et que en comparant quelques valeurs entre matlab et le logiciel propriétaire, je me suis aperçu qu'il y avait peut être un coef de proportionnalité constant entre ces deux différentes séries de valeur;


    J'espère qu'avec ces explications mon problème parait un peu plus clair.

  12. #12
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    f = mmfileinfo('1.wav'); 
    f.Audio
    ans = Format: 'PCM'
    NumberOfChannels: 1

    Voilou

  13. #13
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    tout à fait clair
    oui il y a évidemment un coef de proportionnalité... qui dépend des réglages de ton accéléromètre je suppose.
    imagine que tu aies un enregistreur (ce qui revient au même, tu mesures une tension), tu as un réglage de gain (par exemple s'il est mal réglé tu vas saturer et perdre des données).
    mais si tu fais de la mesure (dBmètre), il te faut étalonner ton sonomètre avec un signal à 94dB une fois ton réglage de gain fait.
    il attribue alors une valeur de tension en V à 94dB.
    là je suppose que tu as étalonner ton accéléromètre pour que les valeurs qu'il te renvoie aient un sens.
    à toi alors de savoir ma_ref(m.s-2) correspond à tant de V et mon accéléromètre attribue 0dBFS à une valeur de dB électrique en dBv par exemple (donc tu connais l'équivalent en V)
    cette valeur correspond à 1 dans ce que me retourne Matlab
    je sais pas si j'ai bien été clair mais il n'y a rien de mystérieux là-dedans
    après si tu veux juste le coeff de proportionnalité tu peux effectivement comparer différentes valeurs mais mieux vaut comprendre le pourquoi de la chose

    edit : remplace accéléromètre par carte d'acquisition+logiciel propriétaire.
    tu dois d'ailleurs pouvoir faire l'acquisition directement avec Matlab si tu es motivé

  14. #14
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    J'ai médité ta réponse

    En fait maintenant ce que je me pose comme question c'est :
    Est-ce que le coefficient que je trouve, on vas dire 118, correspond à une façon d'encodé le fichier wav ou est-ce que c'est comme tu le dis une valeur du au calibrage de mon accelero ?

    Car avant d'exporter les données avec mon logiciel, elles étaient déjà à la 'bonnes amplitudes' donc la conversion voltage m/s² était déjà faites. Mon problème est de savoir ce qu'a exporté le logiciel.

    Quand à récupérer les données directement avec matlab, c'est une très bonne idée qui me simplifierait la vie mais je ne sais pas du tout comment m'y prendre et j'ai peur de ne pas avoir le niveau de compétence requis.

  15. #15
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    la question que tu te poses est quel niveau en dBv ou dBV ou dBu mon logiciel fait-il correspondre à 0dBFS.
    ça tu dois l'avoir dans la doc de ton logiciel.
    ou alors c'est un des paramètres de ta carte d'acquisition :
    quand tu acquiers ton signal, tu dois avoir moyen de visualiser l'entrée de ta carte son avec un dBmètre pour voir si tu ne satures pas.
    je sais que sur la carte que j'utilises, il y a différentes sensibilités qui sont exprimées en dBv, la valeur donnée correspondant à 0dBFS
    ensuite je peux étalonner moi-même en envoyant mon signal de référence pour qu'il corresponde à -10 dBFS en jouant sur le gain par exeple.
    je sais alors : -10dBFS corrspond à 94dB, donc 0dBFS à 104dB
    alors dans Matlab, 1 correspond à 104dB, 1/2 à 98dB etc...
    il te faut faire la relation entre m.s-2, V, dBFS, valeur dans Matlab. tout ceci est lié.
    comme je te le disais tu peux très bien utiliser de manière simple le coefficient de proportionnalité que tu as apparemment déjà trouvé

  16. #16
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    ok merci bien, je vais rééplucher la documentation.

    Et sinon pour prendre directement un signal depuis la carte d'acquisition sous matlab comment faut t'il procéder ?
    Il y a des commandes ou des tutoriels qui traitent du sujet parcque le constructeur ne m'aidera pas étant donné qu'il développe des solutions logiciel pour ses cartes.
    (Je travaille avec cet appareil http://www.soundbook.de/e/produkte/soundbook.htm)

  17. #17
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    j'ai jamais pratiqué
    il te faut déjà une carte son asio mais je suppose que c'est le cas puisque tu fais de l'acquisition
    donc se renseigner sur gestion par Matlab de l'asio
    ensuite il y a des fonctions comme audiorecorder je pense
    si tu veux il y a un logiciel open source CNAQ (Guillaume Pellerin) sur le Web (peut-être y-a-t-il également df'autres sources)
    ce logiciel permet d'émettre via la carte son un sweep et de faire une mesure synchronisée pour l'étude de haut-parleurs. peut-être qu'en regardant un peu la source + doc matlab tu t'en sortiras mais ça doit prendre du temps.

    edit : j'avais pas vu le lien... je ne sais pas si c'est possible.

    edit2 : Max. input voltage ± 10 Vpeak je sais pas si c'est exactement la valeur qu'on cherche mais c'est déjà àquelque chose : il doit donner une valeur de 0dBFS à une tension en entrée qui a 10V d'amplitude (peak)

  18. #18
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Merci beaucoup pour ton aide, merci à tout le monde.

    J'ai assez d'informations maintenant pour résoudre mon problème. Il me faudra juste un ou deux jours

  19. #19
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Voila deux jours plus tard, j'ai tout compris

    Lorsque le fichier est ouvert avec la fonction wavread, il faut multiplier toutes les valeurs par 2^(Nbits-1). Cela correspond en fait à une ouverture avec wavread en spécifiant l'option 'native'.
    Je n'avais pas reconnu les valeurs de mon logiciel car ensuite il fallait bien affecter un coefficient qui correspond à la sensibilité de mon accéléromètre.

    Encore merci à tous.

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

Discussions similaires

  1. Lecture de fichiers wave par événements extérieurs
    Par Jean Breil dans le forum Pascal
    Réponses: 0
    Dernier message: 19/09/2007, 01h19
  2. Comparaison de fichiers wave
    Par c-ve dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 31/08/2007, 11h22
  3. fichier wave
    Par miminou dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 04/10/2005, 15h29
  4. fichier wave
    Par miminou dans le forum Windows
    Réponses: 1
    Dernier message: 30/09/2005, 23h42
  5. Commandes MCI : durée fichier wave
    Par eag35 dans le forum MFC
    Réponses: 1
    Dernier message: 11/04/2005, 13h25

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