• Aucun résultat trouvé

- Traitement du Signal –

N/A
N/A
Protected

Academic year: 2022

Partager "- Traitement du Signal –"

Copied!
2
0
0

Texte intégral

(1)

CESI Mont-Saint-Aignan – janvier 2006 – Benoît Decoux

1

- Traitement du Signal –

Travaux Pratiques – n°3

Sommaire :

1) Amélioration de la Transformée de Fourier (Discrète) 2) Transformée de Fourier d’un signal de parole

3) Extension à l’analyse spectrale 4) Application aux images

1) Amélioration de la Transformée de Fourier (Discrète)

Reprendre le programme Scilab appliquant la TFD à un signal sinusoïdal, en améliorant les résultats à l’aide d’un fenêtrage autre que rectangulaire. On utilisera 2 méthodes différentes :

1.1) par programmation "maison" (en programmant la fenêtre soi-même) ; 1.2) par utilisation de la fonction pré-définie window.

1.3) Commenter et interpréter les résultats.

Remarque : pour générer un vecteur d’indices temporels, on pourra utiliser la fonction linspace.

2) Transformée de Fourier d’un signal de parole

2.1) Appliquer la TFD à quelques parties différentes du signal contenu dans le fichier

"sophie0.wav", voisées et non-voisées (on pourra utiliser d’autres sons également), et représenter les spectres correspondants (ainsi que les parties de signal correspondantes).

Pour obtenir le spectre, on considèrera le module des N/2 premiers points de sortie de la TFD.

2.2) Pour une partie périodique, relever la fréquence du signal, à partir de son spectre et à partir de la représentation temporelle.

2.3) Par utilisation du logiciel Goldwave, essayer également de repérer les parties correspondantes du son, pour les écouter.

3) Extension à l’analyse spectrale

La même TFD que ci-dessus peut être appliquée en boucle, au signal entier, en découpant ce dernier en parties de tailles égales, appelées trames. Le résultat est alors un ensemble de spectres, que l’on peut afficher sous forme d’image en fausses couleurs ou sous la forme d’une surface 3D. Cet ensemble de spectres est appelé spectrogramme.

En général, les trames se chevauchent, par exemple sur 1/3 ou 1/2 de leur taille.

L’opération consistant à calculer tous ces spectres est appelée "analyse spectrale".

Le programme suivant décompose un signal en trames de durées égales, se chevauchant sur la moitié de leur taille, applique la TFD à chacune de ces trames puis reconstitue le signal original en appliquant la TFD inverse au spectrogramme obtenu et en les additionnant aux instants adéquats.

REP_WAV=".\"; //répertoire du fichier .wav REP_WAV="D:\TRAVAIL\PROG\SIGNAL\SCILAB\";

nom_fich=REP_WAV+"sophie0.wav"

[y,fe]=wavread(nom_fich); //y=?? ; fe=??

//sig=y(:,1)'; //si fichier stéréo, on peut choisir la voie 1 ou 2 sig=y';

(2)

CESI Mont-Saint-Aignan – janvier 2006 – Benoît Decoux

2

t_sig=length(sig); //taille signal en échantillons

N=256; //nombre de points d'entrée (et de sortie) de la TFD nb_fen=int(t_sig/N*2)

spectre=zeros(nb_fen,N); //dimensionnement du vecteur spectre mod_spectre=zeros(nb_fen,N/2); //idem pour module du spectre

// (N/2 premiers points seulement) t=linspace(-.5,.5,N);

win=0.54+0.46*cos(2*%pi*t); //fenêtre de Hamming for n=1:nb_fen-1

debut_fen=(n-1)*N/2+1;

fin_fen=debut_fen+N-1;

signal=sig(debut_fen:fin_fen) //sélection d'une trame de signal signal=signal'.*win; //pondération du signal par la fenêtre spectre(n,:)=fft(signal,-1); //spectre de fréquence

mod_spectre(n,:)=abs(2*spectre(n,1:N/2)); //??

