Você está na página 1de 30

TRAVAUX PRATIQUES DE TRAITEMENT DU SIGNAL

4me Electricit

Premire dition Copyright 2000 Facult Polytechnique de Mons T. Dutoit

Facult Polytechnique de Mons

Thierry Dutoit Facult Polytechnique de Mons TCTS Lab Ave. Copernic Ph: +32 65 374774 Parc Initialis Fax: +32 65 374729 B-7000 Mons Thierry.Dutoit@fpms.ac.be Belgium http://tcts.fpms.ac.be/~dutoit

LABORATOIRES DE TRAITEMENT DU SIGNAL

AVANT-PROPOS

Organisation des sances de travaux pratiques


Ce manuel rassemble une srie dexercices pratiques ayant pour but de permettre ltudiant de mieux comprendre les implications pratiques de son cours de traitement du signal. Laccent y est mis sur lutilisation pratique du logiciel MATLAB pour la conception de systmes de traitement de signal. Matlab est en effet un logiciel largement rpandu aujourdhui, autant dans les universits que dans les centres de recherche et dveloppement, ainsi que dans lindustrie. Louvrage est divis en 4 laboratoires et 1 projet. Le projet a pour objet la mise au point dun synthtiseur musical sous MATLAB, bas sur les techniques de synthse utilises dans les synthtiseurs commerciaux : synthse par interpolation de formes dondes synthse additive synthse soustractive. Le but de ce projet est de stimuler lintrt de ltudiant pour le traitement du signal, travers une dmarche de synthse plutt que par le biais de travaux danalyse. Il ne sagit donc pas ici dillustrer le cours, mais bien de le mettre en pratique. Dans cette perspective, les laboratoires prparent ltudiant raliser le projet, en le dotant dun ensemble doutils : gnrateurs, analyseurs, et filtres. On y aborde donc les problmes suivants : 1. Gnration de analogiques signaux numriques Echantillonnage de signaux

2. Analyse spectrale des signaux dterministes et alatoires 3. Traitement numrique dans le domaine temporel Systmes LTI 4. Filtrage numrique : approximation et synthse

Apprciation du travail de ltudiant


Ltudiant sera cot en fonction de son niveau de participation aux sances de laboratoires, ainsi que de la qualit (fond et forme) du rapport de projet. Ce rapport devra expliciter le plus clairement possible : = la technique de synthse utilise : principe, structure modulaire du synthtiseur, prvision des problmes rsoudre pour la mise en oeuvre

LABORATOIRES DE TRAITEMENT DU SIGNAL

= le dtail des modules implments dans MATLAB sous la forme de fonctions = une analyse des rsultats fournis : comparaison (auditive, temporelle, et spectrale) entre les formes dondes produites et les formes dondes originales = une analyse des performances et des limitations du synthtiseur en termes de possibilits de modifications des caractristiques des sons Le projet sera cot sur ? pour un total annuel de ? points en Traitement du Signal.

Informations sur le Web


Le prsent manuel, ainsi quun certain nombre dinformations utiles au droulement du projet, sont disponibles sur le site web du cours : http://tcts.fpms.ac.be/cours/1005-03/ Les tudiants sont par ailleurs invits me communiquer dventuelles autres sources dinformations utiles, en envoyant un email : Thierry.Dutoit@fpms.ac.be Le site Web sera galement utilis pour afficher les rsultats sonores obtenus, ainsi que la liste finale des cotations.

LABO 1 GENERATION DE SIGNAUX NUMERIQUES - ECHANTILLONNAGE

1.1 Introduction
Les systmes de traitement du signal numrique manipulent des signaux, qui sont soumis divers types de traitements par chantillons (typiquement, du filtrage numrique ou de la modulation) ou par bloc (typiquement, des analyses spectrales ou des modlisations). Ces signaux sont soit produits par des sources analogiques et numriss laide de convertiseurs analogiques-numriques, soit gnrs directement sous forme numrique. Dans la cadre de cette scance de travaux pratiques, nous allons envisager la mise au point de gnrateurs de signaux numriques, et examiner par la pratique linfluence de la frquence dchantillonnage.

1.2 Rappel Thorique


1.2.1 Echantillonnage Thorme de Shannon
Lorsquon chantillonne un signal x(t) possdant un spectre X(), la frquence dchantillonnage Fe, on obtient le signal numrique x+(t) donn par :

x + (t ) = x(t ) Te Te (t )
o Te (t ) est un train dimpulsions de Dirac espaces de Te. Les chantillons correspondants sont donnes par :

x(n) = x + (nTe )
Le spectre X+() de x+(t) est donn par :
n =

X + ( ) =

X ( n e )

Ceci correspond une duplication de X() linfini, et une sommation (complexe) des spectres ainsi dupliqus. On en dduit immdiatement le thorme de Shannon (dans sa version la plus simple) : Pour chantillonner correctement une fonction x(t), il faut que son

LABORATOIRES DE TRAITEMENT DU SIGNAL

spectre X() soit born et que la pulsation dchantillonnage e soit suprieure ou gale deux fois la pulsation maximale M

1.2.2 Spectre dun signal chantillonn Transforme en z


Le spectre X+() est donn par :

X ( ) =
+

x + (t )e jt dt x(n)e j nTe x(n)e jn x ( n) z n


( z = e j )

= = =

On constate donc que ce spectre est donn par la transforme en z de x(n), calcule sur le cercle de rayon unit.

1.2.3 Signaux alatoires


Un signal alatoire (ou bruit) nest pas vraiment dfini par ses chantillons, mais bien plutt par : = sa densit de probabilit (ou, ce qui revient au mme, sa fonction de distribution, qui en est lintgrale) = sa fonction dautocorrlation (ou, ce qui revient au mme, sa densit spectrale de puissance, qui en est la transforme de Fourier) Un bruit blanc possde une densit spectrale de puissance constante (et donc une fonction dautocorrlation impulsionnelle). Les chantillons dun bruit uniforme sont distribue uniformment sur un intervalle dfini. Ceux dun bruit gaussien possdent une distribution gaussienne de moyenne et variance dfinie. La variance dun bruit uniforme entre q/2 et q/2 est donne par q/12. NB : ces notions seront revues plus en dtail dans une prochaine sance de laboratoire.

