130 likes | 482 Views
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
E N D
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
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 unfiltre 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 (outemps nTe) • ne dépend pas des amplitudes des yn et xn. • calculer y si x est appliqué à yn=yn-1 + xn-1et quey0=0 : • y = [0, 1, 2, 2, 2, 3, 3.5, 4.5]
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-ket 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 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
G/2 Filtrer un signal audio, c'est multiplier son spectre par la réponse harmonique du filtre EaD Effet du filtre: H(f)est la réponse harmonique du filtre. hn est la réponse impulsionnelle du filtre Quel est l'effet du filtre H2(f) sur X2(f) ?
Une méthode pour construire les filtres FIR à partir de la réponse harmonique désirée : Impulsion : 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]: Réponse impulsionnelle : L'invariance dans le temps implique que : La linéarité et l'invariance dans le temps impliquent que la sortiedu filtre yn est le produit de convolution de l'entrée xn par la réponse impulsionnelle hn : Produit de convolution : 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]
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 Voici un exemple : d'où la fonction de transfert en z : Un second exemple : Quelle est la fonction de transfert de ?
Mise en œuvre avec Goldwave du filtre Pour mettre ce filtre en œuvre, il faudra saisir l'expression suivante dans Expression Evaluatorwave1(n-1)*0.9+0.1*wave2(n-1) chronogrammeatténué fréquence d'échantillonnage 2kHz spectrogrammediminué à partir de 200Hz Noter l'effet du filtre sur les tracés ci-dessus.
Quelques fonctions Matlab pour créer, évaluer, et appliquer les filtres, tel que : • 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'); 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)
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 : • 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é :
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 ?
Annexe : stabilité et gain statique d'un filtre • un filtre est stable au sens E.B.S.Bsi 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é EBSB : 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 • Stabilité et gain statique du filtre intégrateur ? • Mêmes questions pour le filtre dérivateur ?
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