décomposition d'un signal parole en sous trame de 20ms
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

décomposition d'un signal parole en sous trame de 20ms



  1. #1
    invite197ba523

    Question décomposition d'un signal parole en sous trame de 20ms


    ------

    Bonjour à tous;

    Je travaille sur un projet de traitement de parole, ma tache consiste à supprimer les bruit (pour un début un bruit blanc) d'un signal parole par la méthode (soustraction spéctrale).

    pour celà, j'ai choisi pour un début la technique de half_wave rectification.

    j'ai implémenté mon bruit avc la fonction: x= randn(1,500);
    j'ai implémenté mon signal parole: [y,Fe]=wavread('signal.wav');

    le problème c'est que je dois décomposer mon signal parole en sous trames chauvauchées (c'est que j'arrive pas à faire). et de reconstituer le signal à la fin de l'opération.

    merci.

    -----

  2. #2
    inviteb9f49292

    Re : décomposition d'un signal parole en sous trame de 20ms

    Si tu as un tableau A, pour accéder à un sous-tableau entre les indices n0 et n1, c'est
    Code:
    A(n0:n1)
    , il te suffit donc de calculer les indices aux-quels tu veux découper ton signal grâce à la fréquence d'échantillonnage.

  3. #3
    invite197ba523

    Re : décomposition d'un signal parole en sous trame de 20ms

    bonjour;

    Merci pour votre suggestion.
    voici à quoi je pense:

    Code:
    function [es1,es2]=division_sous_trame(es,N);
    for i= 1:N/4
         es1(i)=es(i);
    end
    for i=1:N/4
         es2(i)=es(i+N/4);
    end
    mais ça c'est trés limite, je veux en plus large, vue que j'ai Fe=8000, et N=Fe*20/1000;

    et puis votre tableau A décomposé en (n0:n), faut que je fais une boucle et choisir un pas en sorte que mes trames se chauvauches.

    merci
    Dernière modification par yoda1234 ; 22/11/2011 à 05h56.

  4. #4
    inviteb9f49292

    Re : décomposition d'un signal parole en sous trame de 20ms

    Si tu veux récupérer le bloc "k" (le premier bloc pour k = 1), où chaque bloc fait "N" échantillons, et avec un chevauchement de "n", le premier échantillon aura pour indice
    Code:
    n0 = round ((k-1) * (N-n)) + 1;
    et le dernier
    Code:
    n1 = n0 + N;
    (attention, chez MATLAB les indices commencent à 1, donc vérifie ce que je raconte). Enfin si tu veux sauvegarder ce sous-bloc dans le tableau "esk", il suffit de faire
    Code:
    esk = es (n0:n1);
    , en effet il faut éviter les boucles avec MATLAB.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. envoi d'une trame sous rs232
    Par invitec31c0e28 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 23/03/2011, 11h21
  2. Decomposition de signal
    Par daz38 dans le forum Électronique
    Réponses: 7
    Dernier message: 21/09/2010, 08h58
  3. obtention d'un signal continu a partir d'un signal sinusoidal
    Par invitef9ed8fd4 dans le forum Électronique
    Réponses: 8
    Dernier message: 17/03/2010, 19h56
  4. Décomposition en série de Fourier d'un signal carré
    Par invite09837ae2 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 06/02/2010, 20h02