1.3 Commandes Matlab utilises


Nous allons produire des signaux lmentaires. Les fonctions ones, zeros, sin, rand, randn, stem1 et hist nous serviront de base. La fonction freqz nous permettra de voir les spectres des signaux numriques gnrs. Freqz sera utilis selon la synthaxe suivante : freqz(x,1,'whole')

1 On prfrera en gnral stem plot pour visualiser un signal compos d'un petit nombre

d'chantillons.

LABORATOIRES DE TRAITEMENT DU SIGNAL

Utilise de cette faon, cette fonction calcule le spectre de x sur 512 points et en affiche le module et la phase.

1.4 Gnration de signaux numriques


1.4.1 Impulsion numrique
Crer une impulsion numrique sur 100 chantillons (un "1" suivi de 99 "0"), afficher le signal et voir son spectre. NB : ce signal tant purement numrique (il ne provient pas de l'chantillonnage d'un signal analogique), il est inutile de spcifier la "frquence d'chantillonnage".

1.4.2 Signal alatoire uniforme signal alatoire gaussien


Crer 1000 points d'un signal alatoire uniforme de moyenne nulle et de variance gale 1, afficher le signal, afficher son histogramme, et voir son spectre. Mme chose pour un signal alatoire gaussien de moyenne nulle et de variance gale 1. NB : Il est important de noter quon ne visualise pas proprement parler les spectres de ces signaux alatoires, ni mme leur densit spectrale de puissance : le calcul seffectue sur un nombre fini dchantillons, ce qui tronque la somme de la formule du point 1.2.2, et ne donne donc le spectre du signal que de faon tres approximative.

1.4.3 Signal sinusoidal


Simuler lchantillonnage 10 kHz dune sinusode de frquence f de 600 Hz. Calculer 200 chantillons, visualiser le signal chantillonn, et son spectre. Obtient-on ce quoi on doit sattendre (en amplitude et en frquence)? Rpter lopration pour f = 1000, 4400, 5000, 5600, 9400, 10600 Hz. Ceci doit illustrer clairement le thorme de Shannon. NB : Il est important de noter quici aussi on ne visualise pas proprement parler les spectres de ces signaux, pour les mmes raisons que plus haut. Nous examinerons ce problme plus en dtail lors dune prochaine sance.

1.4.4 Signal de type sinc (sinus cardinal)


sin ( c t ) , dont la transforme de Fourier est X ( ) . Dans le cas t o c = 2f c , avec f c = 1000 Hz , on demande de :
Soit le signal x(t ) = a) Calculer la valeur thorique de X ( ) ; = Fe = 4000 Hz = Fe = 2000 Hz = Fe = 1500 Hz Ces diffrents spectres font clairement apparatre le problme du recouvrement spectral. b) Dessiner X + ( ) , lorsque le signal est chantillonn aux frquences suivantes :

LABORATOIRES DE TRAITEMENT DU SIGNAL

