Vous êtes sur la page 1sur 9

Traitement num

erique du signal
Travaux Pratiques (6h)
Synth`ese, analyse et filtrage dun signal audio numerique
Universite Paris 13, Institut Galilee, Ecole dingenieurs Sup Galilee
Parcours Informatique et Reseaux Alternance - 1`ere annee
2015-2016

Consignes
Recuperer le fichier TP.zip sur le site
http://www.laurentoudre.fr/tns.html
Ouvrir MATLAB et creer un repertoire de travail. Dezipper le fichier TP.zip dans ce repertoire.
A la fin de la seance, recuperer les scripts que vous avez ecrits et les envoyer par e-mail au charge de TP
ainsi qu`a vous meme afin de les conserver pour la prochaine seance.

Rendu
Sept scripts : TP Part1.m, TP Part2.m, TP Part3.m, TP Part4.m, TP Part5.m, TP Part6.m et TP Part7.m
et deux fonctions : create note.m et create melody.m Chaque fichier doit contenir votre nom, votre
prenom et la date.
Compte-rendu `
a rendre avant le 12/02/2016, contenant les observations, commentaires et reponses aux
questions. Le compte rendu doit contenir votre nom et votre prenom.

Plan de l
etude
1 Introduction
1.1 But de letude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Mod`ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Simulations sous MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
2
2

2 Etude dans le domaine temporel


2.1 Proprietes du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Echantillonnage et crit`ere de Nyquist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4
4

3 Synth`
ese dune note et dune m
elodie
3.1 Synth`ese dune note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Synth`ese dune melodie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
5
6

4 Etude dans le domaine fr


equentiel
4.1 Cas dune note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Cas dune melodie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7
7
7

5 Filtrage et s
eparation de sources
5.1 Cas de deux notes successives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Separation de sources supervisee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Separation de sources aveugle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8
8
9
9

Laurent Oudre

Introduction

1.1

But de l
etude

Le but de ce TP est de synthetiser sous MATLAB des signaux audio numeriques, danalyser certaines de leurs
proprietes temporelles et frequentielles, et de realiser un filtrage elementaire pour effectuer une separation de
sources. Ces signaux seront definis de facon analytique sous la forme dune concatenation de sinusodes pures
echantillonnees et associees chacune `
a une frequence fondamentale f0 . Ce mod`ele, bien que grossier, permet
de generer des signaux musicaux ideaux, qui peuvent etre etudies et filtres de facon simple par les techniques
usuelles de traitement numerique du signal.

1.2

Mod`
ele

On consid`ere le signal continu suivant :


x(t) = sin (2f0 t)

(1)

Il sagit dune sinusode pure de frequence fondamentale f0 , damplitude 1 et de phase egale `a 0. Le signal
obtenu correspond `
a une note de musique. La note jouee est liee `a frequence fondamentale de la sinusode :
plus elle est elevee, plus le son est aigu. Par exemple, une sinusode de frequence fondamentale f0 = 440 Hz
correspond `a la note la : il sagit de la note que lon entend en utilisant un diapason ou en decrochant son
telephone fixe.
Ce signal analogique nest pas etudiable avec MATLAB (il contient une infinite dechantillons et ses valeurs
ne sont pas quantifiees), nous allons donc travailler sur une version echantillonnee et quantifiee de ce signal.
On definit donc le signal numerique xn echantillonne avec une frequence dechantillonnage F s et contenant N
echantillons :
xn = sin (2f0 tn )
(2)
Les temps tn sont definis de la facon suivante :
tn =

n
pour 0 n N 1
Fs

(3)

Par defaut, MATLAB quantifie toutes les valeurs sur 64 bits et sauf mention contraire, on travaillera dans
cette partie avec un signal echantillonne `
a Fs = 8000 Hz, de frequence fondamentale f0 = 400 Hz et dune duree
d = 2 secondes.

1.3

Simulations sous MATLAB

On veut synthetiser sous MATLAB un premier signal numerique selon le mod`ele decrit ci-dessus
1. Se placer dans le repertoire de travail et creer sous MATLAB un script vide nomme TP part1.m
On
ecrira en haut de chaque script le nom et le pr
enom de lauteur, la date, ainsi que les commandes suivantes qui
permettent de nettoyer tout lespace de travail `
a chaque fois que le script est lanc
e:
% NOM Prenom
% Date
clear all
% Supprime toutes les variables de l'espace de travail
close all
% Ferme toutes les figures courantes
clc
% Nettoie l'historique des commandes

2. Fixer les valeurs de Fs , d et f0 . Comment doit-on choisir N en fonction de d et Fs ? Que devient cette
expression si d nest plus un entier ? Calculer N en fonction de Fs et d.
Sous Matlab il existe trois facon darrondir un nombre :
y=round(x);
y=floor(x);
y=ceil(x);

Laurent Oudre

% Arrondit a l'entier le plus proche


% Arrondit a l'entier inferieur (partie entiere)
% Arrondit a l'entier superieur

3. Construire sous MATLAB le vecteur temps t de taille N et contenant les differentes valeurs tn . Attention : dans tous ces Travaux Pratiques, on travaillera toujours avec des vecteurs colonnes !
Pour cr
eer un vecteur y ligne contenant toutes les valeurs entre debut et fin avec un pas de pas, on peut utiliser
y = debut:pas:fin;
% Exemples d'utilisation :
x1 = 0:0.1:1;
% Vecteur ligne 0, 0.1, 0.2, ...
x2 = 3:8;
% Vecteur ligne 3, 4, 5, ...
x3 = (0:5)'/2; % Vecteur colonne 0 1/2 1, ...
Si la valeur de pas nest pas sp
ecifi
ee, MATLAB la fixe automatiquement `
a 1.

4. Construire le signal x contenant les differentes valeurs xn


Etant donn
e un vecteur y, on peut construire un nouveau vecteur z de la facon suivante:
z
z
z
z
z
z

=
=
=
=
=
=

% On rajoute 2 a toutes les valeurs du vecteur y


y+2;
5*y;
% On multiplie toutes les valeurs du vecteur y par 5
y.3;
% On met toutes la valeurs du vecteur y a la puissance 3
log(y);
% On prend le logarithme de toutes les valeurs du vecteur y
abs(y);
% On prend la valeur absolue de toutes les valeurs du vecteur y
cos(y/7);
% On divise toutes les valeurs du vecteur y par 7, puis on en prend
% le cosinus

5. Ecouter le son avec vos ecouteurs : est-il grave ? aigu ? Essayer differentes valeurs pour f0 (entre 200 et
1000 Hz) et commenter.
Sous MATLAB, un son est d
efini comme un vecteur ayant des valeurs comprises entre -1 et 1 et associ
e `
a une
fr
equence d
echantillonnage. Pour jouer un son x
echantillonn
e`
a Fs, on utilise la commande:
sound(x,Fs)
soundsc(x,Fs)

% Joue le son brut OU


% Joue le son apres renormalisation
% (renormalise toutes les valeurs du vecteur entre -1 et 1)

Il vaut mieux lancer cette instruction dans la Command Window, car sinon le son se jouera `
a chaque fois quon
ex
ecutera le script !

6. Quelle est la periode fondamentale T0 du signal x(t) avant echantillonnage ? Afficher le signal echantillonne
xn en fonction du temps sur lintervalle [0 , 4T0 ] et annoter correctement la figure. Essayer differentes
valeurs pour f0 (entre 200 et 1000 Hz) et commenter.
Voici quelques commandes utiles pour faire une figure sous MATLAB:
figure
% Ouvre une nouvelle figure
plot(t,x)
% Affiche le vecteur x en fonction du vecteur t
title('Ma Figure') % Donne un titre a la figure
xlabel('Temps (en secondes')
% Donne un nom a l'axe des abscisses
ylabel('Amplitude') % Donne un nom a l'axe des ordonnees
xlim([0 1])
% Restreint la figure pour les abscisses comprises entre 0 et 1
ylim([-1 1])
% Restreint la figure pour les ordonnees comprises entre -1 et 1

Laurent Oudre

Etude dans le domaine temporel

2.1

Propri
et
es du signal

Nous allons maintenant etudier les proprietes de notre signal : periodicite, energie, puissance moyenne.
1. Creer sous MATLAB un script vide nomme TP part2.m dans lequel vous definissez les valeurs de Fs , d,
f0 et N . On utilisera Fs = 8000 Hz, f0 = 400 Hz et d = 2 secondes.
2. Le signal xn est-il periodique ? Si oui, quelle est sa periode fondamentale M0 ? Confirmer ceci sous
MATLAB en calculant la distance euclidienne entre deux periodes du signal.
Pour s
electionner uniquement certaines valeurs dun vecteur y, on peut utiliser la commande :
z = y(1:4);
z = y(3:2:9);

% z contient les 4 premieres valeurs de y


% z contient les valeurs y(3), y(5), y(7), y(9)

Pour calculer la distance euclidienne entre deux vecteurs x et y de m


eme taille on peut calculer :
D = sqrt(sum((x-y).2));

% sqrt : racine carree

3. Calculer (sur papier) lenergie totale et la puissance moyenne totale du signal x(t) avant echantillonnage.
4. En synthetisant un signal de d = 1000 secondes (qui se rapproche du cas N +), evaluer sous MATLAB lenergie totale Ex , ainsi que la puissance moyenne totale Px du signal echantillonne xn . Commenter.
Utiliser les deux definitions de la puissance moyenne totale (celle donnee pour un signal quelconque et
celle donnee pour un signal periodique) et verifier que lon obtient la meme chose.
Pour obtenir un scalaire z `
a partir dun vecteur y, on pourra utiliser :
z = sum(y);
z = mean(y);
z = max(y);

2.2

% somme des elements du vecteur y


% moyenne des elements du vecteur y
% maximum des elements du vecteur y

Echantillonnage et crit`
ere de Nyquist

Nous allons maintenant nous interesser `


a lechantillonnage et illustrer le crit`ere de Nyquist. On consid`ere les
param`etres suivants : Fs = 8000 Hz, f0 = 400 Hz et d = 2 secondes.
1. Dapr`es Nyquist, quelle est la valeur minimale de la frequence dechantillonnage que nous pouvons utiliser
sans degrader de facon irreversible le signal x(t) ?
2. Illustrons ceci de facon experimentale : choisir differentes valeurs pour Fs , certaines au dessus de cette
valeur minimale, dautres en dessous et ecouter les signaux obtenus. Conclure.
3. On suppose `
a nouveau que la frequence Fs est egale `a 8000 Hz. Montrer par le calcul que les sinusodes de
frequences avec f0 = 400 Hz et f0 = 7600 Hz ont la meme frequence apparente. Verifier ceci en ecoutant
les signaux obtenus avec ces deux frequences fondamentales.

Laurent Oudre

Synth`
ese dune note et dune m
elodie

Nous allons dans cette partie etudier non plus une seule sinusode mais plusieurs, qui, mises bout `a bout, vont
creer une melodie.

3.1

Synth`
ese dune note

Pour le moment nous avons considere une sinusode de frequence fondamentale f0 quelconque, sans savoir si
cette frequence correspondaient `
a une note produite effectivement par un instrument de musique. En realite,
si lon consid`ere par exemple un piano, il y a seulement un ensemble fini de notes (donc de frequences) quil
peut produire. Dans notre cas, nous allons donner `a chaque note du piano un numero, et calculer la frequence
fondamentale associee gr
ace `
a la formule suivante:
f0note = 440 2

note69
12

(4)

o`
u note est le numero de la note que lon veut jouer. On peut observer que la note note = 69 correspond
justement `a la frequence f0 = 440 Hz (cest la note la) dont on parlait dans lintroduction. Voici un tableau qui
presente un extrait de la correspondance entre numeros de notes, notes musicales et frequences fondamentales.
octave
1

do
24
32.7
36
65.41
48
130.81
60
261.63
72
523.25
84
1046.5
96
2093

2
3
4
5
6
7

do
25
34.65
37
69.3
49
138.59
61
277.18
73
554.37
85
1108.73
97
2217.46

r
e
26
36.71
38
73.42
50
146.83
62
293.66
74
587.33
86
1174.66
98
2349.32

r
e
27
38.89
39
77.78
51
155.56
63
311.13
75
622.25
87
1244.51
99
2489.02

mi
28
41.2
40
82.41
52
164.81
64
329.63
76
659.26
88
1318.51
100
2637.02

fa
29
43.65
41
87.31
53
174.61
65
349.23
77
698.46
89
1396.91
101
2793.83

fa
sol
30
31
46.25
49
42
43
92.5
98
54
55
185
196
66
67
369.99
392
78
79
739.99 783.99
90
91
1479.98 1567.98
102
103
2959.96 3135.96

