Académique Documents
Professionnel Documents
Culture Documents
DE TRAITEMENT DU SIGNAL
Groupe 21
Dr KABIENA 2022/2023
1
PLAN
I- Introduction ……………………………………………………………………………………..
I.1 But de l’étude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ……………………..
I.2 Modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ……………………...
I.3 Simulations sous MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ………………..
II Etude dans le domaine temporel …………………………………………………………………
II.1 Propriétés du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …………………..
II.2 Echantillonnage et critère de Nyquist………… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …
III Synthèse d’une note et d’une mélodie …………………………………………………………..
III.1 Synthèse d’une note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ………………….
III.2 Synthèse d’une mélodie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ………………...
IV Etude dans le domaine fréquentiel ……………………………………………………………...
IV.1 Cas d’une note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …………………...
IV.2 Cas d’une mélodie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ………………….
V. Filtrage et séparation de sources ………………………………………………………………...
V.1 Cas de deux notes successives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ………………
2
I- INTRODUCTION
I.1 But de l’étude
Le but de ce TP est de synthétiser sous MATLAB des signaux audio numériques, d’analyser
certaines de leurs propriétés temporelles et fréquentielles, et de réaliser un filtrage élémentaire
pour effectuer une séparation de sources. Ces signaux seront définis de façon analytique sous la
forme d’une concaténation de sinusoïdes pures échantillonnées et associées chacune à une
fréquence fondamentale f0. Ce modèle, bien que grossier, permet de générer des signaux
musicaux idéaux, qui peuvent être étudiés et filtrés de façon simple par les techniques usuelles de
traitement numérique du signal.
- Choix de la valeur de N
N étant le nombre d'échantillons, N=Fs*d+1 lorsque d est un entier. Lorsque d n'est plus
entier, on peut utiliser les fonctions round(), floor() et ceil() qui donnent respectivement
l'arrondi de N à l'entier le plus proche, l'arrondi à l'entier inférieur et l'arrondi à l'entier supérieur.
Pour le TP, nous avons utilisé la fonction ceil(), donc N= ceil(Fs*d)+1 comme le montre la
capture suivante:
3
- Calcul de N en fonction de Fs et d. le logiciel Matlab nous permet de calculer cette valeur
et on l’obtient sur la capture suivante :
- construction du signal xn
Le signal xn est construit avec le code suivant :
- Après avoir construit notre signal, on peut maintenant écouter le son. Pour cela, on va
utiliser la fonction :
qui permet de jouer le son brut.
Note : On constate que lorsque la fréquence fondamentale vaut 300hz, le son est plus grave et
lorsque cette dernière augmente au fur et à mesure, le son devient aigu progressivement.
4
On remarque que lorsqu'on fait varier la fréquence fondamentale entre 300 et 1200 hz, la
période du signal diminue. Par exemple pour fo=1200hz :
Dans cette section, nous avons étudié la périodicité, l'énergie et puissance moyenne du signal.
Pour débuter, nous avons créé un nouveau script nommé "tp_part2.m" et avons défini les valeurs
de Fs, d, fo et N. le code Matlab suivant nous permet de définir ces différentes valeurs :
5
On observe que notre signal est périodique car se reproduit identique à lui-même sur une demie
période.
- période fondamentale M0
Mo=1/fo et vaut:
- On a obtenu une valeur de D=0 ce qui montre que le signal est périodique.
6
Après exécution du code, nous obtenons Ex=q=500J et Px=p=0.5W
On constate que l'énergie augmente lorsque le son dure longtemps et la puissance ne change pas.
On considère un piano comme un ensemble de notes. Dans ce cas, nous avons donné un
numéro à chaque note du piano et calculé la fréquence fondamentale associée grâce à la formule
7
nous avons dans notre code défini une note de 36.
3. il faut maintenant tester la fonction, et le code qui permet de tester est le suivant :
Nous avons testé une note de 75 et on a obtenu le son correspondant. Lorsqu’on a testé la note -1, on
n’a pas eu de son (nul) comme c’était prévu.
8
2- testons maintenant la fonction au sein du tp en choisissant les vecteurs d_vect et note_vect :
Nous avons choisi les valeurs ci-dessous pour ces vecteurs. Le code ci-dessous nous permet
d’écouter la mélodie.
3- Testons maintenant la fonction en chargeant les vecteurs d_vect et note_vect stockés dans la
variable melody1.mat. Nous pouvons voir ci-dessous le code associé.
On a obtenu le son de la mélodie melody1.
4. pour modifier cette mélodie afin qu’elle puisse jouer une octave en dessous, nous avons
procédé ainsi :
9
Pour que cette mélodie aille 50% plus vite, il faut procéder de la manière suivante :
Les mélodies que nous avons générées sont difficilement étudiables dans le domaine temporel :
en effet, nous avons vu qu’il était par exemple impossible de visualiser le signal de façon correcte
sauf en le regardant sur un temps très court. Nous allons donc continuer notre étude dans le
domaine spectral, en observant la transformée de Fourier discrète de notre signal. Nous allons
voir que cette représentation nous permet d’identifier par exemple en un seul coup d’œil
l’ensemble des notes jouées durant le morceau.
1. Créer sous MATLAB un script vide nommé TP part4.m dans lequel vous d´définissez les
valeurs de Fs, d et
note. On utilisera Fs = 8000 Hz, note = 69 et d = 2 secondes.
2. Synthétiser le signal sonore associé grâce à la fonction create note.m et tracer le module au
carré de la
Transformée de Fourier discrète du signal grâce à la fonction my FFT.m fournie sur le site du
cours. Annoter
Correctement la figure !
10
La figue 1.1 ci-dessus nous montre un spectre de deux raies situés aux fréquences
fondamentales fo et -fo avec fo = 400Hz
3- Calculer (sur papier) le module au carré de la transformée de Fourier continue du signal x(t).
Comparer
avec la figure obtenue et commenter.
Nous constatons que notre graphe précédemment obtenu 1.1 nous montre qu’on obtient deux
spectres (deux peignes) c’est à dire deux Dirac, nos calculs obtenus sur le papier qui est de deux
Diras nous rassures de l’effectivités de notre schéma.
11
4. Quelle est la résolution en fréquence de la TFD ? Parmi les notes proposées dans le tableau
présenté
Précédemment, lesquelles seront observables de façon correcte sur la TFD ?
La résolution en fréquence est donné par :
∆ =
Nous avons donc : ∆ = ,
Une note est observable dans la TFD s’il existe un k € N tel que = ∆
fo
Donc =
∆
fo
Dans notre cas = . Donc une note sera observable sur la TFD si sa fréquence fo est
0;5
multiple de 0,5.
Exemple :
- La note 81 a une fréquence fo= 880Hz. On trouve un k = 1760 donc il sera facile de trouver
la fréquence fondamentale fo et grâce au tableau retrouver quelle note a été jouée.
- La note 75 a une fréquence fo= 622.25Hz. on trouve un k = 1244.5, nous trouvons que
K est entre 1244 et 1245. Il sera difficile d’affirmer avec exactitude la note qui a été jouée
car une note ne possède qu’une seule fréquence fo.
5- Générer le signal associé à une note observable et un signal associé à une note
non observable. Comparer les spectres des deux signaux et commenter.
12
4.2- 1. Créer à la suite du script TP part4.m un signal sonore correspondant à une mélodie
contenant 4 notes
(Dont vous choisirez les hauteurs et les durées) et ´échantillonné a Fs = 8000 Hz.
13
V. FILTRAGE ET SEPARATION DE SOURCES
Dans cette partie, nous allons tenter d’additionner deux signaux sonores, et de reconstruire
chacun d’entre eux grâce à un filtrage linéaire adapté.
Pour cela, nous allons utiliser au choix un filtre passe-bas idéal (si l’on veut supprimer les notes
aigues), passe-haut idéal (si l’on veut supprimer les notes graves), ou passe-bande idéal (si l’on
veut supprimer toutes les notes aigues et graves et ne garder que les médiums). Les fonctions de
transfert de ces filtres sont définies de la façon suivante et dépendent d’une ou plusieurs
fréquences de coupure (selon le filtrage que l’on souhaite effectuer) :
Passe-bas HLP (f) =
1 si |f| < fc
0 sinon
Le code Matlab ci-dessous nous montre comment nous avons défini cela :
- Par la suite, nous avons tracé le module au carrée de la transformée de Fourier discrète du
signal et proposé une fréquence de coupure fc permettant de séparer les deux notes. Nous
l’avons fait grâce au code suivant :
On a le tracé ci-dessous :
14
Nous avons proposé une fréquence de coupure de 1000hz pour séparer les deux sources.
2. -Création d’un vecteur H_LP et d’un vecteur H_HP correspondants aux fonctions de
transfert du filtre passe-bas et passe-haut idéaux grâce au code Matlab suivant :
Par la suite, nous avons pris une fréquence de coupure de 800hz, nous avons également créé le
vecteur H_LP et le vecteur H_HP, puis nous avons appliqué les conditions modifiant la valeur
d’un vecteur.
3. Nous avons appliqué le filtre passe-bas H_LP sur la transformée de Fourier discrète calculée.
Faire une transformée de Fourier inverse (grace à la fonction my_FFTinv.m fournie) pour
retrouver le signal sonore filtré. La capture suivante nous montre le code réalisant cette
instruction :
15
Nous avons tracé le spectre correspondant à la transformée inverse et est représenté par la figure
suivante :
On constate que le signal haute fréquence est filtré et on reste avec le signal basse fréquence.
16
Nous devions normalement obtenir courbe dans laquelle on a seulement les hautes fréquences
mais on constate que toutes les fréquences ont été filtrées.
CONCLUSION