c) Pour chacune de ces frquences dchantillonnage, visualiser sous Matlab le signal rsultant de lchantillonnage de x(t) pour t variant de NTe + NTe , et visualiser son spectre (avec successivement N=300, N=100, N=10). La valeur de N influence clairement la qualit de la mesure du spectre (mme problme que plus haut : si N est trop petit, le somme du point 1.2.2 est tronque.

LABO 2

ANALYSE SPECTRALE DES SIGNAUX DETERMINISTES ET ALEATOIRES

2.1 Introduction
Il a t revu lors de la sance prcdente que le choix de la priode d'chantillonnage Te joue sur le phnomne de repliement spectral. Plus Te est petit, plus faible est le repliement. Le thorme de Shannon impose ds lors un filtre de garde, qui permet dviter cet effet perturbateur. Cependant, dans la plupart des spectres examins dans la sance prcdente, on constatait une diffrence parfois importante avec les spectres thoriques. Le but de cette sance de laboratoire est de mieux comprendre la raison de ces diffrences, et den matriser leffet.

2.2 Rappel Thorique


2.2.1 Analyse spectrale court terme
La plupart des signaux rels ne sont pas compltement stationnaires. Leur contenu spectral volue au cours du temps. On cherche en gnral caractriser ce contenu spectral a un instant donn, ce qui implique quon nanalyse pas lensemble des chantillons du signal, mais bien seulement un nombre L de ces chantillons, quon appelle tranche de signal. Leffet de ce dcoupage en tranches est simple : prendre L chantillons est quivalent multiplier le signal par une fentre de pondration rectangulaire (un signal de L chantillons valant 1 entours par une infinit de 0 ). Par consquent, le spectre de la tranche sera le rsultat de la convolution du spectre du signal par celui de la fentre de pondration. La spectre de la fentre rectangulaire est facile a obtenir :

10

LABORATOIRES DE TRAITEMENT DU SIGNAL W ( ) =


w(n)e j nTe

= 1 + e jTe + e j 2Te + ... + e j ( L 1)Te = = 1 e j LTe 1 e jTe


e e
j L Te 2 j 1 Te 2

sin( L Te ) 2 sin( 1 Te ) 2

Il sagit donc dune fonction pieuvre de priode Fe (Hz). On constate bien entendu que plus L est grand, plus le spectre de la fentre de pondration tend vers une impulsion, et plus l'effet de convolution spectrale (par cette impulsion) est faible : le spectre observ tend alors vers le spectre du signal complet. Il est important de remarquer pour la suite que le demi-lobe principal de cette fonction a pour largeur Fe/L (Hz). On trouve exprimentalement (voir labo) que la diffrence damplitude entre le lobe principal et les lobes secondaires est de lordre de 13 dB. Ces deux caractristiques impliquent que lutilisation dune fentre rectangulaire ne permettra en gnral pas de distinguer deux sinusodes dont les frquences seraient espaces de moins de Fe/L (Hz) ou dont les amplitudes seraient dans un rapport de plus de 13 dB. Il est donc souvent utile dutiliser dautres fentres de pondration, dont lallure est calcule pour offrir de meilleures possibilits de sparation spectrale en amplitude ou en frquence : fentre de Hamming, fentre de Blackman. Ces deux fentres ont des spectres dallure semblable au prcdent (fonctions pieuvre ), mais leur rsolution spectrale va dcroissant, alors que leur rsolution en amplitude va croissant (voir labo).

2.2.2 Analyse spectrale discrtise en frquence


Lors de la sance prcdente, nous avons utilis la fonction freqz(x,1,'whole') pour calculer et afficher la transforme de Fourier de la suite dchantillons x. Cette fonction ralise en ralit la FFT de x sur 1024 points par dfaut et en affiche le module en dB1. La fonction renvoie alors 512 points en frquence entre 0 et Fe/2. Comme le calcul se fait sur 1024 points en frquence, elle attend en entre 1024 chantillons. Lorsque le nombre L de points de x est infrieur 1024, x est complt par des 0 . On peut imposer la fonction de travailler sur un nombre de points N diffrent de 1024, avec freqz(x,1,N,'whole'). Dans tous les cas, il est clair que le spectre affich nest quune version chantillonne du spectre de x : les points affichs sont distants de Fe/N (Hz). Cet effet est dautant moins marqu que N est grand. Dans des applications pratiques, on ne peut cependant augmenter N comme on le voudrait : le temps de calcul augmente galement (en log2(N)).
1 Ou la DFT si le nombre de points (du spectre) calculer nest un exposant de 2.

LABORATOIRES DE TRAITEMENT DU SIGNAL

11

2.3 Commandes Matlab utilises


(Outre les commandes de la sance prcdente) hamming, blackman, psd (power spectral density, pour lestimation spectrale avec priodogramme) .

2.4 Analyse spectrale


2.4.1 Analyse spectrale de sinusodes
Pour chacun des signaux suivants, prdterminer ce qui sera affich par freqz, puis vrifier sous Matlab: = 32 points dun sinusode de frquence 2650 Hz chantillonne 10 kHz (cest le cas gnral : la frquence de la sinusode est quelconque par rapport la frquence dchantillonnage); on choisira de raliser le calcul sur 32 points galement : N=L. = Mme chose avec N=256 = 32 points dun sinusode de frquence 2500 Hz chantillonne 10 kHz; (cest la cas particulier dun sinusode de frquence gale un multiple de Fe/N); on choisira de raliser le calcul sur 32 points galement : N=L. = Mme signal que ci-dessus, mais forcer N 256 points (L restant inchang : on sort du cas prcdent);

2.4.2 Analyse spectrale de plusieurs sinusodes


Soit

x (t ) =

un
i

ai sin ( 2 fi t ) .

signal

compos

dune

somme

pondre

de

sinusodes :

Prdterminer, et vrifier ensuite, les valeurs de Fe et N utiliser pour pouvoir observer avec prcision, tout en maintenant minimale la charge de calcul, les trois frquences suivantes :

f1 = 158 Hz , a1 = 1 f 2 = 312 Hz , a2 = 1 f 3 = 401 Hz , a3 = 1

2.4.3 Utilisation de fentres de pondration


a) Sous Matlab, on veut examiner les proprits spectrales des fentres suivantes : = fentre rectangulaire (fournie par la fonction boxcar) = fentre de Hamming (fournie par la fonction hamming) = fentre de Blackman (fournie par la fonction blackman) On demande dafficher les spectres des 4 fentres, et de mesurer, dans chaque cas 1. la diffrence D entre l'amplitude du lobe principal et celles des lobes secondaires, en dB 2. la demi-largeur LP du lobe principal, en Hz.

12

LABORATOIRES DE TRAITEMENT DU SIGNAL

On supposera pour les calculs que Fe=22, L=50, N=512. Les mesures doivent vrifier les valeurs suivantes: Rectangulaire D LP 13 dB Fe/L Hamming 40 dB 2 Fe/L Blackman 60 dB 2.75 Fe/L

b) En dduire, et vrifier ensuite sous Matlab, la fentre utiliser pour pouvoir distinguer au mieux les frquences dun signal f ( t ) = ai sin ( 2 fi ) t dans les cas
i

suivants : =

f1 = 1100 Hz , a1 = 1 f 2 = 1200 Hz , a 2 = 1 f1 = 510 Hz , a1 = 500 f 2 = 1020 Hz , a 2 = 1

Fe = 8 kHz, L = N = 256

Fe = 8 kHz, L = N = 256

2.4.4 Analyse spectrale d un signal alatoire


a) Gnrer, en utilisant la fonction randn de Matlab, un bruit blanc Gaussien de N=8192 points. Estimer et dessiner ensuite la puissance spectrale de ce signal (en dB), laide des estimateurs simple et moyenn successivement. Vous pouvez utiliser cette fin la fonction psd de Matlab, dont la procdure dappel est la suivante : psd(X,NFFT,Fs,Window) ; O : = X reprsente le signal dont on souhaite estimer la puissance spectrale ; = NFFT est longueur des tranches en lesquelles est dcompos X, la moyenne des estimations spectrales pour chacune de ces tranches tant ensuite calcule (dans le cas o lon a NFFT=length(X), cela revient donc une estimateur spectral simple) ; = Fs vaut la frquence dchantillonnage, utilise des fins de graduation dchelle ; = Window est le type et la longueur de la fentre applique chacune des tranches de signal, lutilisation de boxcar(NFFT) revenant nappliquer aucune fentre; b) De lexprience acquise lors des points prcdents, en dduire la fentre ainsi que le nombre de tranches utiliser pour pouvoir estimer au mieux la puissance spectrale dun signal f ( t ) = ai sin ( 2 f i t ) auquel un bruit blanc Gaussien de
i