end;

mod_spectre=mod_spectre.*mod_spectre; //??

//Affichage graphique xbasc

xset("colormap",jetcolormap(256));

mod_spectre=mod_spectre.^0.2; //pour mieux visualiser les valeurs faibles mod_spectre = 256.*(mod_spectre-min(mod_spectre))./(max(mod_spectre)-min(mod_spectre));

colorbar(0,256);

//Matplot(mod_spectre); //??

x=linspace(0,N/2,N/2);

y=linspace(0,nb_fen,nb_fen);

plot3d1(y,x,mod_spectre);

//Reconstruction du signal

signal2=zeros(1,t_sig); //pour dimensionner le vecteur signal2 for n=1:nb_fen-1

signal=fft(spectre(n,:),1); //Transformée de Fourier inverse debut_fen=(n-1)*N/2+1;

fin_fen=debut_fen+N-1;

signal2(debut_fen:fin_fen)=signal2(debut_fen:fin_fen)+signal;

end;

savewave(".\test.wav", signal2, fe);

3.1) Testant ce programme et examiner les résultats qu’il donne, puis l’analyser et décrire ce qu’il fait. Compléter notamment les commentaires (au niveau des "??").

3.2) Examiner les valeurs du signal reconstitué signal2 et commentez cette observation.

3.3) Le modifier pour afficher les graduations correctes sur les axes.

3.4) Le modifier pour réaliser une transposition spectrale. Ecouter le résultat et l’interpréter.

3.5) Idem pour un étirement temporel (on pourra par exemple doubler la durée du signal en utilisant 2 fois de suite chaque trame lors de sa reconstruction).

4) Application aux images

Le programme suivant applique la TFD à une image artificielle.

// fft_im.sce

// Transformée de Fourier d'une image artificielle clear

NOIR=255; //définition du niveau de gris du noir BLANC=0; //définition du niveau de gris du blanc im(1:50,1:50)=BLANC; //fond BLANC

im(20:22,30:34)=NOIR; //rectangle NOIR imf=fft(im,-1);

imf=256.*(abs(imf)-min(abs(imf)))./(max(abs(imf))-min(abs(imf))); //recadrage xbasc

Matplot(abs(imf));

xset("colormap",jetcolormap(256)); //"graycolormap" pour afficher en niveaux de gris //colorbar(0,255);

4.1) Le tester et commenter son résultat.

4.2) Augmenter la taille de l’image (au moins en la doublant) et observer le résultat obtenu sur le spectre en ajoutant des pixels blancs. (Cette technique est appelée "zéro-padding").

Références

Documents relatifs

SLIT à temps discret – Réponse impulsionnelle - Convolution discrète – Réponse en fréquence – Fonction filtrage Filtre à Réponse Impulsionnelle Finie (RIF) - Filtre à

1) Les calculateurs sont des systèmes discrets : Ils peuvent tout au plus mémoriser et calculer les valeurs des signaux à des instants dénombrables. Il faut donc opérer

• Valeur du gain de ce filtre à la fréquence de coupure : –3dB (quel que soit l’ordre N).. Rm : le temps de propagation

Une variable simple (ce qu’on appelle "un scalaire") est vue comme un tableau à une ligne et une colonne ; un vecteur de N éléments est vu comme une matrice à une colonne et

où ω 0 est la pulsation de coupure. 1.1) En définissant un vecteur de valeurs de fréquences variant de 0 à 10000 Hertz par pas de 1, réaliser un affichage graphique du module

En conclusion, toutes ces méthodes très invasives permettent une très bonne visualisation du mouvement des cordes vocales mais rendent des mesures beaucoup plus difficiles.

On étudie un filtre pour lequel on observe le signal d’entrée en trait plein et le signal de sortie en pointillés sur l’oscillogramme.. Le signal d’entrée peut être décomposé

• C’est une opération préliminaire à tout traitement numérique d’un signal car les systèmes numériques ne travaillent que sur des quantités finies: