Vous êtes sur la page 1sur 12

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

Travaux dirigés : des filtres avec Goldwave et MATLAB

Questions pour tester la compréhension du cours


Le filtre ci-dessous est il causal? Donner la fonction de transfert de
yn  ( xn 1  xn 1 ) / 2 sn 1  sn  en

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


lm  am  2am 1  am 2 d n  f n  f n 1

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


sn  0.5 (en  sn1  sn2 ) du filtre d n  f n  f n 1 ?

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


Les notions de filtre, de filtre numérique, de
filtre linéaire et invariant dans le temps
• 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   xn ,n  0 , N  1 
xn  0,1,1,0,0,1,0.5,1 , N  8
yn  xn  xn 1 , n  0, N  1
y  0,1,0, 1,0 ,1, 0.5,0.5, n 0, N  1
• 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]

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


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.
yn  k 1 bk yn k   j 0 a j xn  j
N M 1

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
yn  xn  xn1 est récursif , et linéaire invariant dans le temps

yn  yn1  xn1 est LIT, mais récursif

yn1  nxn  0.9 yn non invariant dans le temps,


linéaire, récursif (RII)

yn1  xn  0.9 xn1


2
non linéaire, RIF

yn 1  0.1xn 2  0.9 yn LIT, récursif, anticausal

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


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

xn , n  0, N  yn , n  0, N 
EaD
X ( f )  TFD[ xn ] Y ( f )  TFD[ yn ]
H ( f )  TFD hn 
1

f f f

fe fe 
fe  fc fc fe

fe fe
 2 2 2 2
2 2

Effet du filtre: Y ( f )  H( f )  X ( f )
H(f) est la réponse harmonique du filtre.
H ( f )  TFD [ hn ]   h
n n
e 2  n i f / f e

n ( f
2 n i f / f e
H  TFD
h ( f)TFD 1[h ] 
[H )]n hn e
n

hn est la réponse impulsionnelle du filtre


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

X2( f ) H2 ( f ) Y2 ( f )
1 G
G/2
f f
f
fe f fe fe fe f fe fe fe f fe fe
  e   e   e
2 4 4 2 2 4 4 2 2 4 4 2

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


Une méthode pour construire les filtres FIR
à partir de la réponse harmonique désirée :
Impulsion :  n  1 si n  0,  n  0 si n  0

Réponse impulsionnelle :  n  hn


filtre

L'invariance dans le temps implique que :


ni   hni
filtre

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 :
xn   x 
i i n i
  yn 
filtre
 xh i i n i
 [ xn * hn ]
Produit de convolution :
yn  xn * hn      hn * xn 
 
xh 
i   i n i
xh
i   i n i

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]
yn  xn  xn 1
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] :
  
1
yn  xh 
i i n i
x h 
i n i i
x h
i  0 n i i
 xn  xn 1

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


Il est équivalent d'utiliser la fonction de
transfert en z d'un filtre ou son EaD :
On calcule la fonction de transfert en z d'un filtre à partir
de la réponse fréquentielle avec le changement de variable

e 2if / f e  z
Voici un exemple :
yn  axn 2 ( EaD)
TFD ( yn )  Y ( f )   y
n n
e 2  n i f / f e
  y
n n
z n

  ax
n n 2 z
n
 az2 x n n 2
z ( n  2 )
 az2 X ( f )
d'où la fonction de transfert en z :
Y( f ) ~y ( z ) ~
 az 2  ~  h ( z )
X( f ) x ( z)
Un second exemple :
yn  yn1  xn1 Tz ~y ( z )  z 1 ~y ( z )  z 1~x ( z )
~y ( z) z 1 1 ~
 
~x ( z) 1  z 1 z  1  h ( z)

Quelle est la fonction de transfert de ?


yn1  0.1xn  0.9 yn
~
y ( z) 0.1

z~
y ( z )  0.1~
x ( z )  0.9 ~
y ( z) ~
x ( z ) z  0.9

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


Mise en œuvre avec Goldwave du filtre
y (( n  1)Te )  0.1x(nTe )  0.9 y (nTe ), f e  2kHz

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)

chronogramm
e
atténué

fréquence
d'échantillonnag
e 2kHz

spectrogramme
diminué à partir
de 200Hz

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


Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 7
Quelques fonctions Matlab pour créer,
évaluer, et appliquer les filtres, tel que :
yn  0.1xn1  0.9 yn1 , f e  8kHz
 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 bien
impulse(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');

Créer avec Matlab le filtre ci-


y  0.9 yn  0.1xn
contre, à appliquer au signal tiré n 1
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)

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


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 :
yn1  0.1xn  0.9 yn Te  0.5ms

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é :

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


Comparer les deux filtres dont Matlab a
superposé les réponses ci-dessous :
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.6413
a=b*cos(sqrt(2)*pi*fc/fe)% a=0.5790
F2z=tf([1-2*a+b^2,0],[1,-2*a,b^2],1/fe)
bode(F1z,F2z)

Qu’est que ces deux filtres ont en commun ?

Qu’est ce qui les différencie ?

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


Annexe : stabilité et gain statique d'un filtre

Stabilité EBSB :
 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.

Gain statique :
 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
Y Y ( z)
GS   lim z 1  lim z 1 FT ( z )
X X ( z)

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

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

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


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 :
S ( z) b
F1 ( z )  
E( z) z  a
a  e 2f c / f e
b  G (1  a )
Pour le filtre F2(z) du second ordre, c'est :

S ( z ) g (1  2a  b 2 )
F2 ( z )   2
E ( z ) z  2az  b 2
2f c / f e
b  e ,
a  b cos( 2f c / f e ),
g G

* ces résultats non démontrés

ze
découlent de la relation entre Te p
la variable de Laplace p
et la variable z
Cours S.S.I.I., 2009-10, séance 7 : Filtrer le signal audio numérique page 12

Vous aimerez peut-être aussi