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 :

Inversion temporelle d'un signal sonore


Sujet :

Signal

  1. #1
    Membre à l'essai
    Profil pro
    Architecte Solutions
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte Solutions

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Inversion temporelle d'un signal sonore
    Bonjour,

    Je poste ce message car je doit réaliser une manipulation avec matlab et que étant tout à fait novice avec ce logiciel je ne sais pa comment y parvenir. J'ai bien essayé de me servir des modes d'emplois, mais je me perd dasn toutes les possibilités de ce logiciel grandement complexe. J'espère donc pouvoir compter sur vos lumières pour y parvenir

    Voici ce que je doit réaliser:

    Je cherche a enregistrer un signal sonore dans matlab à partir de ce que recoit un microphone au cours d'un certains laps de temps.
    Il faudrait ensuite que je puisse inverser temporellement ce signal sonore, c'est à dire recréer un nouveau signal qui serait comme la lecture en sens inverse du premier.
    Par exemple, l'intensité du signal recu en dernier lors de l'enregistrement devrait être celle du tout début du nouveau signal. C'est un peu comme si on regardais un film en rembobinage où tout est diffusé en ordre inverse.
    On fait une sorte de remonté temporelle du signal.
    Et enfin, il faudrait que je puisse réemettre le signal ainsi crée (inversé temporellement) par un haut parleur tout en le réenregistrant par le microphone. Ceci pour visualiser que il y a effectivement eu émision d'un signal inversé temporellement.

    Cela fait un moment que je planche sur cette manipulation alors toute aide quelle qu'elle soit serait la bienvenue^^

    Que ce soit pour comment acquérir le signal de dépard, le modifier par des action sur le logiciel et le réemettre, j'ai besoin d'indications.

    Alors je remerci d'avance toute âme charitable qui m'aidera enfin a aboutir dans mes recherches^^

  2. #2
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Bonjour,

    Pour ce qui concerne l'enregistrement et la réemetion de signal, vous pouvez regarder ici:
    http://www.developpez.net/forums/sho...d.php?t=256361

    Pour inverser le signal temporellement utilisez la fonction:
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  3. #3
    Membre à l'essai
    Profil pro
    Architecte Solutions
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte Solutions

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci bcp pour ces informations.

    Je suis en effet parvenu a enregistrer un signal sonore et a le réécouter.

    Seulement la fonction fliplr qui sert à inverser vectoriellement la gauche et la droite du signal ne semble pas avoir l'effet escompté.

    Car si j'enregistre le signal sonore sous le nom de variable x et appelle y=fliplr(x)

    Lorsque je tape inverse=play(y)
    Le signal qui se joue est en fait x.
    Il n'a pas été inversé...

    Aurais-je fait une erreur de manipulation quelque part ?

    Voici ce que j'ai entré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> x=audiorecorder(44100,16,2);
    >> recordblocking(x,4);
    >> y=fliplr(x);
    >> inverse=play(y);
    Lorsque j'effectue ces lignes de commandes, j'entend le signal sonore enregistré durant les 4 secondes de durée désignés, et non pas un signal retourné temporellement.

  4. #4
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Bonjour,

    desolé, c'est moi qui a fait une erreur.
    x est un vecteur colone et fliplr (flip left right) inverse les colones, et nous devons inverser les lignes et non pas les colones.donc deux solution:

    1-rendre x a un vecteur ligne par (x=x'; ) et appliquer y=fliplr(x);.
    2-utiliser directement y=flipud(x); (flip up down) qui inverse les lignes.
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  5. #5
    Membre à l'essai
    Profil pro
    Architecte Solutions
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte Solutions

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci,

    Voici ce que j'ai entré et qui semble fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> x=audiorecorder(44000,16,2);
    >> recordblocking(x,10);
    >> y=getaudiodata(x,'int16');
    >> z=flipud(y);
    >> t=audioplayer(z,44000);
    >> play(t,10);
    Aprés avoir enregistré le signal sonore, je convertit le signal en donné matriciel sur lesquel on peut travailler dans matlab.
    Puis seulement alors je fait l'inversion "flip up down" avant de recreer un signal sonore à la fréquence sélectionnée.
    Et quand on le joue le signal est bien inversé

    J'ai également testé l'inversion du signal en ecrivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >> d=flipud(z);
    >> h=audioplayer(d,44000);
    >> play(h,10);
    Ce qui me redonne le signal de dépard non inversé (il y a en fait eu double inversion). Cela fonctionne.

    Mon problème est donc résolu.

    Un grand merci a rostomus^^

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

Discussions similaires

  1. recupération d'un signal sonore
    Par mrjack77 dans le forum Débuter
    Réponses: 0
    Dernier message: 11/11/2008, 13h16
  2. [LabView 8.2] Signal sonore propre
    Par Klougoubaro dans le forum LabVIEW
    Réponses: 8
    Dernier message: 18/02/2008, 20h53
  3. [LabView 8] Transformer chaîne en signal sonore
    Par chris83160 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 05/02/2008, 13h27
  4. Detecter et generer un signal sonore
    Par jmjmjm dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 03/02/2006, 10h23
  5. Signal sonore sur la carte son
    Par woow dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/11/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