variance 5 est superpos :

2 En pratique, F a la valeur qu'on lui donne. Le rsultat en est indpendant. e

LABORATOIRES DE TRAITEMENT DU SIGNAL

13

f1 = 860 Hz , a1 = 1 f 2 = 1015 Hz , a2 = 5

Fe = 8 kHz, N = 1024

14

LABORATOIRES DE TRAITEMENT DU SIGNAL

LABO 3

TRAITEMENT NUMERIQUE DANS LE DOMAINE TEMPOREL SYSTEMES LTI

3.1 Introduction
Un des points essentiels abords lan pass en thorie des circuits tait ltude de leffet dlments simples (R, L, C) sur un signal lectrique analogique. De la mme faon, un des points essentiels en traitement du signal est ltude de leffet doprateurs numriques simples (+, *, z-1) sur un signal numrique. Ces oprations constituent ce que lon appelle une rcurrence linaire. Leur effet peut tre tudi dans le domaine temporel comme dans le domaine spectral. Le lien entre ces deux vues du mme effet est ralis par la transforme en Z. Au cours de cette sance de travaux pratique, nous tudierons des rcurences simples, et vrifierons leurs effets dans le domaine temporel et spectral.

3.2 Rappel Thorique


3.2.1 Rcurrence linaire sur lentre (filtre FIR)
Une des applications les plus importantes de la thorie des circuits est celle du filtrage, qui sexprimait dans le domaine temporel par une convolution entre un signal dentre et la rponse impulsionnelle du filtre :

y (t ) =

x( )h(t ) d

Il est donc logique, par analogie, dtudier leffet dune convolution numrique sur une signal numrique :

y ( n) =

h(i ) x(n i )

i =

Cette opration extrmement simple constitue une rcurrence linaire. Elle est constitue de sommes, de multiplications, et de dlais appliqus au signal dentre. Elle constitue ce que lon appelle un filtre FIR.

LABORATOIRES DE TRAITEMENT DU SIGNAL

15

Nous verrons plus bas quon peut interprter cette rcurrence de deux faons (somme pondre dchantillons somme de rponses impulsionnelles retardes)

3.2.2 Rcurrence linaire sur lentre et sur la sortie (filtre IIR)


On peut facilement tendre la notion de rcurrence linaire en faisant intervenir galement les chantillons de sortie dj calculs :

y ( n) =

b(i ) x(n i ) +

a(i ) y (n i )

i =

i =1

Ce type de rcurrence linaire caractrise ce que lon appelle un filtre IIR. Il est clair quon peut toujours crire galement :

y ( n) =

h(i ) x(n i )

i =

o h(n) est la rponse impulsionnelle du filtre FIR. Cette expression est cependant peu pratique, puisque la dure de h(n) est thoriquement infinie.

3.2.3 Fonction de transfert H(z)


On montre dans le cours que lorsquon associe x(n), y(n), et h(n) leurs transforms en Z respectives, on a :

Y ( z) = X ( z)H ( z)
o H(z) est donn par :

H ( z) =

h(i ) z i

i =

Dans le cas particulier dun filtre IIR, on peut galement crire :

H ( z) =

B( z ) = A( z )

b(i ) z i
(ATTENTION : a(i) au dn, pas b(i))

i =

b(i ) z
i =

Ce polynme H(z) est essentiel. La rponse en frquence du systme linaire est en effet donne par :

H ( ) = H ( z ) ( z = e j )

(o est la pulsation normalise)

On en dduit limportance des zros et des ples de H(z) : le calcul de la rponse en frquence dun systme numrique (en dB) peut tre interprt comme une somme de contributions lmentaires mesurables dans le plan complexe en se dplaant sur le cercle de rayon unit et en mesurant les modules et phases de vecteurs (z-zi) et (z-pi) !

3.2.4 Cas particulier : systme autorgressif


Il a t vu au cours qu'un signal autorgressif x(n) est un signal produit par passage d'un bruit blanc u(n) de moyenne nulle et de variance unit travers un systme autorgressif (AR), c.--d. un systme de type "tout ples" de fonction de transfert :

16

LABORATOIRES DE TRAITEMENT DU SIGNAL


H ( z) =

= A( z )

p i =0

ai z i

On a alors :

X ( z) =

U ( z ) A( z ) U ( e j ) = j A(e ) A(e j )

On en dduit que :

X (e j ) =

Il sagit donc dun type particulier de filtre IIR.

3.3 Commandes Matlab utilises


(Outre les commandes de la sance prcdente). filter, roots, zplane, freqz.

3.4 Traitement dans le domaine temporel


3.4.1 Rcurrence linaires simple : diffrence du premier ordre
On considre la rcurrence suivante :

y (n) = x(n) x(n 1)

(diffrence du premier ordre)

