Laboratoires de Traitement du Signal - TCTS Lab

Transcription

Laboratoires de Traitement du Signal - TCTS Lab
TRAVAUX PRATIQUES DE
TRAITEMENT DU SIGNAL
4ème Electricité
Première é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
[email protected]
Belgium
http://tcts.fpms.ac.be/~dutoit
2
LABORATOIRES DE TRAITEMENT DU SIGNAL
AVANT-PROPOS
Organisation des séances de travaux pratiques
Ce manuel rassemble une série d’exercices pratiques ayant pour but de
permettre à l’étudiant de mieux comprendre les implications pratiques de son
cours de traitement du signal. L’accent y est mis sur l’utilisation pratique du
logiciel MATLAB pour la conception de systèmes de traitement de signal. Matlab
est en effet un logiciel largement répandu aujourd’hui, autant dans les
universités que dans les centres de recherche et développement, ainsi que dans
l’industrie.
L’ouvrage est divisé en 4 laboratoires et 1 projet. Le projet a pour objet la mise
au point d’un synthétiseur musical sous MATLAB, basé sur les techniques de
synthèse utilisées dans les synthétiseurs commerciaux : synthèse par
interpolation de formes d’ondes – synthèse additive – synthèse soustractive. Le
but de ce projet est de stimuler l’intérêt de l’étudiant pour le traitement du
signal, à travers une démarche de synthèse plutôt que par le biais de travaux
d’analyse. Il ne s’agit donc pas ici d’illustrer le cours, mais bien de le mettre en
pratique.
Dans cette perspective, les laboratoires préparent l’étudiant à réaliser le projet,
en le dotant d’un ensemble d’outils : générateurs, analyseurs, et filtres. On y
aborde donc les problèmes suivants :
1. Génération de
analogiques
signaux
numériques
–
Echantillonnage
de
signaux
2. Analyse spectrale des signaux déterministes et aléatoires
3. Traitement numérique dans le domaine temporel – Systèmes LTI
4. Filtrage numérique : approximation et synthèse
Appréciation du travail de l’étudiant
L’étudiant sera coté en fonction de son niveau de participation aux séances 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 synthèse utilisée : principe, structure modulaire du
synthétiseur, prévision des problèmes à résoudre pour la mise en oeuvre
LABORATOIRES DE TRAITEMENT DU SIGNAL
3
•= le détail des modules implémentés dans MATLAB sous la forme de
fonctions
•= une analyse des résultats fournis : comparaison (auditive, temporelle, et
spectrale) entre les formes d’ondes produites et les formes d’ondes
originales
•= une analyse des performances et des limitations du synthétiseur en termes
de possibilités de modifications des caractéristiques des sons
Le projet sera coté sur ? pour un total annuel de ? points en Traitement
du Signal.
Informations sur le Web
Le présent manuel, ainsi qu’un certain nombre d’informations utiles au
déroulement du projet, sont disponibles sur le site web du cours :
http://tcts.fpms.ac.be/cours/1005-03/
Les étudiants sont par ailleurs invités à me communiquer d’éventuelles autres
sources d’informations utiles, en envoyant un email à :
[email protected]
Le site Web sera également utilisé pour afficher les résultats sonores obtenus,
ainsi que la liste finale des cotations.
LABO 1
GENERATION DE SIGNAUX
NUMERIQUES - ECHANTILLONNAGE
1.1 Introduction
Les systèmes de traitement du signal numérique manipulent des signaux, qui
sont soumis à divers types de traitements par échantillons (typiquement, du
filtrage numérique ou de la modulation) ou par bloc (typiquement, des analyses
spectrales ou des modélisations).
Ces signaux sont soit produits par des sources analogiques et numérisés à l’aide
de convertiseurs analogiques-numériques, soit générés directement sous forme
numérique.
Dans la cadre de cette scéance de travaux pratiques, nous allons envisager la
mise au point de générateurs de signaux numériques, et examiner par la
pratique l’influence de la fréquence d’échantillonnage.
1.2 Rappel Théorique
1.2.1 Echantillonnage – Théorème de Shannon
Lorsqu’on échantillonne un signal x(t) possédant un spectre X(ï), à la fréquence
d’échantillonnage Fe, on obtient le signal numérique x+(t) donné par :
x + (t ) = x(t ) Te ∂Te (t )
où ∂Te (t ) est un train d’impulsions de Dirac espacées de Te.
Les échantillons correspondants sont données par :
x(n) = x + (nTe )
Le spectre X+(ï) de x+(t) est donné par :
X + (ω ) =
∞
n =−∞
X (ω − nω e )
Ceci correspond à une duplication de X(ï) à l’infini, et à une sommation
(complexe) des spectres ainsi dupliqués.
On en déduit immédiatement le théorème de Shannon (dans sa version la plus
simple) : « Pour échantillonner correctement une fonction x(t), il faut que son
6
LABORATOIRES DE TRAITEMENT DU SIGNAL
spectre X(ï) soit borné et que la pulsation d’échantillonnage ïe soit supérieure
ou égale à deux fois la pulsation maximale ïM »
1.2.2 Spectre d’un signal échantillonné – Transformée en z
Le spectre X+(ï) est donné par :
X (ω ) =
+
∞
x + (t )e − jωt 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 transformée en z de x(n),
calculée sur le cercle de rayon unité.
1.2.3 Signaux aléatoires
Un signal aléatoire (ou bruit) n’est pas vraiment défini par ses échantillons, mais
bien plutôt par :
•= sa densité de probabilité (ou, ce qui revient au même, sa fonction de
distribution, qui en est l’intégrale)
•= sa fonction d’autocorrélation (ou, ce qui revient au même, sa densité
spectrale de puissance, qui en est la transformée de Fourier)
Un bruit « blanc » possède une densité spectrale de puissance constante (et donc
une fonction d’autocorrélation impulsionnelle).
Les échantillons d’un bruit uniforme sont distribuée uniformément sur un
intervalle défini. Ceux d’un bruit gaussien possèdent une distribution gaussienne
de moyenne et variance définie.
La variance d’un bruit uniforme entre –q/2 et q/2 est donnée par q²/12.
NB : ces notions seront revues plus en détail dans une prochaine séance de
laboratoire.
1.3 Commandes Matlab utilisées
Nous allons produire des signaux élémentaires. 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 numériques générés. Freqz sera
utilisé selon la synthaxe suivante :
freqz(x,1,'whole')
1 On préférera en général stem à plot pour visualiser un signal composé d'un petit nombre
d'échantillons.
LABORATOIRES DE TRAITEMENT DU SIGNAL
7
Utilisée de cette façon, cette fonction calcule le spectre de x sur 512 points et en
affiche le module et la phase.
1.4 Génération de signaux numériques
1.4.1 Impulsion numérique
Créer une impulsion numérique sur 100 échantillons (un "1" suivi de 99 "0"),
afficher le signal et voir son spectre.
NB : ce signal étant purement numérique (il ne provient pas de l'échantillonnage
d'un signal analogique), il est inutile de spécifier la "fréquence
d'échantillonnage".
1.4.2 Signal aléatoire uniforme – signal aléatoire gaussien
Créer 1000 points d'un signal aléatoire uniforme de moyenne nulle et de variance
égale à 1, afficher le signal, afficher son histogramme, et voir son spectre.
Même chose pour un signal aléatoire gaussien de moyenne nulle et de variance
égale à 1.
NB : Il est important de noter qu’on ne visualise pas à proprement parler les
« spectres » de ces signaux aléatoires, ni même leur densité spectrale de
puissance : le calcul s’effectue sur un nombre fini d’échantillons, ce qui tronque
la somme de la formule du point 1.2.2, et ne donne donc le spectre du signal que
de façon tres approximative.
1.4.3 Signal sinusoidal
Simuler l’échantillonnage à 10 kHz d’une sinusoïde de fréquence f de 600 Hz.
Calculer 200 échantillons, visualiser le signal échantillonné, et son spectre.
Obtient-on ce à quoi on doit s’attendre (en amplitude et en fréquence)?
Répéter l’opération pour f = 1000, 4400, 5000, 5600, 9400, 10600 Hz. Ceci doit
illustrer clairement le théorème de Shannon.
NB : Il est important de noter qu’ici aussi on ne visualise pas à proprement parler
les spectres de ces signaux, pour les mêmes raisons que plus haut. Nous
examinerons ce problème plus en détail lors d’une prochaine séance.
1.4.4 Signal de type « sinc » (sinus cardinal)
sin (ω c t )
, dont la transformée de Fourier est X (ω ) . Dans le cas
πt
où ω c = 2πf c , avec f c = 1000 Hz , on demande de :
Soit le signal x(t ) =
a) Calculer la valeur théorique de X (ω ) ;
b) Dessiner X + (ω ) , lorsque le signal est échantillonné aux fréquences suivantes :
•= Fe = 4000 Hz
•= Fe = 2000 Hz
•= Fe = 1500 Hz
Ces différents spectres font clairement apparaître le problème du recouvrement
spectral.
8
LABORATOIRES DE TRAITEMENT DU SIGNAL
c) Pour chacune de ces fréquences d’échantillonnage, visualiser sous Matlab le
signal résultant de l’échantillonnage 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 (même
problème que plus haut : si N est trop petit, le somme du point 1.2.2 est
tronquée.
LABO 2
ANALYSE SPECTRALE DES
SIGNAUX DETERMINISTES ET
ALEATOIRES
2.1 Introduction
Il a été revu lors de la séance précédente que le choix de la période
d'échantillonnage Te joue sur le phénomène de repliement spectral. Plus Te est
petit, plus faible est le repliement. Le théorème de Shannon impose dès lors un
filtre de garde, qui permet d’éviter cet effet perturbateur.
Cependant, dans la plupart des spectres examinés dans la séance précédente, on
constatait une différence parfois importante avec les spectres théoriques.
Le but de cette séance de laboratoire est de mieux comprendre la raison de ces
différences, et d’en maîtriser l’effet.
2.2 Rappel Théorique
2.2.1 Analyse spectrale à court terme
La plupart des signaux réels ne sont pas complètement stationnaires. Leur
contenu spectral évolue au cours du temps. On cherche en général à caractériser
ce contenu spectral a un instant donné, ce qui implique qu’on n’analyse pas
l’ensemble des échantillons du signal, mais bien seulement un nombre L de ces
échantillons, qu’on appelle tranche de signal.
L’effet de ce découpage en tranches est simple : prendre L échantillons est
équivalent à multiplier le signal par une fenêtre de pondération rectangulaire (un
signal de L échantillons valant « 1 » entourés par une infinité de « 0 »). Par
conséquent, le spectre de la tranche sera le résultat de la convolution du
spectre du signal par celui de la fenêtre de pondération.
La spectre de la fenêtre rectangulaire est facile a obtenir :
10
LABORATOIRES DE TRAITEMENT DU SIGNAL
W (ω ) =
∞
w(n)e− jω nTe
−∞
= 1 + e− jωTe + e − jω 2Te + ... + e − jω ( L −1)Te
=
=
1 − e − jω LTe
1 − e − jωTe
e
e
− jω L Te
2
− jω 1 Te
2
sin(ω L Te )
2
sin(ω 1 Te )
2
Il s’agit donc d’une « fonction pieuvre » de période Fe (Hz).
On constate bien entendu que plus L est grand, plus le spectre de la fenêtre de
pondération 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 expérimentalement (voir
labo) que la différence d’amplitude entre le lobe principal et les lobes
secondaires est de l’ordre de 13 dB.
Ces deux caractéristiques impliquent que l’utilisation d’une fenêtre rectangulaire
ne permettra en général pas de distinguer deux sinusoïdes dont les fréquences
seraient espacées de moins de Fe/L (Hz) ou dont les amplitudes seraient dans un
rapport de plus de 13 dB.
Il est donc souvent utile d’utiliser d’autres fenêtres de pondération, dont l’allure
est calculée pour offrir de meilleures possibilités de séparation spectrale en
amplitude ou en fréquence : fenêtre de Hamming, fenêtre de Blackman. Ces
deux fenêtres ont des spectres d’allure semblable au précédent (fonctions
« pieuvre »), mais leur résolution spectrale va décroissant, alors que leur
résolution en amplitude va croissant (voir labo).
2.2.2 Analyse spectrale discrétisée en fréquence
Lors de la séance précédente, nous avons utilisé la fonction freqz(x,1,'whole')
pour calculer et afficher la transformée de Fourier de la suite d’échantillons x.
Cette fonction réalise en réalité la FFT de x sur 1024 points par défaut et en
affiche le module en dB1. La fonction renvoie alors 512 points en fréquence entre
0 et Fe/2. Comme le calcul se fait sur 1024 points en fréquence, elle attend en
entrée 1024 échantillons. Lorsque le nombre L de points de x est inférieur à
1024, x est complété par des « 0 ». On peut imposer à la fonction de travailler
sur un nombre de points N différent de 1024, avec freqz(x,1,N,'whole').
Dans tous les cas, il est clair que le spectre affiché n’est qu’une version
échantillonnée du spectre de x : les points affichés sont distants de Fe/N
(Hz).
Cet effet est d’autant 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 n’est un exposant de 2.
LABORATOIRES DE TRAITEMENT DU SIGNAL
11
2.3 Commandes Matlab utilisées
(Outre les commandes de la séance précédente) hamming, blackman, psd
(power spectral density, pour l’estimation spectrale avec périodogramme) .
2.4 Analyse spectrale
2.4.1 Analyse spectrale de sinusoïdes
Pour chacun des signaux suivants, prédéterminer ce qui sera affiché par freqz,
puis vérifier sous Matlab:
•= 32 points d’un sinusoïde de fréquence 2650 Hz échantillonnée à 10 kHz
(c’est le cas général : la fréquence de la sinusoïde est quelconque par
rapport à la fréquence d’échantillonnage); on choisira de réaliser le
calcul sur 32 points également : N=L.
•= Même chose avec N=256
•= 32 points d’un sinusoïde de fréquence 2500 Hz échantillonnée à 10 kHz;
(c’est la cas particulier d’un sinusoïde de fréquence égale à un multiple
de Fe/N); on choisira de réaliser le calcul sur 32 points également : N=L.
•= Même signal que ci-dessus, mais forcer N à 256 points (L restant
inchangé : on sort du cas précédent);
2.4.2 Analyse spectrale de plusieurs sinusoïdes
Soit
x (t ) =
un
signal
ai sin ( 2π fi t ) .
composé
d’une
somme
pondérée
de
sinusoïdes :
i
Prédéterminer, et vérifier ensuite, les valeurs de Fe et N à utiliser pour pouvoir
observer avec précision, tout en maintenant minimale la charge de calcul, les
trois fréquences suivantes :
f1 = 158 Hz , a1 = 1
í f 2 = 312 Hz , a2 = 1
î f 3 = 401 Hz , a3 = 1
2.4.3 Utilisation de fenêtres de pondération
a) Sous Matlab, on veut examiner les propriétés spectrales des fenêtres
suivantes :
•= fenêtre rectangulaire (fournie par la fonction boxcar)
•= fenêtre de Hamming (fournie par la fonction hamming)
•= fenêtre de Blackman (fournie par la fonction blackman)
On demande d’afficher les spectres des 4 fenêtres, et de mesurer, dans chaque
cas
1. la différence 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 vérifier les valeurs suivantes:
Rectangulaire
Hamming
Blackman
D
13 dB
40 dB
60 dB
LP
Fe/L
2 Fe/L
2.75 Fe/L
b) En déduire, et vérifier ensuite sous Matlab, la fenêtre à utiliser pour pouvoir
distinguer au mieux les fréquences d’un signal f ( t ) =
ai sin ( 2π fi ) t dans les cas
i
suivants :
•=
•=
f1 = 1100 Hz , a1 = 1
Fe = 8 kHz, L = N = 256
f 2 = 1200 Hz , a 2 = 1
f1 = 510 Hz , a1 = 500
Fe = 8 kHz, L = N = 256
f 2 = 1020 Hz , a 2 = 1
2.4.4 Analyse spectrale d’ un signal aléatoire
a) Générer, 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), à l’aide des estimateurs simple et moyenné successivement. Vous
pouvez utiliser à cette fin la fonction psd de Matlab, dont la procédure d’appel
est la suivante :
psd(X,NFFT,Fs,Window) ;
Où :
•= X représente le signal dont on souhaite estimer la puissance spectrale ;
•= NFFT est longueur des tranches en lesquelles est décomposé X, la
moyenne des estimations spectrales pour chacune de ces tranches étant
ensuite calculée (dans le cas où l’on a NFFT=length(X), cela revient
donc à une estimateur spectral simple) ;
•= Fs vaut la fréquence d’échantillonnage, utilisée à des fins de graduation
d’échelle ;
•= Window est le type et la longueur de la fenêtre appliquée à chacune des
tranches de signal, l’utilisation de boxcar(NFFT) revenant à n’appliquer
aucune fenêtre;
b) De l’expérience acquise lors des points précédents, en déduire la fenêtre ainsi
que le nombre de tranches à utiliser pour pouvoir estimer au mieux la puissance
spectrale d’un 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 résultat en est indépendant.
e
LABORATOIRES DE TRAITEMENT DU SIGNAL
•=
f1 = 860 Hz , a1 = 1
f 2 = 1015 Hz , a2 = 5
Fe = 8 kHz, N = 1024
13
14
LABORATOIRES DE TRAITEMENT DU SIGNAL
LABO 3
TRAITEMENT NUMERIQUE DANS
LE DOMAINE TEMPOREL SYSTEMES LTI
3.1 Introduction
Un des points essentiels abordés l’an passé en théorie des circuits était l’étude de
l’effet d’éléments simples (R, L, C) sur un signal électrique analogique. De la
même façon, un des points essentiels en traitement du signal est l’étude de
l’effet d’opérateurs numériques simples (+, *, z-1) sur un signal numérique. Ces
opérations constituent ce que l’on appelle une récurrence linéaire. Leur effet peut
être étudié dans le domaine temporel comme dans le domaine spectral. Le lien
entre ces deux vues du même effet est réalisé par la transformée en Z.
Au cours de cette séance de travaux pratique, nous étudierons des récurences
simples, et vérifierons leurs effets dans le domaine temporel et spectral.
3.2 Rappel Théorique
3.2.1 Récurrence linéaire sur l’entrée (filtre FIR)
Une des applications les plus importantes de la théorie des circuits est celle du
filtrage, qui s’exprimait dans le domaine temporel par une convolution entre un
signal d’entrée et la réponse impulsionnelle du filtre :
y (t ) =
∞
x(τ )h(t − τ ) dτ
−∞
Il est donc logique, par analogie, d’étudier l’effet d’une convolution numérique
sur une signal numérique :
y ( n) =
∞
h(i ) x(n − i )
i =−∞
Cette opération extrêmement simple constitue une récurrence linéaire. Elle est
constituée de sommes, de multiplications, et de délais appliqués au signal
d’entrée. Elle constitue ce que l’on appelle un filtre FIR.
LABORATOIRES DE TRAITEMENT DU SIGNAL
15
Nous verrons plus bas qu’on peut interpréter cette récurrence de deux façons
(somme pondérée d’échantillons – somme de réponses impulsionnelles
retardées)
3.2.2 Récurrence linéaire sur l’entrée et sur la sortie (filtre IIR)
On peut facilement étendre la notion de récurrence linéaire en faisant intervenir
également les échantillons de sortie déjà calculés :
∞
y ( n) =
b(i ) x(n − i ) +
i =−∞
∞
a(i ) y (n − i )
i =1
Ce type de récurrence linéaire caractérise ce que l’on appelle un filtre IIR.
Il est clair qu’on peut toujours écrire également :
∞
y ( n) =
h(i ) x(n − i )
i =−∞
où h(n) est la réponse impulsionnelle du filtre FIR. Cette expression est
cependant peu pratique, puisque la durée de h(n) est théoriquement infinie.
3.2.3 Fonction de transfert H(z)
On montre dans le cours que lorsqu’on associe à x(n), y(n), et h(n) leurs
transformés 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 d’un filtre IIR, on peut également écrire :
∞
H ( z) =
B( z )
=
A( z )
b(i ) z − i
i =−∞
∞
(ATTENTION : a(i) au dén, pas b(i))
b(i ) z
−i
i =−∞
Ce polynôme H(z) est essentiel. La réponse en fréquence du système linéaire est
en effet donnée par :
H (φ ) = H ( z ) ( z = e jφ )
(où Ñ est la pulsation normalisée)
On en déduit l’importance des zéros et des pôles de H(z) : le calcul de la
réponse en fréquence d’un système numérique (en dB) peut être
interprété comme une somme de contributions élémentaires mesurables
dans le plan complexe en se déplaçant 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 : système autorégressif
Il a été vu au cours qu'un signal autorégressif x(n) est un signal produit par
passage d'un bruit blanc u(n) de moyenne nulle et de variance unité à travers un
système autorégressif (AR), c.-à-d. un système de type "tout pôles" 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 )
On en déduit que :
X (e jϕ ) =
σU ( e jϕ )
σ
=
jϕ
A(e )
A(e jϕ )
Il s’agit donc d’un type particulier de filtre IIR.
3.3 Commandes Matlab utilisées
(Outre les commandes de la séance précédente). filter, roots, zplane, freqz.
3.4 Traitement dans le domaine temporel
3.4.1 Récurrence linéaires simple : différence du premier ordre
On considère la récurrence suivante :
y (n) = x(n) − x(n − 1)
(différence du premier ordre)
On demande de déterminer (sur papier), puis de visualiser (sous Matlab) :
•= La réponse impulsionnelle du système
•= Sa transformée en Z
•= Ses pôles et zéros
•= L’allure de sa réponse en fréquence ; vérifier que cette allure correspond
bien à la position des pôles et zéros
Quelle serait la sortie d'un tel filtre si l'entrée était constante (voir l'équation de
récurrence)? Ceci correspond-il avec ce que l'on voit sur la réponse en
fréquence?
On demande ensuite de réaliser sous Matlab le filtrage (par ce système) de 500
échantillons d’un signal sinusoïdal à 1000 Hz échantillonné à 10 kHz (utiliser la
fonction filter, qui implémente une récurrence généralisée)3. Afficher les signaux
d’entrée et de sortie, ainsi que leurs spectres. Vérifier sur ces données que les
relations entrée-sortie sont bien caractérisées par la réponse en fréquence du
filtre.
3.4.2 Récurrence linéaires simple : moyenne à 5 termes
Même chose pour la récurrence :
3 On pourrait évidemment utiliser cette même fonction pour calculer la réponse impulsionnelle du
système. Dans le cas simple d'un FIR, c'est inutile : la réponse 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
17
(moyenne à 5 termes)
Noter que la réponse en fréquence obtenue correspond bien à l’idée qu’on
pouvait se faire de l’utilité de cette récurrence : un moyennage local, qui doit
correspondre à un passe-bas.
On demande également d’interpréter cette récurrence de deux façons : comme
une somme pondérée d’échantillons d’entrée et comme une somme pondérée de
réponses impulsionnelles.
3.4.3 Filtre en peigne
Un filtre en peigne est caractérisé par la fonction de transfert :
H ( z) = 1 − z − N
Pour une valeur de N=10, répéter la démarche de la question précédente.
Expliquer, à partir d’un raisonnement dans le domaine temporel, l’effet sur la
sinusoïde à 1000 Hz.
3.4.4 Mise en cascade
Considérer le système linéaire constitué de la mise en cascade des systèmes
étudiés en 3.4.1 et 3.4.3.
Répéter la démarche des exercices précédents.
NB : On remarquera au passage que le calcul de la fonction de transfert en z du
filtre total est donnée par le produit des fonctions de transfert en z des filtres
élémentaires, c.-à-d. par un produit de polynômes. On utilisera donc la fonction
conv sous Matlab. On comprend maintenant pourquoi cette fonction de
convolution réalise bien le produit de polynômes : elle réalise en réalité la
convolution des coefficients de ces polynômes, c.-à-d. ici la convolution des
réponses impulsionnelles des filtres élémentaires, ce qui est logique.
3.4.5 Signal autorégressif
Nous allons pour terminer créer un bruit coloré, en filtrant un bruit blanc à
travers un système autorégressif simple.
a) Créer arbitrairement un système autorégressif d'ordre 4. Ceci nécessite de :
•= Choisir arbitrairement une valeur de σ et des coefficients a(i)
•= S'assurer que le système correspondant est stable (en visualisant ses
pôles dans le plan complexe, et la réponse impulsionnelle)
•= Visualiser sa réponse en fréquence
σ
A(e jϕ )
b) Créer un signal autorégressif de 8192 points à partir du filtre généré,
visualiser sa densité spectrale de puissance, et comparer à la réponse en
fréquence obtenue au point a)
LABO 4
APPROXIMATION ET SYNTHESE
DE FILTRES NUMERIQUES
4.1 Introduction
Le filtrage numérique est une des applications majeures du traitement du signal.
La précédente séance de laboratoire a été consacrée à l’étude de récurrences
simples, et à la relation entre récurrences, transformées en Z, pôles et zéros
correspondants, et réponses en fréquence. Ces récurrences caractérisaient des
filtres numériques, dont nous avons donc analysé les caractéristiques générales.
Nous allons ici aborder le problème de l’approximation et de la synthèse des
filtres numériques. Comme c’était déjà le cas en Théorie des Circuits, nous
commencerons par examiner les possibilités de simples cellules du second degré.
Nous poursuivrons ensuite par la synthèse de filtres d’ordre plus élevé.
4.2 Rappel Théorique
4.2.1 Filtres numériques du second degré
La synthèse des filtres du second degré est rendue paossible par la relation
simple qui existe entre leurs pôles et zéros et leur réponse en fréquence.
La forme générale d’un filtre du second degré est :
H ( z) = K
1 + a1 z −1 + a2 z −2
1 + b1 z −1 + b2 z −2
Comme en théorie des circuits, il est pratique de mettre le numérateur ou le
dénominateur de cette expression sous une forme qui fasse mieux apparaître les
caractéristiques des pôles et zéros :
1 − 2 ρ cos θ z −1 + ρ 2 z −2
où ê est le module du pôle ou zéro, et où è est son argument.
Résonateur du second degré
On obtient facilement un résonateur du second degré en choisissant une paire de
pôles et un zéro (forcément réel) :
20
LABORATOIRES DE TRAITEMENT DU SIGNAL
H ( z) = K
1 + a1 z −1
1 + b1 z −1 + b2 z −2
L’argument des pôles correspond à la fréquence de résonance. Leur module
permet de régler le facteur de qualité de la résonnance : on montre dans le cours
de traitement du signal que la largeur de bande (en pulsation) à 3dB de la
résonance est approximativement donnée par (lorsque les pôles sont
suffisamment proches du cercle de rayon unité):
∆ϕ = 2(1 − ρ )
Enfin, on montre que, si l’on veut que l’amplitude du maximum de la réponse en
fréquence soit indépendante de la fréquence de résonance, il suffit de choisir :
a1 = − cos θ
(c.-à-d. que le zéro est la projection, sur l’axe réel, du point d’intersection entre
le cercle de rayon unité et la droite joignant 0 à un pôle)
Coupe-bande du second degré
Il est tout aussi facile de synthétiser un coupe-bande du second degré, avec une
paire de zéros (et forcément une paire de pôles).
1 + a1 z −1 + a2 z −2
H ( z) = K
1 + b1 z −1 + b2 z −2
On place les zéros sur le cercle de rayon unité, avec un argument correspondant
à la pulsation de résonance :
a1 = −2 cosθ et a2 = 1
Il est pratique de placer la paire de pôles en prolongement direct de la paire de
zéros :
a1 = −2 ρ cos θ et a2 = ρ 2
où ê est le module des pôles, qui peut être réglé de façon à gérer la largeur de la
bande (en pulsation) dans laquelle l’atténuation est supérieure à 3 dB :
∆ϕ = 2(1 − ρ )
4.2.2 Filtres numériques de degré élevé
L’approximation de filtres d’ordre plus élevé peut se faire de deux façons : selon
qu’on cherche à créer un filtre récursif ou non récursif.
L’approximation de filtres récursifs s’effectue de façon similaire à ce qui se faisait
en Théorie des Circuits : approximations analytiques Butterworth, Chebyshev, ou
Cauer (elliptique).
L’approximation de filtres non-récursifs est réalisée à l’aide de méthodes
numériques minimisant l’erreur entre les spécifications et la réponse en
fréquence du filtre. La méthode la plus connue est celle de Parks-McClelland,
implémentée dans Matlab sous le nom de Remez.
4.3 Commandes Matlab utilisées
LABORATOIRES DE TRAITEMENT DU SIGNAL
21
(Outre les commandes de la séance précédente) filter, ellipord et ellip,
remezord et remez.
4.4 Filtrage Numérique
4.4.1 Approximation de filtres du second degré
Soit un signal utile composé d’une sinusoïde à 120 Hz ± 1 Hz, et dont l’amplitude
est de l’ordre de 20 V. Ce signal se trouve superposé à deux signaux
perturbateurs : la tension du réseau à 50 Hz ± 0,1 Hz d’amplitude 220 V, et un
bruit blanc. Le tout est échantillonné à 400 Hz.
On désire créer un filtre numérique simple, composé de 2 cellules du second
degré (un coupe-bande et un passe-bande), qui permette d’isoler le mieux
possible le signal utile des signaux auxquels il se trouve mélangé. On demande
par ailleurs que l’amplitude du signal utile ne se trouve pas modifiée de plus de
1%.
On demande de créer un script labo441.m qui permette de:
1. Calculer les fonctions de transferts de ces deux cellules.
2. Vérifier la réponse en fréquence de chaque cellule, la position de ses pôles et
zéros, ainsi que la réponse en fréquence du filtre complet.
4.4.2 Approximation de filtres d’ordre élevé
On désire réaliser l'approximation d'un filtre passe-bas numérique (à fréquence
normalisée : Fe=1) dont les spécifications sont les suivantes :
Bande passante : 0 à 0.2 avec une tolérance de 0.1 dB (au total)
Bande atténuée : 0.25 à 0.5 avec une atténuation d'au moins 60 dB
1. On demande de créer un script labo442.m qui fournisse :
•= un filtre récursif (de Cauer)
•= un filtre non récursif à phase linéaire
répondant tous les deux à ces spécifications.
2. Pour chacun des filtres :
•= visualiser la réponse en fréquence et la réponse impulsionnelle
•= visualiser la position des pôles et zéros
•= vérifier (avec zoom et ginput) que les spécifications sont bien
respectées.
3. Comparer les degrés de ces filtres, et estimer les charges de calcul
correspondantes (en nombres d’opérations par échantillon).
LABO 5 - 6 - 7
PROJET
SYNTHESE DE MUSIQUE SOUS
MATLAB
5.1 Introduction
Au cours de séances précédentes, nous avons appris à utiliser un certain nombre
d'outils fondamentaux en traitement du signal : générateurs (et
échantillonneurs), analyseurs, et filtres.
Ces outils vont maintenant nous permettre de modéliser et synthétiser des
signaux audio-numériques. Plus précisément, à partir d'un seul exemplaire d'une
seule note d'un instrument donné (différent pour chaque groupe), le but de notre
projet sera de recréer une pièce musicale complète utilisant cet instrument.
L'étape de modélisation du son sera, dans ces conditions, indispensable : elle
nous permettra en effet de modifier certaines caractéristiques des sons
synthétisés, comme leur durée ou leur fréquence fondamentale, tout en
conservant le timbre du son de départ.
Pour ce faire, nous aborderons successivement 3 méthodes de synthèse (et les
méthodes d'analyse associées) : la synthèse additive, la synthèse
soustractive, et la synthèse par formes d'ondes.
5.2 Rappels Théoriques
5.2.1 Caractéristiques acoustiques des sons
On caractérise souvent un son musical par :
•= Sa fréquence fondamentale (la note jouée). Un LA4 (LA dans la quatrième
octave d'un clavier de piano) a une fréquence 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 disposées uniformément sur un axe logarithmique
en fréquence : un demi-ton correspond à un rapport de fréquence de
2^(1/12) Hz.
•= Sa durée. 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
régime, puis meurt dans un transitoire d'extinction. On parle souvent d'ADSR
: attack-decay-sustain-release.
•= Son timbre, caractérisé principalement par l'évolution temporelle de son
enveloppe spectrale. L'enveloppe spectrale du son est créée par l'instrument,
qui possède souvent un ensemble de fréquences de résonances (et donc une
fonction de transfert), et par la source d'excitation (l'anche du saxophone, par
exemple), qui possède 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 créer ainsi une variation de l'enveloppe spectrale du son
produit. Typiquement, il s'agira d'une atténuation des fréquences aiguës lors
de la phase de relâchement.
5.2.2 Synthèse additive
Le principe de la synthèse additive est de loin le plus simple à mettre en œuvre.
Nous commencerons donc par envisager ce mode de synthèse.
Modélisation
Les modèles spectraux occupent une place de choix en traitement du signal. La
modélisation harmonique interprète le spectre du signal en termes
d'harmoniques d'un fréquence fondamentale F0 :
t
~
x (t ) =
ai (t ) cos(φ i (t )) , avec φ i (t ) = φ i (0) + i 2π FO (τ ) dτ
i
0
ou, dans le domaine discret:
~
x (n) =
ai (n) cos(φ i (n)) , avec φ i (n) = φ i (0) +
i
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 fréquences instantanées.
Ce modèle peut être étendu aux sons plus complexes : c’est le modèle hybride
harmonique/stochastique, qui ajoute fondamentalement une composante
apériodique à l’équation précédente:
~
x (t ) = ~
x p (t ) + ~
x r (t ) =
ai (t ) cos(φ i (t )) + ~
x r (t )
(2)
i
x p (t ) est complètement défini par ai(t), F0 (t) et ϕ i (0), et où ~
x r (t ) est défini
où ~
par sa densité spectrale de puissance Srr (ω ) . Tout comme les amplitudes et
fréquences des sinusoïdes, Srr (ω ) est supposé varier en fonction du temps.
Estimation des paramètres
L’estimation des paramètres de ces modèles est d’une complexité variable, en
fonction de la complexité du signal à modéliser :
•= Si le signal est bien périodique, il suffit de mesurer, à partir d’une FFT,
l’amplitude des harmoniques. Leur phase est moins importante (en
général, l’oreille ne sera pas sensible à une déformation du spectre de
phase, tant que cette déformation ne varie pas trop dans le temps).
•= Si le signal contient une composante de bruit, l’estimation de l’amplitude
des harmoniques fournira, au mieux, un modèle de la seule composante
LABORATOIRES DE TRAITEMENT DU SIGNAL
25
harmonique. La composante de bruit devrait théoriquement être estimée
par mesure de la densité spectrale de puissance de ce qu’il reste du signal
après soustraction de ses harmoniques. En pratique, on peut parfois
estimer que la composante bruitée a une densité spectrale de même allure
que celle du signal complet (harmoniques+bruit). On applique alors un
périodogramme (ou toute autre méthode de modélisation spectrale) au
signal complet, et on suppose que le bruit compte pour une fraction de ce
spectre (à déterminer à l’écoute).
•= Enfin, si le signal n’est pas bien stationnaire, il convient de répéter la
modélisation à intervalles réguliers. Un peut par exemple établir un
modèle harmonique pour l’attaque, un pour le maintien, et un pour le
relâchement du son.
Synthèse
La complexité de la synthèse d’un signal harmonique (éventuellement hybride
harmonique/stochastique) dépend elle aussi du signal à produire :
•= Pour un signal bien périodique, il suffira de produire une période du signal
(à l’aide de la formule (1)), et de répéter cette période, en lui affectant
éventuellement une enveloppe de type ADSR dont les coefficients seront
adaptés au signal.
•= Pour un signal possédant une composante bruitée, on créera un signal
harmonique comme dans le point ci-dessus, et on lui superposera une
composante bruitée (comme dans la formule (2)). Cette composante sera
obtenue par filtrage d’une bruit blanc avec le filtre ad-hoc.
•= Pour un signal dont le spectre évolue au cours du temps, il faudra
procéder à une interpolation temporelle des amplitudes des harmoniques.
(Au pire, il faudra également appliquer à la composante bruitée un filtrage
dynamique.)
Il est à noter que, dans ce dernier cas, l’utilisation de la formule (1) peut
conduire à un temps de calcul prohibitif, en raison du nombre
d’estimations de fonctions trigonométriques (cos). On peut éviter ce
problème en réalisant la synthèse par un procédé 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 pondérés par une fenêtre de Hanning (qui part
de 0, passe par 1 en son centre, et revient vers 0), et additionnés les uns
aux autres. L’évolution continue du spectre du signal ainsi obtenu provient
du fait que, même si chaque signal de base est parfaitement harmonique,
les amplitudes des harmoniques changent d’un signal au suivant. Il est
clair que, pour que ce type de synthèse fonctionne correctement, il est
important que les signaux additionnés 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+2
(tk+1 - tk-1)/2
Fig. 1. Synthèse par addition-recouvrement
Modification de la durée et/ou de la fréquence fondamentale
Un modèle additif pur permet facilement d’allonger ou de raccourcir des sons : il
suffit en principe de produire plus ou moins de périodes.
La modification de la fréquence fondamentale est un problème plus complexe : si
on veut éviter de modifier le timbre, il faut modifier la fréquence et l’amplitude
des harmoniques, de façon à conserver l’enveloppe spectrale. Les nouvelles
valeurs des amplitudes peuvent être obtenues en échantillonnant l’enveloppe
spectrale, elle-même obtenue par interpolation des amplitudes des harmoniques
de départ.
5.2.3 Synthèse soustractive
Voir document annexe : "What Is Analogue Synthesis?", qui donne l'organisation
générale d'un synthétiseur analogique générique basé sur la synthèse
soustractive et en explique les modules.
5.2.4 Synthèse par formes d'ondes
Voir document annexe : “Synthesis Technology : Wavetable”, qui décrit les
principes de base de cette méthode.
On notera que la modification de la période fondamentale, qui est réalisée dans
la version de base par simple interpolation des formes d’ondes, ne maintient
LABORATOIRES DE TRAITEMENT DU SIGNAL
27
absolument pas l’enveloppe spectrale du signal (c.-à-d. les fréquences de
résonance de l’instrument): un son de piano à queue dont on augmente la
fréquence par simple interpolation se transforme vite en un son de piano
d’enfant.
Pour pallier cet inconvénient, il est possible d’utiliser une méthode de synthèse
radicalement différente (mais qui s’inscrit toujours dans le cadre de la synthèse
par formes d’ondes) : l’addition-recouvrement pitch-synchrone dans le domaine
temporel (TD-PSOLA : Time Domain Pitch-Synchronous OverLap Add).
Si s(n) est un signal purement périodique, il est en effet possible d'en obtenir un
signal ~
s ( n) de même enveloppe spectrale que s(n) mais de fréquence
fondamentale différente en additionnant des fenêtres d'OLA si(n), extraites par
multiplication de s(n) par une fenêtre de pondération w(n) synchronisée sur le
pitch T0 de s(n). La modification de fréquence fondamentale se fait en changeant
l'écartement temporel entre fenêtres d'OLA successives (de sa valeur T0 de
départ à une valeur T quelconque), et en réadditionnant les unes aux autres les
fenêtres d'OLA ainsi écartées (Fig. 2):
si (n) = s(n) w(n - i T0 )
~
s ( n) =
∞
si (n − i (T − T0 ))
i =−∞
Cette opération résulte en effet, d'après le théorème de la Somme de
Poisson1 en une réharmonisation du spectre de si(n) (qui, si nous supposons le
signal de départ purement périodique, est indépendant de i) avec une nouvelle
fréquence fondamentale 1/T:
2π
ℑ
ℑ
si s i (n) ←→
S i (ω ) alors ~
s (n) ←→
T
2π
æ 2π ö
δ (ω − i )
Si ç i
T
è T
i = −∞
∞
Il s'ensuit que si la fenêtre de pondération w(n) est choisie de façon à ce que le
spectre de si(n) approxime l'enveloppe spectrale de s(n), TD-PSOLA fournit un
moyen très simple de modifier la fréquence fondamentale d'un signal périodique.
1
Suivant la formule de Poisson, la somme d'une infinité de versions décalées d'un même
signal f(t) conduit à un signal périodique dont les raies spectrales viennent se positionner
exactement sur le spectre du signal de départ:
si
ℑ
f (t ) ←→
F (ω ) ,
alors
+∞
n = −∞
Dirac)
f (t − nT0 ) ←→
ℑ
2π
T0
+∞
F (n
n = −∞
2π
2π
)δ (ω − n ) (où
T0
T0
δ () est une impulsion de
28
LABORATOIRES DE TRAITEMENT DU SIGNAL
T0
L
T
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 même
enveloppe spectrale que le signal de départ (en haut); mais pas la même fréquence
fondamentale.
On choisit en pratique souvent une fenêtre de Hanning ou une fenêtre
triangulaire, avec une longueur égale à deux fois la période de pitch du signal.
Une fenêtre plus large fait apparaître des harmoniques dans le spectre de si(n);
une fenêtre plus courte n'approxime que très grossièrement l'enveloppe
spectrale de s(n).
5.3 Synthèse de Musique sous Matlab
5.3.1 Analyse du son à synthétiser
Wavread permet de charger un .wav sous matlab.
Quel est la fréquence fondamentale du son étudié?
Voir sa forme d'onde et zoomer sur des détails à l'attaque, dans la partie de
régime, et lors de l'extinction. Ecouter (avec sound) le son (en entier, puis par
morceaux).
Visualiser le spectre du signal à différents endroits.
Essayer de se faire une idée 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 paraît-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 Synthèse 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 généralement
d’interpoler une fonction linéaire par morceaux.
Créer une fonction out = additive(freq, ampl, dur), qui fournisse en sortie un
signal composé d’une somme de cosinusoides dont les fréquences sont
harmoniques de la valeur donnée dans freq et dont les amplitudes sont données
par le vecteur ampl. La durée du son produit doit être de dur secondes.
Synthèse périodique pure
Sur base du spectre d’une fenêtre du signal, choisie dans sa partie la plus stable,
estimer les amplitudes des harmoniques. Générer ensuite par synthèse
harmonique pure une période du signal (à la fréquence du signal de départ : pas
de changement de fréquence). Boucler cette période et lui appliquer un ADSR
réaliste.
Vérification (ceci sera valable pour toutes les étapes suivantes): afficher les
signaux, les écouter, et comparer leurs spectres.
Synthèse harmonique avec variation du timbre
Effectuer plusieurs mesures du spectre, de façon à ce qu’une interpolation entre
les spectres mesurés permette de reproduire plus fidèlement la variation
dynamique du timbre. Réaliser une synthèse dynamique, par somme de cosinus.
Synthèse harmonique avec transitoire d’attaque
Essayer de mieux modéliser le transitoire d’attaque (soit par un bruit coloré, luimême soumis à un ADSR rapide), soit en mémorisant le transitoire et en
l’ajoutant purement et simplement au signal hamronique.
Synthèse harmonique avec modification de durée
Produire, le mieux possible, un son de même fréquence que le précédent, mais
de durée variable (dans un rapport de 0.25 à 4)
Synthèse harmonique avec modification de fréquence fondamentale
Produire, le mieux possible, un son de durée fixe, mais de fréquence variable
(dans un rapport de 0.25 à 4)
5.3.3 Synthèse soustractive
Simulation de filtres numériques du second degré « commandés en
tension »
Mettre au point, sur base de la relation simple qui lie les coefficients d’un filtre
numérique du second degré à ses pôles et zéros, un filtre passe base dont la
fréquence de résonance peut être commandée par un vecteur « tension ».
Même chose pour un filtre passe-haut.
Tester ces filtres sur le signal harmonique obtenu en 5.3.2, ainsi que su un bruit
blanc.
Synthèse soustractive
Commencer par établir le schéma de principe du synthétiseur qui devrait
permettre de produire un son s'apparentant au son reçu par le groupe. Faire
valider ce schéma de principe par l’enseignant.
30
LABORATOIRES DE TRAITEMENT DU SIGNAL
Mettre en œuvre cette méthode (ce qui nécessitera de simuler des générateurs,
des filtres, des modulateurs éventuels, et des adsr).
Synthèse soustractive avec modification de durée et/ou de fréquence
fondamentale
Modifier les paramètres du synthétiseur de façon à modifier la durée et/ou de
fréquence fondamentale du signal sans en modifier le timbre.
5.3.4 Synthèse par formes d’ondes
Bouclage
Réaliser une fonction out=loop(in, beg, end, dur) qui renvoie un signal de
durée dur par bouclage du signal in entre les échantillons beg et end.
Tester sur le signal original.
Interpolation simple
Créer une fonction qui implémente l’interpolation simple d’un signal en vue de
son changement de fréquence fondamentale.
Tester sur le signal original (rapport de fréquences entre 0.25 et 4)
TD-PSOLA
Créer une fonction qui implémente l’addition recouvrement pitch synchrone d’un
son, en vue de son changement de fréquence fondamentale.
Tester sur le signal original (rapport de fréquences entre 0.25 et 4)
Comparer les résultats à ceux obtenus au point précédent.