12
page page 1 Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique audio numérique Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia, Dépt S.I, 3 ème année séance n°6, novembre 2009, durée : une heure, vidéoprojecteur Contenu de la séance : filtre, filtre numérique, filtre linéaire invariant dans le temps équation aux différences pour implémenter le filtre effet d'un filtre sur le spectre méthode pour construire les filtres désirés conception des filtres avec Matlab Le filtre ci-dessous est il causal? Donner la fonction de transfert de Que réalise le filtre ci-dessous ? Réponse impulsionnelle du filtre Ce filtre est RIF ou RII ? Quelle est la réponse harmonique du filtre ? 2 / ) ( 1 1 n n n x x y 2 1 2 m m m m a a a l ) ( 5 . 0 2 1 n n n n s s e s n n n e s s 1 1 n n n f f d Questions pour tester la compréhension du cours Travaux dirigés : des filtres avec Goldwave et MATLAB 1 n n n f f d

Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

Embed Size (px)

Citation preview

Page 1: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 11Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Filtrer le signal audio numériqueJean-Paul Stromboni, Polytech Nice Sophia, Dépt S.I, 3ème année séance n°6, novembre 2009, durée : une heure, vidéoprojecteur

Contenu de la séance :

filtre, filtre numérique, filtre linéaire invariant dans le temps équation aux différences pour implémenter le filtre effet d'un filtre sur le spectre méthode pour construire les filtres désirés conception des filtres avec Matlab

Le filtre ci-dessous est il causal? Donner la fonction de transfert de

Que réalise le filtre ci-dessous ? Réponse impulsionnelle du filtre

Ce filtre est RIF ou RII ? Quelle est la réponse harmonique du filtre ?