On demande de dterminer (sur papier), puis de visualiser (sous Matlab) : = La rponse impulsionnelle du systme = Sa transforme en Z = Ses ples et zros = Lallure de sa rponse en frquence ; vrifier que cette allure correspond bien la position des ples et zros Quelle serait la sortie d'un tel filtre si l'entre tait constante (voir l'quation de rcurrence)? Ceci correspond-il avec ce que l'on voit sur la rponse en frquence? On demande ensuite de raliser sous Matlab le filtrage (par ce systme) de 500 chantillons dun signal sinusodal 1000 Hz chantillonn 10 kHz (utiliser la fonction filter, qui implmente une rcurrence gnralise)3. Afficher les signaux dentre et de sortie, ainsi que leurs spectres. Vrifier sur ces donnes que les relations entre-sortie sont bien caractrises par la rponse en frquence du filtre.

3.4.2 Rcurrence linaires simple : moyenne 5 termes


Mme chose pour la rcurrence :

3 On pourrait videmment utiliser cette mme fonction pour calculer la rponse impulsionnelle du

systme. Dans le cas simple d'un FIR, c'est inutile : la rponse impulsionnelle est tout simplement la suite des coefficients du filtre.

LABORATOIRES DE TRAITEMENT DU SIGNAL


y ( n) = 1 4 x(n i) 5 i =0
(moyenne 5 termes)

17

Noter que la rponse en frquence obtenue correspond bien lide quon pouvait se faire de lutilit de cette rcurrence : un moyennage local, qui doit correspondre un passe-bas. On demande galement dinterprter cette rcurrence de deux faons : comme une somme pondre dchantillons dentre et comme une somme pondre de rponses impulsionnelles.

3.4.3 Filtre en peigne


Un filtre en peigne est caractris par la fonction de transfert :

H ( z) = 1 z N
Pour une valeur de N=10, rpter la dmarche de la question prcdente. Expliquer, partir dun raisonnement dans le domaine temporel, leffet sur la sinusode 1000 Hz.

3.4.4 Mise en cascade


Considrer le systme linaire constitu de la mise en cascade des systmes tudis en 3.4.1 et 3.4.3. Rpter la dmarche des exercices prcdents. NB : On remarquera au passage que le calcul de la fonction de transfert en z du filtre total est donne par le produit des fonctions de transfert en z des filtres lmentaires, c.--d. par un produit de polynmes. On utilisera donc la fonction conv sous Matlab. On comprend maintenant pourquoi cette fonction de convolution ralise bien le produit de polynmes : elle ralise en ralit la convolution des coefficients de ces polynmes, c.--d. ici la convolution des rponses impulsionnelles des filtres lmentaires, ce qui est logique.

3.4.5 Signal autorgressif


Nous allons pour terminer crer un bruit color, en filtrant un bruit blanc travers un systme autorgressif simple. a) Crer arbitrairement un systme autorgressif d'ordre 4. Ceci ncessite de : = Choisir arbitrairement une valeur de et des coefficients a(i) = S'assurer que le systme correspondant est stable (en visualisant ses ples dans le plan complexe, et la rponse impulsionnelle) = Visualiser sa rponse en frquence

A(e j )

b) Crer un signal autorgressif de 8192 points partir du filtre gnr, visualiser sa densit spectrale de puissance, et comparer la rponse en frquence obtenue au point a)

LABO 4

APPROXIMATION ET SYNTHESE DE FILTRES NUMERIQUES

4.1 Introduction
Le filtrage numrique est une des applications majeures du traitement du signal. La prcdente sance de laboratoire a t consacre ltude de rcurrences simples, et la relation entre rcurrences, transformes en Z, ples et zros correspondants, et rponses en frquence. Ces rcurrences caractrisaient des filtres numriques, dont nous avons donc analys les caractristiques gnrales. Nous allons ici aborder le problme de lapproximation et de la synthse des filtres numriques. Comme ctait dj le cas en Thorie des Circuits, nous commencerons par examiner les possibilits de simples cellules du second degr. Nous poursuivrons ensuite par la synthse de filtres dordre plus lev.

4.2 Rappel Thorique


4.2.1 Filtres numriques du second degr
La synthse des filtres du second degr est rendue paossible par la relation simple qui existe entre leurs ples et zros et leur rponse en frquence. La forme gnrale dun filtre du second degr est :

H ( z) = K

1 + a1 z 1 + a2 z 2 1 + b1 z 1 + b2 z 2

Comme en thorie des circuits, il est pratique de mettre le numrateur ou le dnominateur de cette expression sous une forme qui fasse mieux apparatre les caractristiques des ples et zros :

1 2 cos z 1 + 2 z 2
o est le module du ple ou zro, et o est son argument. Rsonateur du second degr On obtient facilement un rsonateur du second degr en choisissant une paire de ples et un zro (forcment rel) :

20

LABORATOIRES DE TRAITEMENT DU SIGNAL

H ( z) = K

1 + a1 z 1 1 + b1 z 1 + b2 z 2

Largument des ples correspond la frquence de rsonance. Leur module permet de rgler le facteur de qualit de la rsonnance : on montre dans le cours de traitement du signal que la largeur de bande (en pulsation) 3dB de la rsonance est approximativement donne par (lorsque les ples sont suffisamment proches du cercle de rayon unit):

= 2(1 )
Enfin, on montre que, si lon veut que lamplitude du maximum de la rponse en frquence soit indpendante de la frquence de rsonance, il suffit de choisir :

a1 = cos
(c.--d. que le zro est la projection, sur laxe rel, du point dintersection entre le cercle de rayon unit et la droite joignant 0 un ple) Coupe-bande du second degr Il est tout aussi facile de synthtiser un coupe-bande du second degr, avec une paire de zros (et forcment une paire de ples).

1 + a1 z 1 + a2 z 2 H ( z) = K 1 + b1 z 1 + b2 z 2
On place les zros sur le cercle de rayon unit, avec un argument correspondant la pulsation de rsonance :

a1 = 2 cos et a2 = 1
Il est pratique de placer la paire de ples en prolongement direct de la paire de zros :

a1 = 2 cos et a2 = 2
o est le module des ples, qui peut tre rgl de faon grer la largeur de la bande (en pulsation) dans laquelle lattnuation est suprieure 3 dB :

= 2(1 )

4.2.2 Filtres numriques de degr lev


Lapproximation de filtres dordre plus lev peut se faire de deux faons : selon quon cherche crer un filtre rcursif ou non rcursif. Lapproximation de filtres rcursifs seffectue de faon similaire ce qui se faisait en Thorie des Circuits : approximations analytiques Butterworth, Chebyshev, ou Cauer (elliptique). Lapproximation de filtres non-rcursifs est ralise laide de mthodes numriques minimisant lerreur entre les spcifications et la rponse en frquence du filtre. La mthode la plus connue est celle de Parks-McClelland, implmente dans Matlab sous le nom de Remez.

