Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

Enveloppe temporelle d'un signal



  1. #1
    kron

    Enveloppe temporelle d'un signal


    ------

    Bonjour à tous !

    Je viens demander de l'aide pour un problème un peu insoluble pour moi...
    Voila la situation :
    Je fais en ce moment l'étude de sons, et j'aimerais extraire l'enveloppe temporelle (non sinusoïdale, dépendant du temps) d'un signal. Donc, en somme, j'ai l'équivalent d'une fonction périodique modulée en amplitude.

    Le hic, c'est que je ne sais pas trop comment faire pour extraire ladite enveloppe.

    J'ai trouvé sur le net une première possibilité "pas trop complexe" en filtrant les harmoniques et en appliquant la transformée de Hilbert sur le signal de sortie, qui devrait alors être une simple sinusoïde modulée.

    Cependant, n'étant pas très familier de cette transformation, et compte tenu du caractère artificiel du filtre "toutes les harmoniques sauf la fondamentale" (car il s'agit, je pense, de juste filtrer les fondamentales pour ne pas risquer de détériorer les infos concernant l'enveloppe, et mon son comporte a priori une infinité d'harmoniques), je ne sais pas si c'est la meilleure solution.

    Néanmoins, je n'ai pas pu trouver (ou comprendre) des procédés plus simples et moins longs, aussi du point de vue vitesse d'éxécution que du point de vue compréhension.

    J'en appelle donc à votre aide, si possible.

    Merci d'avance (beaucoup beaucoup).


    PS : pour informations, je suis actuellement en prépa en filière PSI.

    -----
    Life is music !

  2. Publicité
  3. #2
    b@z66

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    J'ai trouvé sur le net une première possibilité "pas trop complexe" en filtrant les harmoniques et en appliquant la transformée de Hilbert sur le signal de sortie, qui devrait alors être une simple sinusoïde modulée.

    Cependant, n'étant pas très familier de cette transformation, et compte tenu du caractère artificiel du filtre "toutes les harmoniques sauf la fondamentale" (car il s'agit, je pense, de juste filtrer les fondamentales pour ne pas risquer de détériorer les infos concernant l'enveloppe, et mon son comporte a priori une infinité d'harmoniques), je ne sais pas si c'est la meilleure solution.

    Néanmoins, je n'ai pas pu trouver (ou comprendre) des procédés plus simples et moins longs, aussi du point de vue vitesse d'éxécution que du point de vue compréhension.

    J'en appelle donc à votre aide, si possible.

    Merci d'avance (beaucoup beaucoup).


    PS : pour informations, je suis actuellement en prépa en filière PSI.
    Je réponds à ta question concernant la démodulation de ton signal (car il s'agit de ça). Il suffit pour cela de faire une démodulation cohérente de ton signal: pour cela tu le multiplie par cos(wt+phi(t)) (la porteuse d'émission), w étant la fréquence de la porteuse et tu filtre passe-bas ensuite à la fréquence de la porteuse ou même plus bas. Le problème avec cette technique linéaire, c'est que tu dois connaitre la phase de départ de ta porteuse phi(t) pour pouvoir synchroniser avec ta porteuse en réception et corriger les éventuelles dérives de phase. En électronique, en général, on utilise un système à PLL pour retrouver cette phase (ou même on utilise un détecteur crête, ce qui a au moins le mérite d'éviter de se casser la tête) . Si tu veux un traitement uniquement "logiciel", tu peux réaliser la même opération en analysant sur une certaine durée le signal démodulée de la manière suivante: en multipliant ton signal modulé par sin(wt+phi(t)), et en filtrant passe-bas comme précédemment, tu dois théoriquement avoir un signal constamment nul en sortie si phi(t) est bien choisi. S'il ne l'est pas, il faut le choisir de façon à minimiser ce signal. Tu peux répéter cette opération à intervalles de temps régulier de façon à s'assurer que la phase de la porteuse de démodulation est bonne mais ce n'est pas non plus la peine de le faire trop souvent (perte de temps et de puissance de calcul) même si tu peux toujours partir des précédents résultats pour accélérer les calculs. Tu réalises en quelques sortes un asservissement adaptatif de la phase de ta porteuse de démodulation.

    PS: les techniques de démodulations avec des filtres de hilbert sont plutôt pratiques, il me semble, dans le cas des signaux modulés BLU mais j'aimerai avoir confirmation.

    PS2: Au passage, j'en profite pour me fêter mon millième message sur FS!!!
    Dernière modification par b@z66 ; 24/02/2007 à 17h33.

  4. #3
    Chip

    Re : Enveloppe temporelle d'un signal

    Ou encore (plus simple a priori) :

    - retirer la valeur moyenne du signal (elle devrait être nulle mais la mesure peut introduire un biais)
    - élever le signal au carré
    - multiplier par deux
    - appliquer un filtre passe pas (avec une fréquence max inférieure aux fréquences sonores enregistrées)

  5. #4
    b@z66

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par Chip Voir le message
    Ou encore (plus simple a priori) :

    - retirer la valeur moyenne du signal (elle devrait être nulle mais la mesure peut introduire un biais)
    - élever le signal au carré
    - multiplier par deux
    - appliquer un filtre passe pas (avec une fréquence max inférieure aux fréquences sonores enregistrées)
    Effectivement, les méthodes non linéaires sont bien plus simples et efficaces.

    PS: ne pas oublier de reprendre la racine carré à la fin, me semble t-il. Est ce que cela est bon pour tout les taux de modulation (à l'image du détecteur-crête)?
    Dernière modification par b@z66 ; 24/02/2007 à 18h20.

  6. A voir en vidéo sur Futura
  7. #5
    Chip

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par b@z66 Voir le message
    ne pas oublier de reprendre la racine carré à la fin, me semble t-il
    Effectivement j'ai oublié de prendre la racine carrée à la fin...

  8. #6
    kron

    Re : Enveloppe temporelle d'un signal

    Merci beaucoup pour vos réponses, je commençais à désespéré un peu.

    Je vais essayer ça dès que possible. Néanmoins j'aurais encore deux petites questions :

    1/
    Ou encore (plus simple a priori) :

    - retirer la valeur moyenne du signal (elle devrait être nulle mais la mesure peut introduire un biais)
    - élever le signal au carré
    - multiplier par deux
    - appliquer un filtre passe pas (avec une fréquence max inférieure aux fréquences sonores enregistrées)
    - prendre la racine carrée du résultat
    Je ne suis pas sûr de comprendre ce procédé... Que récupère t-on à la fin du traitement ? Car la modulation de mon signal n'est pas nécessairement périodique (elle ne l'est même pas du tout)...


    2/ Est ce que vous pourriez m'expliquer ce qu'est un filtre de Hilbert ? Et la différence entre un signal PLL et BLU ? Je connais le procédé BLU qui consiste à ne mettre qu'une seule bande latérale... mais PLL ?
    je dois préciser que je compte trouver l'enveloppe d'une note jouée au piano par exemple, et que les signaux BLU ne me semblent pas appliquables.

    Merci beaucoup, d'avance.
    Life is music !

  9. Publicité
  10. #7
    b@z66

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    Merci beaucoup pour vos réponses, je commençais à désespéré un peu.

    Je vais essayer ça dès que possible. Néanmoins j'aurais encore deux petites questions :

    1/

    Je ne suis pas sûr de comprendre ce procédé... Que récupère t-on à la fin du traitement ? Car la modulation de mon signal n'est pas nécessairement périodique (elle ne l'est même pas du tout)...
    Que veux tu dire par "pas du tout périodique"? La porteuse qui module ton signal aurait-elle une fréquence qui n'est pas très "stable"? La méthode qu'a proposé Chip est tout à fait valable même si cette porteuse n'est pas très stable, le seul problème avec c'est que tu obtiens une forme entièrement positive (le fait de prendre la racine carrée). En conséquence, si ton signal d'origine était positif et négatif, le signal démodulé sera lui le signal "redréssé" du signal d'origine. Dans ton cas, appliqué au son, cela ne devrait pas posé de problème. Pour ce qui est de la compréhension de la démarche, je te laisse cette formule de trigo.

    cos(wt)2=(1+cos(2wt))/2,

    Dans le cas d'un signal modulé a(t).cos(wt), je te laisse voir la possible utilité.

    2/ Est ce que vous pourriez m'expliquer ce qu'est un filtre de Hilbert ? Et la différence entre un signal PLL et BLU ?
    Je connais le procédé BLU qui consiste à ne mettre qu'une seule bande latérale... mais PLL ?
    Je précisais que la PLL était un dispositif électronique permettant de reconstituer la porteuse du signal reçu, on a besoin de faire cette opération pour faire des démodulations cohérentes (besoin de synchroniser le porteuse de démodulation).

    je dois préciser que je compte trouver l'enveloppe d'une note jouée au piano par exemple, et que les signaux BLU ne me semblent pas appliquables.
    C'est bien pour cela que utiliser des filtres de Hilbert me paraissait inutile. Pour ce qui de la définition de ces filtres, il faut d'abord s'intéresser au traitement du signal en général.

    http://fr.wikipedia.org/wiki/Transfo...A9e_de_Hilbert

    Merci beaucoup, d'avance.[/QUOTE]

  11. #8
    kron

    Re : Enveloppe temporelle d'un signal

    Merci pour vos réponses, j'y vois un peu plus clair.
    Néanmoins, voilà quelques réponses de ma part, pour clarifier un peu lé discussion (j'ai l'impression de m'être très mal exprimé, et de ce fait, je n'ai pas obtenues toutes les réponses que j'espérais encore désolé...)

    La porteuse qui module ton signal aurait-elle une fréquence qui n'est pas très "stable"?
    En fait... Je dois traiter deux signaux.
    L'un est un signal périodique modulé par une porteuse de fréquence que je dois déterminer (car à priori non connue). De ce fait j'ai du mal à utliser la démodulation synchrone... Je n'arrive pas à voir comment jouer sur la phase et la fréquence pour obtenir une situation correcte.

    Le second est un signal périodique "modulé" par une enveloppe non périodique (peut-être du genre de l'exponentielle décroissante... et encore ce n'est qu'un hypothèse...) du genre f(t).s(t)

    Mon objectif serait d'extraire les enveloppes, et uniquement les enveloppes en ne connaissant ni leur expression, ni même la phase à l'origine.
    L'intérêt d'utiliser la transformée de Hilbert était qu'on pouvait trouver ce que je veux sans connaissance de l'expression de l'enveloppe, et on peut éxécuter "facilement" la transformée inverse pour remoduler mon signal.

    Et d'un point de vue numérique, le calcul ne devrait pas vraiment poser de problème avec un logiciel de calcul formel. Ou du moins je le pense...


    C'est bien pour cela que utiliser des filtres de Hilbert me paraissait inutile. Pour ce qui de la définition de ces filtres, il faut d'abord s'intéresser au traitement du signal en général.

    http://fr.wikipedia.org/wiki/Transfo...A9e_de_Hilbert
    Oui, merci, j'avais déjà trouvé cette page, et le modèle à bande étroite qui y est proposé est intéréssant, mais insuffisant dans le cadre de la modélisation que j'ai adopté (enveloppe non périodique).


    Merci encore pour votre aide.

    PS : j'espère que je n'ai pas trop dit de bêtises... Le traitement de signal est assez nouveau pour moi alors je manque parfois de connaissances basiques et de précision dans mes pensées.
    Life is music !

  12. #9
    Chip

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    Je ne suis pas sûr de comprendre ce procédé... Que récupère t-on à la fin du traitement ? Car la modulation de mon signal n'est pas nécessairement périodique (elle ne l'est même pas du tout)...
    Voici une illustration graphique de la procédure, avec un signal durant 0,5 seconde, dont la fréquence est autour de 200Hz et l'amplitude modulée. Les fréquences et amplitudes choisies sont des fonctions quelconques, juste pour donner un exemple.

    0 : fréquence instantanée du signal
    1 : amplitude du signal
    2 : le signal lui-même, calculé à partir de 1 et 2
    3 : le signal au carré et multiplié par deux
    4 : application d'un filtre passe-bas (fréquence de coupure 100Hz), puis racine carrée. La fonction obtenue est en vert. En noir est superposée l'amplitude (fonction 1). On voit qu'on a bien récupéré la modulation d'amplitude (en valeur absolue, mais dans ce cas il n'y avait de tout façon que des valeurs positives). Les artefacts sur les bords sont dus au filtrage.
    Fichiers attachés Fichiers attachés

  13. #10
    kron

    Re : Enveloppe temporelle d'un signal

    Wow, ça a l'air de drôlement bien marcher...
    Et ça m'éviterait un tas de complication avec M. Hilbert... J'avoue que je commençais à trouver ça coriace

    Reste à démontrer que ça marche, mais je suppose que je peux le faire moi même.

    Question subsidiaire (désolé je suis un peu exigeant ^^) : comment, dans Maple, assigner à une fonction un ensemble de valeurs discrètes ? (en gros lisser suffisamment pour faire un peu d'analyse mathématique formelle dessus...)

    Merci encore pour votre aide.
    Life is music !

  14. #11
    kron

    Re : Enveloppe temporelle d'un signal

    Euh...
    Rebonsoir.
    Donc j'ai bien compris le truc pour la méthode non linéaire proposée, mais il me reste un petit soucis :
    Je voulais savoir si toutes les modulations en amplitudes pouvaient être décrites en disant que c'est une fonction périodique multipliée par une autre fonction "modulante".
    Si c'est ça, faire passer mon enveloppe et mon signal avant modulation dans un multiplieur me redonnera le signal original (ou presque), n'est ce pas ?

    En fait mon hic c'est que l'utilisation des transformées de Hilbert me permettait d'effectuer la procédure inverse pour remoduler de manière analytique mon signal.
    La méthode proposée par Chip me semble plutôt expérimentale. Mais ça devrait marcher.


    Donc je résume un peu :
    - On prend un signal.
    - On enlève la composante continue, avec un filtre passe-haut à fréquence de coupure très basse, par exemple.
    - On élève au carré, avec un multiplieur
    - On multiplie par deux, en utilisant un AO non iverseur de gain 2
    - On filtre pour enlever toutes les harmoniques
    - On prend la racine carrée (là, je vois plus comment faire...)

    Me reste donc a trouver comment prendre la racine carrée. Et aussi comment obtenir le signal, car je ne connais pas de dispositif de labo permettant de convertir un signal sonore en un signal électrique adaptable sur les circuits de labo...
    Je peux toujours effectuer les opérations formellement, avec Maple, mais je ne sais pas ce que ça peut donner avec la discrétisation des signaux...
    Bref j'ai encore un peu de route à faire

    Merci à vous deux de m'aider

    Mes sincères salutations.
    Life is music !

  15. #12
    Chip

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    Me reste donc a trouver comment prendre la racine carrée. Et aussi comment obtenir le signal, car je ne connais pas de dispositif de labo permettant de convertir un signal sonore en un signal électrique adaptable sur les circuits de labo...
    Euh... je n'avais pas compris qu'il s'agissait d'un travail expérimental, juste de trouver une méthode simple pour extraire (numériquement) une enveloppe. Ma proposition d'élever au carré, de filtrer et de prendre la racine carrée était uniquement un schéma de principe parmi d'autres possibles.

    S'il s'agit d'un travail expérimental, le schéma le plus basique me semble être : prise de son avec un micro et circuit d'amplification, éventuellement filtrage passe haut (pour enlever des fluctuations de biais à basse fréquence), redressement avec une diode (ou plus chiadé) puis filtrage passe bas. Je ne suis pas du tout spécialiste du domaine, mais ça me semble le plus "simpliste" (et donc certainement pas optimal). Tout dépend de ce que tu dois faire...

  16. Publicité
  17. #13
    kron

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par Chip Voir le message
    redressement avec une diode (ou plus chiadé)
    Là, tu me proposes d'utiliser un détecteur de crête pour l'enveloppe ? (c'est vrai que j'y avais pas pensé)

    Sinon l'autre méthode me semblait bien, surtout que je pense pouvoir l'utiliser de manière formelle.

    Merci beaucoup et bonne soirée.
    Life is music !

  18. #14
    Chip

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    Là, tu me proposes d'utiliser un détecteur de crête pour l'enveloppe ? (c'est vrai que j'y avais pas pensé)
    Pas vraiment un détecteur de crête, juste une étape de redressement (voir ci-dessous un fichier exemple qui montre un redressement simple alternance du signal envisagé au-dessus). Si on considère ces processus d'un point de vue fréquenciel, redresser le signal ou prendre son carré sont deux opérations qui font apparaître l'enveloppe du signal original dans le bas du spectre, alors qu'il n'y avait rien dans cette zone (tout était à haute fréquence). Il suffit ensuite d'éliminer les hautes fréquences pour se retrouver avec l'enveloppe seule (éventuellement à une constante multiplicative près...).
    Images attachées Images attachées

  19. #15
    kron

    Re : Enveloppe temporelle d'un signal

    Je crois que j'ai compris. Pour obtenir ce qui est représenté dans le document pdf de ton post, il sufit de mettre une diode dans le circuit, non ?
    Et ensuite mettre un passe-bas...
    Life is music !

  20. #16
    Chip

    Re : Enveloppe temporelle d'un signal

    Oui. J'ai pris un cas idéalisé, dans la réalité les diodes ont une tension de seuil qui peut être gênante.

  21. #17
    kron

    Re : Enveloppe temporelle d'un signal

    Bonjour !

    En effet, la tension de seuil ne risque t-ell pas de "décaler" mon signal de 0.6V (ou environ), ce qui me posera problème pour une enveloppe qui tend vers 0...
    A t-on ce genre de problème avec un détecteur de crête?

    Merci.
    Life is music !

  22. #18
    b@z66

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    Bonjour !

    En effet, la tension de seuil ne risque t-elle pas de "décaler" mon signal de 0.6V (ou environ), ce qui me posera problème pour une enveloppe qui tend vers 0...
    A t-on ce genre de problème avec un détecteur de crête?

    Merci.
    Oui, ça peut poser problème dans les deux cas, il faudrait donc penser à l'amplifier pas mal avant (ou également à utiliser une diode à faible seuil, ce que l'on cherche aussi à faire en pratique). Sinon, avec un montage redresseur à AOP, on doit aussi pouvoir s'affranchir de ce problème. Quant à la méthode proposé par Chip et celle du détecteur-crète, je pense qu'elle sont un peu équivalente, exception faite peut-être du nombre de composants.

  23. Publicité
  24. #19
    kron

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par b@z66 Voir le message
    Quant à la méthode proposé par Chip et celle du détecteur-crète, je pense qu'elle sont un peu équivalente, exception faite peut-être du nombre de composants.
    Oui, je pense aussi, mais je ne sais pas comment prendre la racine carrée d'un signal de façon pratique pour la méthode donnée par Chip.
    Life is music !

  25. #20
    b@z66

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    Oui, je pense aussi, mais je ne sais pas comment prendre la racine carrée d'un signal de façon pratique pour la méthode donnée par Chip.
    La méthode utilisant la racine carrée est une méthode non-linéaire à réaliser de manière logicielle, son équivalent en électronique "hardware" n'est rien d'autre que celle utilisant des diodes (détecteur-crète, méthode de Chip).

  26. #21
    kron

    Re : Enveloppe temporelle d'un signal

    Donc, finalement, si je veux me mettre à l'abri des problèmes causés par les tensions de seuil, je dois soit réaliser le montage AOP qu tu as mentionné (comment fait-on ?) ou alors traiter le problème de façon logicielle, mais en fait si c'était possible de le traiter de manière logicielle, je pourrais faire tout le filtrage comme ça... Mais ça me parait du coup un peu artificiel...
    Life is music !

  27. #22
    b@z66

    Re : Enveloppe temporelle d'un signal

    En principe, on peut faire des redresseurs "parfaits" avec un AOP et une diode (voir en pj). En pratique, il faut toujours tout de même tenir compte de la bande-passante de ces montages. En suivant la méthode de Chip avec cela, tu peux sans doute gommer le défaut que tu as mis en avant.
    Images attachées Images attachées  

  28. #23
    kron

    Re : Enveloppe temporelle d'un signal

    Donc un inverseur avec une tite diode en plus, et on prend la tension avec diode comprise.
    Je vais essayer
    Merci everybody !
    Life is music !

  29. #24
    kron

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par Chip Voir le message
    Ou encore (plus simple a priori) :

    - retirer la valeur moyenne du signal (elle devrait être nulle mais la mesure peut introduire un biais)
    - élever le signal au carré
    - multiplier par deux
    - appliquer un filtre passe pas (avec une fréquence max inférieure aux fréquences sonores enregistrées)
    - prendre la racine carrée du signal obtenu
    Bonjour !
    Voilà je remonte ce fil pour vous poser deux dernières question !
    1/Juste que je ne comprends pas pourquoi il faut multiplier le signal au carré par 2 ?
    Est ce qu'il y a un effet d'atténuation à cause du filtrage ?

    2/Est-ce qu'il existe un dispositif accessible en labo (CPGE) qui permet de générer une tension commandée par ordinateur ?

    Merci beaucoup.
    Life is music !

  30. Publicité
  31. #25
    b@z66

    Re : Enveloppe temporelle d'un signal

    Citation Envoyé par kron Voir le message
    Bonjour !
    Voilà je remonte ce fil pour vous poser deux dernières question !
    1/Juste que je ne comprends pas pourquoi il faut multiplier le signal au carré par 2 ?
    Est ce qu'il y a un effet d'atténuation à cause du filtrage ?
    La raison de la multiplication par 2 se trouve dans la formule de trigo que j'avais écrit dans le post #7.

  32. #26
    kron

    Re : Enveloppe temporelle d'un signal

    Effectivement j'aurais dû relire les posts précédents, j'aurais trouvé. Mea Culpa
    D'accord donc en multipliant par 2 le carré j'obtiens :
    s(t)=a²(t)[1+cos(2wt)] ce qui justifie qu'après filtrage il ne reste plus que a²(t).
    Merci bien et bonne journée !
    Life is music !

Discussions similaires

  1. enveloppe convexe d'un nuage de point sous matlab
    Par asgrim dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 14/04/2012, 10h43
  2. transformation d'un signal codeur en signal analogique
    Par mylie88 dans le forum Électronique
    Réponses: 1
    Dernier message: 19/06/2007, 13h46
  3. Récupérer enveloppe signal filtré
    Par flopflop16 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 20/03/2007, 11h47
  4. expression spatiale et temporelle d'un gene???
    Par Audichou dans le forum Biologie
    Réponses: 9
    Dernier message: 15/03/2005, 18h58
  5. enveloppe d'un son
    Par Tix dans le forum Électronique
    Réponses: 1
    Dernier message: 13/03/2005, 10h36