2/)( 11 nnn xxy

212 mmmm aaal

)(5.0 21 nnnn sses

nnn ess 1

1 nnn ffd

Questions pour tester la compréhension du cours

Travaux dirigés : des filtres avec Goldwave et MATLAB

1 nnn ffd

Page 2: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 22Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

• Filtrer un signal audio, c'est agir sur l'information transportée par ce signal

• Pourquoi filtrer dans le cours S.S.I.I. ? Parce que pour compresser un signal audio, on sera amené à découper son spectre en bandes de fréquences, par filtrage

• Pour filtrer un signal audio numérique, l'ordinateur met en œuvre un filtre numérique programmé.

• Exemple de filtre numérique :

• x est le signal à filtrer (ou entrée du filtre)• yn=xn-xn-1 est l'équation aux différences du filtre• y est le signal filtré (sortie du filtre)

• ce filtre est Linéaire et Invariant dans le Temps (LIT, LTI en anglais) car sa relation d'entrée sortie (xn yn)

• ne dépend pas de l'indice n (ou temps nTe) • ne dépend pas des amplitudes des yn et xn.

• calculer y si x est appliqué à yn=yn-1 + xn-1 et que y0=0 :

y = [0, 1, 2, 2, 2, 3, 3.5, 4.5]

Les notions de filtre, de filtre numérique, de filtre linéaire et invariant dans le temps

105050101010

10

8150100110

10

1

N,n,.,.,,,,,,y

N,n,xxy

N,,.,,,,,,x

N,n,xx

nnn

n

n

Page 3: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 33Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Pour mettre en œuvre un filtre numérique, il faut programmer son équation aux différences (EaD)

Forme générale de l'EaD d'un filtre L.I.T.

où les coefficients bk et aj sont indépendants :

des valeurs de yn-k et xn-j (linéarité, le L. de L.I.T.)

des indices n (invariance dans le temps, le I.T.)

N est l’ordre du filtre (M+N est la longueur) Un filtre est à réponse impulsionnelle finie, ou

non récursif, si les coefficients bk sont nuls, et à réponse impulsionnelle infinie (récursif) sinon

Un filtre est dit causal quand yn ne dépend pas d'échantillons ultérieurs à l'instant nTe (si M > 1). Sinon, le filtre est anticausal.

par exemple

1

01

M

j jnj

N

k knkn xayby

1 nnn xxy

11 nnn xyy

nnn ynxy 9.01

12

1 9.0 nnn xxy

nnn yxy 9.01.0 21

est récursif , et linéaire invariant dans le temps

est LIT, mais récursif

non invariant dans le temps, linéaire, récursif (RII)

non linéaire, RIF

LIT, récursif, anticausal

Page 4: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 44Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Filtrer un signal audio, c'est multiplier son spectre par la réponse harmonique du filtre

)()()( fXfHfY

Quel est l'effet du filtre H2(f) sur X2(f) ?

f

G

2ef

2ef

)(2 fH

4ef

4ef

n

ffinnn

eehhTFDfH /2][)(

H(f) est la réponse harmonique du filtre.

hn est la réponse impulsionnelle du filtre

f

2ef

2ef

)(2 fY

f

1

2ef

2ef

)(2 fX

f

][)( nxTFDfX

2ef

2ef 2

ef

f

][)( nyTFDfY

2ef

EaD Nnxn ,0, Nnyn ,0,

)]f(H[TFDh

eh]h[TFD)f(H

n

n

f/finnn

e

1

2

Effet du filtre:

4ef

4ef

4ef

4ef

G/2

2ef

nhTFD)f(H

f

2ef

1

cfcf

Page 5: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 55Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Une méthode pour construire les filtres FIR à partir de la réponse harmonique désirée :

Calculer la réponse impulsionnelle de

partant de n=0, yn=hn= [1, -1, 0, 0, 0, 0, …]

Calculer le produit de convolution yn=[xn*hn] :

]*[ nni inini

filtreinin hxhxyxx

1 nnn xxy

nfiltre

n h Réponse impulsionnelle :

Impulsion : 00,01 nsinsi nn

L'invariance dans le temps implique que :

infiltre

in h

La linéarité et l'invariance dans le temps impliquent que la sortie du filtre yn est le produit de convolution de l'entrée xn par la réponse impulsionnelle hn :

D'où la méthode de conception des filtres à partir de la réponse harmonique désirée :

• 1ère étape : définir H(f) désiré• 2ème étape : déduire hn=TFD-1[H(f)]• 3ème étape : calculer yn=[xn*hn]

1

1

0 nni i iiniini inin xxhxhxhxy

nni inii ininnn x*hhxhxh*xy

Produit de convolution :

Page 6: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 66Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Il est équivalent d'utiliser la fonction de transfert en z d'un filtre ou son EaD :

nnn yxy 9.01.01

On calcule la fonction de transfert en z d'un filtre à partir de la réponse fréquentielle avec le changement de variable

ze efif /2

Voici un exemple :

)(

)()(

)(

2)2(2

22

/2

2

fXazzxazzax

zyeyfYyTFD

EaDaxy

n

nnn

nn

n

nnn

ffinnn

nn

e

Tz

nnn xyy 11 )(~)(~)(~ 11 zxzzyzzy

)(~

1

1

1)(~)(~

1

1

zhzz

z

zx

zy

Quelle est la fonction de transfert de ?

d'où la fonction de transfert en z :

)(~

)(~)(~

)(

)( 2 zhzx

zyaz

fX

fY

Un second exemple :

)(~9.0)(~1.0)(~ zyzxzyz 9.0

1.0

)(~)(~

zzx

zy

Page 7: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 77Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Mise en œuvre avec Goldwave du filtre

Noter l'effet du filtre sur les tracés ci-dessus.

kHzfnTynTxTny eeee 2),(9.0)(1.0))1((

Pour mettre ce filtre en œuvre, il faudra saisir l'expression suivante dans Expression Evaluator

wave1(n-1)*0.9+0.1*wave2(n-1)

chronogramme

atténué

spectrogrammediminué à partir

de 200Hz

fréquence d'échantillonnage

2kHz

Page 8: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 88Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Quelques fonctions Matlab pour créer, évaluer, et appliquer les filtres, tel que :

kHzfyxy ennn 8,9.01.0 11

On crée ce filtre avec la fonction tf de Matlab: ftz= tf(0.1,[1,–0.9],1/8000); ftz % donne 0.1/(z-0.9), Ts = 1/8000 s

On calcule sa réponse impulsionnelle :[hn,t]=impulse(ftz); % puis plot(t,hn) % pour le tracé, ou bienimpulse(ftz)

sa réponse indicielle (à une entrée échelon) : [ind,t]=step(ftz); % ou bien step(ftz) % pour tracer

sa réponse harmonique (ou fréquentielle): bode(ftz) % attention ! rad/s, pas Hz [m,p,w]=bode(ftz);% voir aussi la fonction freqz() % en Hz

on filtre le signal xn avec la fonction filter(): yn= filter(0.1,[1,-0.9],xn);

on calcule le spectrogramme de yn, par exemple : spectrogram(yn,1024,0,1024,fe,'yaxis');

nnn xyy 1.09.01 Créer avec Matlab le filtre ci-contre, à appliquer au signal tiré de SheepBaa.wav, puis tracer la réponse harmonique du filtre

[xn,fe] = wavread('SheepBaa.wav');ftz = tf(0.1,[1,0.9],1/fe);yn = filter(0.1,[1,0.9],xn); bode(ftz)

Page 9: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 99Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

On lit sur la réponse harmonique d'un filtre l'effet multiplicatif sur le spectre du signal Voici par exemple la réponse harmonique tracée

par MATLAB pour le filtre :

nnn yxy 9.01.01 msTe 5.0

Lire l’effet du filtre sur la fréquence 500 Hz :• donner le facteur d’atténuation ou gain :• donner le déphasage :

Lire le gain du filtre à fréquence nulle (ou gain statique) :À quelle fréquence le filtre divise t’il par 2 ?À quelle fréquence retarde t’il de 45° ?Quel est le gain minimum du filtre ?Relever la fréquence maximum du tracé :

Page 10: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 1010Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Comparer les deux filtres dont Matlab a superposé les réponses ci-dessous :

Qu’est que ces deux filtres ont en commun ?

Qu’est ce qui les différencie ?

fe=2000;fc=200;a=exp(-2*pi*fc/fe),b=1-a;F1z=tf([b],[1,-a],1/fe);b=exp(-sqrt(2)*pi*fc/fe)% b=0.6413a=b*cos(sqrt(2)*pi*fc/fe)% a=0.5790F2z=tf([1-2*a+b^2,0],[1,-2*a,b^2],1/fe)bode(F1z,F2z)

Page 11: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 1111Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Annexe : stabilité et gain statique d'un filtre

un filtre est stable au sens E.B.S.B si toute entrée bornée (finie en amplitude) donne une sortie bornée (E.B.S.B. signifie Entrée Bornée Sortie Bornée).

un filtre est stable au sens EBSB, si et seule-ment si tous les pôles de sa fonction de transfert sont de module inférieur à un.

• Stabilité et gain statique du filtre intégrateur ?

• Mêmes questions pour le filtre dérivateur ?

Le gain statique d'un filtre est le rapport sortie sur entrée en régime permanent.

On calcule le gain statique de deux manières:

Dans EaD, faire disparaître les indices n : xn+1 = xn =… = X, yn = yn-1 = …=Y Dans FTz, faire tendre la variable z vers 1 )(lim

)(

)(lim 11 zFT

zX

zY

X

YGS zz

Stabilité EBSB :

Gain statique :

Page 12: Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 1 Filtrer le signal audio numérique Jean-Paul Stromboni, Polytech Nice Sophia,

page page 1212Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numériqueCours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique

Trouver les filtres récursifs passe bas d'ordre 1 et 2 selon le gain statique et la fréquence de coupure*

Pour le filtre F1(z) du premier ordre, on obtient la fréquence de coupure à -3dB notée fc et le gain sta-tique G en calculant les coefficients comme suit :

Pour le filtre F2(z) du second ordre, c'est :

* ces résultats non démontrés découlent de la relation entre la variable de Laplace p et la variable z

az

b

zE

zSzF

)(

)()(1

ec ffea /2)1( aGb

22

2

2 2

)21(

)(

)()(

bazz

bag

zE

zSzF

Gg

ffba

eb

ec

ff ec

),/2cos(

,/2

pTeez