4.3 Commandes Matlab utilises

LABORATOIRES DE TRAITEMENT DU SIGNAL

21

(Outre les commandes de la sance prcdente) filter, ellipord et ellip, remezord et remez.

4.4 Filtrage Numrique


4.4.1 Approximation de filtres du second degr
Soit un signal utile compos dune sinusode 120 Hz 1 Hz, et dont lamplitude est de lordre de 20 V. Ce signal se trouve superpos deux signaux perturbateurs : la tension du rseau 50 Hz 0,1 Hz damplitude 220 V, et un bruit blanc. Le tout est chantillonn 400 Hz. On dsire crer un filtre numrique simple, compos de 2 cellules du second degr (un coupe-bande et un passe-bande), qui permette disoler le mieux possible le signal utile des signaux auxquels il se trouve mlang. On demande par ailleurs que lamplitude du signal utile ne se trouve pas modifie de plus de 1%. On demande de crer un script labo441.m qui permette de: 1. Calculer les fonctions de transferts de ces deux cellules. 2. Vrifier la rponse en frquence de chaque cellule, la position de ses ples et zros, ainsi que la rponse en frquence du filtre complet.

4.4.2 Approximation de filtres dordre lev


On dsire raliser l'approximation d'un filtre passe-bas numrique ( frquence normalise : Fe=1) dont les spcifications sont les suivantes : Bande passante : 0 0.2 avec une tolrance de 0.1 dB (au total) Bande attnue : 0.25 0.5 avec une attnuation d'au moins 60 dB 1. On demande de crer un script labo442.m qui fournisse : = un filtre rcursif (de Cauer) = un filtre non rcursif phase linaire rpondant tous les deux ces spcifications. 2. Pour chacun des filtres : = visualiser la rponse en frquence et la rponse impulsionnelle = visualiser la position des ples et zros = vrifier (avec zoom et ginput) que les spcifications sont bien respectes. 3. Comparer les degrs de ces filtres, et estimer les charges de calcul correspondantes (en nombres doprations par chantillon).

PROJET SYNTHESE DE MUSIQUE SOUS MATLAB

LABO 5 - 6 - 7

5.1 Introduction
Au cours de sances prcdentes, nous avons appris utiliser un certain nombre d'outils fondamentaux en traitement du signal : gnrateurs (et chantillonneurs), analyseurs, et filtres. Ces outils vont maintenant nous permettre de modliser et synthtiser des signaux audio-numriques. Plus prcisment, partir d'un seul exemplaire d'une seule note d'un instrument donn (diffrent pour chaque groupe), le but de notre projet sera de recrer une pice musicale complte utilisant cet instrument. L'tape de modlisation du son sera, dans ces conditions, indispensable : elle nous permettra en effet de modifier certaines caractristiques des sons synthtiss, comme leur dure ou leur frquence fondamentale, tout en conservant le timbre du son de dpart. Pour ce faire, nous aborderons successivement 3 mthodes de synthse (et les mthodes d'analyse associes) : la synthse additive, la synthse soustractive, et la synthse par formes d'ondes.

5.2 Rappels Thoriques