sol
32
51.91
44
103.83
56
207.65
68
415.3
80
830.61
92
1661.22
104
3322.44

la
33
55
45
110
57
220
69
440
81
880
93
1760
105
3520

la
34
58.27
46
116.54
58
233.08
70
466.16
82
932.33
94
1864.66
106
3729.31

si
35
61.74
47
123.47
59
246.94
71
493.88
83
987.77
95
1975.53
107
3951.07

1. Creer sous MATLAB un script vide nomme TP part3.m dans lequel vous definissez les valeurs de Fs , d et
note. Vous choisirez les valeurs de d et note, et on utilisera Fs = 8000 Hz.
2. Creer une fonction create note.m prenant en param`etres dentree une duree d, un numero de note note
et une frequence dechantillonnage Fs et renvoyant un signal x (correspondant `a une sinusode de duree
d et de frequence fondamentale f0note comme defini ci-dessus) associe `a un vecteur temps t. Dans le cas
o`
u note = -1, on renverra un signal nul de duree d (cela revient `a creer une sinusode de frequence f0 = 0 !)
Pour cr
eer une fonction sous MATLAB, il faut cr
eer un fichier .m dont le nom est exactement le nom de la
fonction quon veut d
efinir. Lent
ete du fichier doit
etre la suivante :
function [out1,out2] = nomFonction(in1,in2,in3)
% nomFonction : nom de la fonction : le script doit s'appeler nomFonction.m
% in1, in2, in3 : arguments d'entree de la fonction
% out1, out2 : arguments de sortie de la fonction
Pour tester une fonction, on ne peut pas lex
ecuter telle quelle : il faut cr
eer un script o`
u lon d
efinit les
entr
ees, o`
u lon appelle la fonction et o`
u lon r
ecup`
ere les sorties de la fonction.
Pour tester une condition sous MATLAB, il faut utiliser une structure du type :
if i==0
% Si i est egal a 0
i=i+1;
else
% Sinon
i=i-1;
end

3. Tester la fonction au sein du script TP part3.m en synthetisant et en ecoutant plusieurs notes de differentes
hauteurs et differentes durees. Tester le cas note = -1.

Laurent Oudre

3.2

Synth`
ese dune m
elodie

Une melodie ce nest pas seulement une note mais une succession de notes ! Nous allons donc utiliser non plus
une seule duree et une seule note, mais des vecteurs contenant plusieurs durees et plusieurs notes, afin de former
une melodie.
1. En sinspirant de la fonction create note.m, creer une nouvelle fonction create melody.m prenant en
param`etres dentree un vecteur de duree d vect, un vecteur de numeros de note note vect et une frequence
dechantillonnage Fs et renvoyant un signal x associe `a un vecteur temps t. Le signal x correspond `a la
concatenation de plusieurs sinusodes dont les durees et hauteurs sont respectivement definies dans les
vecteurs d vect et note vect
Quelques op
erations sur les vecteurs en MATLAB :
y = [];
% Cree un vecteur vide
y = [y 1 y 2]; % Concatenation des vecteurs y 1 et
y = [y 1 ; y 2];% Concatenation des vecteurs y 1 et
N=length(y);
% Taille du vecteur y
y=zeros(N,1);
% Cree un vecteur colonne de taille
y=zeros(1,N);
% Cree un vecteur ligne de taille N

y 2 (vecteurs lignes)
y 2 (vecteurs colonnes)
N contenant des 0
contenant des 0

La syntaxe dune boucle for sous MATLAB est la suivante :


j=0;
for i=1:3
j=j+i;
end

% Tous les i de 1 a 3

On commencera par g
en
erer le vecteur x, puis on g
en`
erera le vecteur temps t

2. Tester la fonction au sein du script TP part3.m en choisissant des vecteurs d vect et note vect, puis en
synthetisant et en ecoutant la melodie associee.
3. Tester la fonction en chargeant les vecteurs d vect et note vect stockes dans la variable melody1.mat.
Synthetiser et ecouter la melodie associee.
Pour charger toutes les variables enregistr
ees dans un fichier .mat, il faut utiliser la commande :
load('data.mat');

4. Comment modifier cette melodie pour quelle soit jouee une octave en dessous ? Et pour quelle aille 50%
plus vite ?

Laurent Oudre

Etude dans le domaine fr


equentiel

Les melodies que nous avons generees sont difficilement etudiables dans le domaine temporel : en effet, nous
avons vu quil etait par exemple impossible de visualiser le signal de facon correcte sauf en le regardant sur un
temps tr`es court. Nous allons donc continuer notre etude dans le domaine spectral, en observant la transformee
de Fourier discr`ete de notre signal. Nous allons voir que cette representation nous permet didentifier par
exemple en un seul coup doeil lensemble des notes jouees durant le morceau.

4.1

Cas dune note

1. Creer sous MATLAB un script vide nomme TP part4.m dans lequel vous definissez les valeurs de Fs , d et
note. On utilisera Fs = 8000 Hz, note = 69 et d = 2 secondes.
2. Synthetiser le signal sonore associe gr
ace `a la fonction create note.m et tracer le module au carre de la
transformee de Fourier discr`ete du signal grace `a la fonction my FFT.m fournie sur le site du cours. Annoter
correctement la figure !
La fonction fournie [Y,f]=my FFT(y,Fs) prend en entr
ee un signal y
echantillonn
e`
a Fs Hz, et renvoie la transform
ee
de Fourier discr`
ete Y associ
ee `
a un vecteur de fr
equences f. Le spectre est repr
esent
e ici sous sa forme r
earrang
e,
cest `
a dire quil est centr
e sur la fr
equence nulle.

3. Calculer (sur papier) le module au carre de la transformee de Fourier continue du signal x(t). Comparer
avec la figure obtenue et commenter.
4. Quelle est la resolution en frequence de la TFD ? Parmi les notes proposees dans le tableau presente
precedemment, lesquelles seront observables de facon correcte sur la TFD ?
5. Generer le signal associe `
a une note observable et un signal associe `a une note non observable. Comparer
les spectres des deux signaux et commenter.
6. Montrer quil est neanmoins possible de retrouver quelle note a ete jouee en regardant uniquement la
transformee de Fourier.

4.2

Cas dune m
elodie

1. Creer `a la suite du script TP part4.m un signal sonore correspondant `a une melodie contenant 4 notes
(dont vous choisirez les hauteurs et les durees) et echantillonne `a Fs = 8000 Hz.
2. Tracer le module au carre de la transformee de Fourier discr`ete du signal et montrer quon peut retrouver
quelles notes ont ete jouees en regardant uniquement la transformee de Fourier.

Laurent Oudre

Filtrage et s
eparation de sources

Un des grands domaines du traitement du signal est la separation de sources. Lidee etant, `a partir dun
melange de differents signaux provenant de plusieurs sources (par exemple plusieurs personnes qui parlent en
meme temps), de parvenir `
a reconstruire le message associe `a chacune des sources (par exemple retrouver ce
qua dit chaque personne). Cest un probl`eme courant en acoustique donc, mais aussi en telecommunications,
en bio ingenierie etc...
Dans notre cas, nous allons tenter dadditionner deux signaux sonores, et de reconstruire chacun dentre
eux grace `a un filtrage lineaire adapte. Nous avons vu que nous pouvions visualiser les notes de la melodie en
observant la transformee de Fourier. Nous allons voir que nous pouvons aussi modifier la melodie en travaillant
directement sur cette transformee de Fourier.
Pour cela, nous allons utiliser au choix un filtre passe-bas ideal (si lon veut supprimer les notes aigues),
passe-haut ideal (si lon veut supprimer les notes graves), ou passe-bande ideal (si lon veut supprimer toutes
les notes aigues et graves et ne garder que les mediums). Les fonctions de transfert de ces filtres sont definies
de la facon suivante et dependent dune ou plusieurs frequences de coupure (selon le filtrage que lon souhaite
effectuer) :

Passe-bas

Passe-haut

Passe-bande

(
1
HLP (f ) =
0
(
0
HHP (f ) =
1
(
1
HBP (f ) =
0

si |f | < fc
sinon
si |f | < fc
sinon
si fc1 < |f | < fc2
sinon

La suite des operations `


a realiser est presentee ci-dessous :

Transform
ee
de Fourier

Filtrage
H(f )

Y =X H

Transform
ee
de Fourier
inverse

Il sagit ici dun filtrage lineaire vu dans le domaine frequentiel, correspondant donc `a une multiplication de
la transformee du signal avec la fonction de transfert du filtre.

5.1

Cas de deux notes successives

Nous allons considerer un signal compose de deux notes successives, et tenter de supprimer lune des deux.
1. Creer dans un nouveau script TP part5.m un signal sonore correspondant `a une melodie contenant 2 notes :
une ague et une grave (dont vous choisirez les hauteurs et les durees) et echantillonne `a Fs = 8000 Hz.
Tracer le module au carre de la transformee de Fourier discr`ete du signal et proposer une frequence de
coupure fc permettant de separer les deux notes.
2. A partir du vecteur de frequences f renvoye par la transformee de Fourier et de la frequence de coupure
f c, creer un vecteur H LP et un vecteur H HP correspondant aux fonctions de transfert du filtre passe-bas
et passe-haut ideaux associes.
Pour modifier des valeurs dun vecteur gr
ace `
a une condition, on peut utiliser les commandes suivantes :
y(y<0) = 0;
z(y<3 & y>0) = 1;

% Met a 0 toutes les valeurs strictement negatives de y


% Met a 1 toutes les valeurs du vecteur z correspondant aux indices
% ou y est compris entre 0 et 3

3. Appliquer le filtre passe-bas H LP sur la transformee de Fourier discr`ete calculee. Faire une transformee
de Fourier inverse (gr
ace `
a la fonction my FFTinv.m fournie) pour retrouver le signal sonore filtre. Ecouter
et commenter. Observer le module au carre de la transformee de Fourier discr`ete du signal ainsi filtre et

Laurent Oudre

commenter.
Pour multiplier deux vecteur entre eux terme a
` terme, on utilisera
z= y1.*y2;
z= y1./y2;

% Multiplie les vecteur y 1 et y 2 terme a terme


% Divise les vecteur y 1 et y 2 terme a terme

4. Faire la meme chose avec le filtre passe-haut H HP.

5.2

S
eparation de sources supervis
ee

Nous allons maintenant creer deux melodies, les additionner et les separer grace au filtrage que nous avons
utilise dans la partie precedente. La methode que nous allons utiliser rentre dans la categorie des methodes
supervisees, cest `
a dire que lon dispose dune information a priori sur les signaux que lon doit reconstruire
(par exemple ici, on sait quune des sources ne contient que des notes aigues, et lautre que des notes graves)
1. Creer dans un script TP part6.m un signal x1 dune duree de 10 secondes, echantillonne `a Fs = 8000 Hz
et contenant des notes (au moins 4) comprises entre 50 et 71. Ecouter le signal obtenu.
2. Creer dans le meme script un signal x2 dune duree de 10 secondes, echantillonne `a Fs = 8000 Hz et
contenant des notes (au moins 4) comprises entre 72 et 90. Ecouter le signal obtenu.
3. Creer le signal x = x1 + x2. Quelle frequence de coupure fc peut-on utiliser pour separer les deux signaux
x1 et x2 ?
4. En utilisant les filtres precedemment definis, reconstruire `a partir de x les signaux y1 et y2 estimant
respectivement x1 et x2.
5. Ecouter les signaux obtenus et les comparer aux sources reelles. Calculer la distance euclidienne entre x1
et y1 et celle entre x2 et y2.
6. Observer les spectres des signaux x1 et y1 puis ceux des signaux x2 et y2
7. Tester dautres frequences de coupure fc et commenter.

5.3

S
eparation de sources aveugle

Cette fois-ci, il ny a plus dinformation a priori. Il va falloir etablir une strategie afin de separer la ligne
melodique de laccompagnement, mais de facon aveugle.
1. Creer un script TP Part7.m Ouvrir le fichier melody2.wav grace `a MATLAB et lecouter. A partir du travail realise precedemment, et en observant la transformee de Fourier, proposer et appliquer une strategie
pour obtenir uniquement la ligne melodique.
Pour ouvrir un fichier son sous MATLAB, on utilisera la commande
[y,Fs]=wavread('test.xav'); % y : vecteur son, Fs : frequence d'echantillonnage

2. Tester plusieurs strategies. Decrire et evaluer de facon objective vos experiences (par exemple en calculant
la distance euclidenne entre le signal retrouve renormalise et la verite terrain stockee dans le fichier
melody3.wav)

Laurent Oudre

Vous aimerez peut-être aussi