5.2.1 Caractristiques acoustiques des sons
On caractrise souvent un son musical par : = Sa frquence fondamentale (la note joue). Un LA4 (LA dans la quatrime octave d'un clavier de piano) a une frquence de 440 Hz. Dans la musique occidentale, il y a 12 notes par octave, chacune tant distante des autres d'un demi-ton. Les notes sont disposes uniformment sur un axe logarithmique en frquence : un demi-ton correspond un rapport de frquence de 2^(1/12) Hz. = Sa dure. Un son musical est souvent compos d'un transitoire d'attaque, pendant lequel le son s'tablit dans l'instrument et se transforme en son de

24

LABORATOIRES DE TRAITEMENT DU SIGNAL


rgime, puis meurt dans un transitoire d'extinction. On parle souvent d'ADSR : attack-decay-sustain-release.

= Son timbre, caractris principalement par l'volution temporelle de son enveloppe spectrale. L'enveloppe spectrale du son est cre par l'instrument, qui possde souvent un ensemble de frquences de rsonances (et donc une fonction de transfert), et par la source d'excitation (l'anche du saxophone, par exemple), qui possde lui aussi une enveloppe spectrale. Au cours de l'volution (ADSR) d'un son, l'enveloppe spectrale de ce signal d'excitation peut changer, et crer ainsi une variation de l'enveloppe spectrale du son produit. Typiquement, il s'agira d'une attnuation des frquences aigus lors de la phase de relchement.

5.2.2 Synthse additive


Le principe de la synthse additive est de loin le plus simple mettre en uvre. Nous commencerons donc par envisager ce mode de synthse. Modlisation Les modles spectraux occupent une place de choix en traitement du signal. La modlisation harmonique interprte le spectre du signal en termes d'harmoniques d'un frquence fondamentale F0 :

~ x (t ) =
i

ai (t ) cos( i (t )) , avec i (t ) = i (0) + i 2 FO ( ) d


0

ou, dans le domaine discret:

~ x (n) =
i

ai (n) cos( i (n)) , avec i (n) = i (0) +

i j =1

[i 2 FO ( j )]Te

(1)

o i est l'indice des harmoniques, et o ai(t) et i F0 (t) sont respectivement leurs amplitudes et leurs frquences instantanes. Ce modle peut tre tendu aux sons plus complexes : cest le modle hybride harmonique/stochastique, qui ajoute fondamentalement une composante apriodique lquation prcdente:

~ x (t ) = ~ x p (t ) + ~ x r (t ) =
i

ai (t ) cos( i (t )) + ~ x r (t )

(2)

x p (t ) est compltement dfini par ai(t), F0 (t) et i (0), et o ~ x r (t ) est dfini o ~  ( ) . Tout comme les amplitudes et par sa densit spectrale de puissance S rr  ( ) est suppos varier en fonction du temps. frquences des sinusodes, S rr
Estimation des paramtres Lestimation des paramtres de ces modles est dune complexit variable, en fonction de la complexit du signal modliser : = Si le signal est bien priodique, il suffit de mesurer, partir dune FFT, lamplitude des harmoniques. Leur phase est moins importante (en gnral, loreille ne sera pas sensible une dformation du spectre de phase, tant que cette dformation ne varie pas trop dans le temps). = Si le signal contient une composante de bruit, lestimation de lamplitude des harmoniques fournira, au mieux, un modle de la seule composante

LABORATOIRES DE TRAITEMENT DU SIGNAL

25

harmonique. La composante de bruit devrait thoriquement tre estime par mesure de la densit spectrale de puissance de ce quil reste du signal aprs soustraction de ses harmoniques. En pratique, on peut parfois estimer que la composante bruite a une densit spectrale de mme allure que celle du signal complet (harmoniques+bruit). On applique alors un priodogramme (ou toute autre mthode de modlisation spectrale) au signal complet, et on suppose que le bruit compte pour une fraction de ce spectre ( dterminer lcoute). = Enfin, si le signal nest pas bien stationnaire, il convient de rpter la modlisation intervalles rguliers. Un peut par exemple tablir un modle harmonique pour lattaque, un pour le maintien, et un pour le relchement du son. Synthse La complexit de la synthse dun signal harmonique (ventuellement hybride harmonique/stochastique) dpend elle aussi du signal produire : = Pour un signal bien priodique, il suffira de produire une priode du signal ( laide de la formule (1)), et de rpter cette priode, en lui affectant ventuellement une enveloppe de type ADSR dont les coefficients seront adapts au signal. = Pour un signal possdant une composante bruite, on crera un signal harmonique comme dans le point ci-dessus, et on lui superposera une composante bruite (comme dans la formule (2)). Cette composante sera obtenue par filtrage dune bruit blanc avec le filtre ad-hoc. = Pour un signal dont le spectre volue au cours du temps, il faudra procder une interpolation temporelle des amplitudes des harmoniques. (Au pire, il faudra galement appliquer la composante bruite un filtrage dynamique.) Il est noter que, dans ce dernier cas, lutilisation de la formule (1) peut conduire un temps de calcul prohibitif, en raison du nombre destimations de fonctions trigonomtriques (cos). On peut viter ce problme en ralisant la synthse par un procd dit d additionrecouvrement de signaux court-terme (voir figure ci-dessous) : on commence par produire des signaux parfaitement harmoniques par IFFT. Ces signaux sont ensuite pondrs par une fentre de Hanning (qui part de 0, passe par 1 en son centre, et revient vers 0), et additionns les uns aux autres. Lvolution continue du spectre du signal ainsi obtenu provient du fait que, mme si chaque signal de base est parfaitement harmonique, les amplitudes des harmoniques changent dun signal au suivant. Il est clair que, pour que ce type de synthse fonctionne correctement, il est important que les signaux additionns soient en phase (c.--d. que les parties qui se recouvrent se correspondent).

26

LABORATOIRES DE TRAITEMENT DU SIGNAL


Synthesis Frames ~ s k-1 (t) ~ s k (t) ~ s k+1 (t)

Windowing

Synthetic speech

tk-1

tk (tk+1 - tk-1)/2

tk+1

k+2 t

Fig. 1. Synthse par addition-recouvrement Modification de la dure et/ou de la frquence fondamentale Un modle additif pur permet facilement dallonger ou de raccourcir des sons : il suffit en principe de produire plus ou moins de priodes. La modification de la frquence fondamentale est un problme plus complexe : si on veut viter de modifier le timbre, il faut modifier la frquence et lamplitude des harmoniques, de faon conserver lenveloppe spectrale. Les nouvelles valeurs des amplitudes peuvent tre obtenues en chantillonnant lenveloppe spectrale, elle-mme obtenue par interpolation des amplitudes des harmoniques de dpart.

5.2.3 Synthse soustractive


Voir document annexe : "What Is Analogue Synthesis?", qui donne l'organisation gnrale d'un synthtiseur analogique gnrique bas sur la synthse soustractive et en explique les modules.

5.2.4 Synthse par formes d'ondes


Voir document annexe : Synthesis Technology : Wavetable, qui dcrit les principes de base de cette mthode. On notera que la modification de la priode fondamentale, qui est ralise dans la version de base par simple interpolation des formes dondes, ne maintient

LABORATOIRES DE TRAITEMENT DU SIGNAL

27

absolument pas lenveloppe spectrale du signal (c.--d. les frquences de rsonance de linstrument): un son de piano queue dont on augmente la frquence par simple interpolation se transforme vite en un son de piano denfant. Pour pallier cet inconvnient, il est possible dutiliser une mthode de synthse radicalement diffrente (mais qui sinscrit toujours dans le cadre de la synthse par formes dondes) : laddition-recouvrement pitch-synchrone dans le domaine temporel (TD-PSOLA : Time Domain Pitch-Synchronous OverLap Add). Si s(n) est un signal purement priodique, il est en effet possible d'en obtenir un signal ~ s ( n) de mme enveloppe spectrale que s(n) mais de frquence fondamentale diffrente en additionnant des fentres d'OLA si(n), extraites par multiplication de s(n) par une fentre de pondration w(n) synchronise sur le pitch T0 de s(n). La modification de frquence fondamentale se fait en changeant l'cartement temporel entre fentres d'OLA successives (de sa valeur T0 de dpart une valeur T quelconque), et en radditionnant les unes aux autres les fentres d'OLA ainsi cartes (Fig. 2):

si (n) = s(n) w(n - i T0 ) ~ s ( n) =

i =

si (n i (T T0 ))

Cette opration rsulte en effet, d'aprs le thorme de la Somme de Poisson1 en une rharmonisation du spectre de si(n) (qui, si nous supposons le signal de dpart purement priodique, est indpendant de i) avec une nouvelle frquence fondamentale 1/T:

2 si s i (n) S i ( ) alors ~ s ( n) T

i =

Si i

2 2 ( i ) T T

Il s'ensuit que si la fentre de pondration w(n) est choisie de faon ce que le spectre de si(n) approxime l'enveloppe spectrale de s(n), TD-PSOLA fournit un moyen trs simple de modifier la frquence fondamentale d'un signal priodique.

Suivant la formule de Poisson, la somme d'une infinit de versions dcales d'un mme

signal f(t) conduit un signal priodique dont les raies spectrales viennent se positionner exactement sur le spectre du signal de dpart: si
f (t ) F ( ) ,

alors

+ n =

f (t nT0 )

2 T0

F (n
n =

2 2 ) ( n ) (o T0 T0

() est une impulsion de

Dirac)

28

LABORATOIRES DE TRAITEMENT DU SIGNAL

T 0

Fig. 2 Le processus de r-harmonisation spectrale de TD-PSOLA. A gauche, les signaux, droite les spectres correspondants. Le signal modifi (en bas) a bien la mme enveloppe spectrale que le signal de dpart (en haut); mais pas la mme frquence fondamentale. On choisit en pratique souvent une fentre de Hanning ou une fentre triangulaire, avec une longueur gale deux fois la priode de pitch du signal. Une fentre plus large fait apparatre des harmoniques dans le spectre de si(n); une fentre plus courte n'approxime que trs grossirement l'enveloppe spectrale de s(n).

5.3 Synthse de Musique sous Matlab


5.3.1 Analyse du son synthtiser
Wavread permet de charger un .wav sous matlab. Quel est la frquence fondamentale du son tudi? Voir sa forme d'onde et zoomer sur des dtails l'attaque, dans la partie de rgime, et lors de l'extinction. Ecouter (avec sound) le son (en entier, puis par morceaux). Visualiser le spectre du signal diffrents endroits. Essayer de se faire une ide de l'volution de l'enveloppe spectrale du signal. Utiliser specgram pour afficher un sectrogramme du signal. Au vu de tous ces renseignements, le son vous parat-il avoir un timbre varialble dans le temps ? (c.--d. : la forme de son enveloppe spectrale varie-t-elle dans le temps ?)

5.3.2 Synthse additive

LABORATOIRES DE TRAITEMENT DU SIGNAL

29

Outils : fonction adsr et pwlin fournies, sous Matlab. Ces fonctions permettent de produire facilement une courbe de type ADSR, et plus gnralement dinterpoler une fonction linaire par morceaux. Crer une fonction out = additive(freq, ampl, dur), qui fournisse en sortie un signal compos dune somme de cosinusoides dont les frquences sont harmoniques de la valeur donne dans freq et dont les amplitudes sont donnes par le vecteur ampl. La dure du son produit doit tre de dur secondes. Synthse priodique pure Sur base du spectre dune fentre du signal, choisie dans sa partie la plus stable, estimer les amplitudes des harmoniques. Gnrer ensuite par synthse harmonique pure une priode du signal ( la frquence du signal de dpart : pas de changement de frquence). Boucler cette priode et lui appliquer un ADSR raliste. Vrification (ceci sera valable pour toutes les tapes suivantes): afficher les signaux, les couter, et comparer leurs spectres. Synthse harmonique avec variation du timbre Effectuer plusieurs mesures du spectre, de faon ce quune interpolation entre les spectres mesurs permette de reproduire plus fidlement la variation dynamique du timbre. Raliser une synthse dynamique, par somme de cosinus. Synthse harmonique avec transitoire dattaque Essayer de mieux modliser le transitoire dattaque (soit par un bruit color, luimme soumis un ADSR rapide), soit en mmorisant le transitoire et en lajoutant purement et simplement au signal hamronique. Synthse harmonique avec modification de dure Produire, le mieux possible, un son de mme frquence que le prcdent, mais de dure variable (dans un rapport de 0.25 4) Synthse harmonique avec modification de frquence fondamentale Produire, le mieux possible, un son de dure fixe, mais de frquence variable (dans un rapport de 0.25 4)

5.3.3 Synthse soustractive


Simulation de filtres numriques du second degr commands en tension Mettre au point, sur base de la relation simple qui lie les coefficients dun filtre numrique du second degr ses ples et zros, un filtre passe base dont la frquence de rsonance peut tre commande par un vecteur tension . Mme chose pour un filtre passe-haut. Tester ces filtres sur le signal harmonique obtenu en 5.3.2, ainsi que su un bruit blanc. Synthse soustractive Commencer par tablir le schma de principe du synthtiseur qui devrait permettre de produire un son s'apparentant au son reu par le groupe. Faire valider ce schma de principe par lenseignant.

30

LABORATOIRES DE TRAITEMENT DU SIGNAL

Mettre en uvre cette mthode (ce qui ncessitera de simuler des gnrateurs, des filtres, des modulateurs ventuels, et des adsr). Synthse soustractive avec modification de dure et/ou de frquence fondamentale Modifier les paramtres du synthtiseur de faon modifier la dure et/ou de frquence fondamentale du signal sans en modifier le timbre.

5.3.4 Synthse par formes dondes


Bouclage Raliser une fonction out=loop(in, beg, end, dur) qui renvoie un signal de dure dur par bouclage du signal in entre les chantillons beg et end. Tester sur le signal original. Interpolation simple Crer une fonction qui implmente linterpolation simple dun signal en vue de son changement de frquence fondamentale. Tester sur le signal original (rapport de frquences entre 0.25 et 4) TD-PSOLA Crer une fonction qui implmente laddition recouvrement pitch synchrone dun son, en vue de son changement de frquence fondamentale. Tester sur le signal original (rapport de frquences entre 0.25 et 4) Comparer les rsultats ceux obtenus au point prcdent.

Você também pode gostar