Vous êtes sur la page 1sur 16

Calcul de la composition frquentielle du signal audio, SSII sance 5, page 1

PolytechNice-Sophia - cours Signal Son et Image pour l'Informaticien


Calcul de la composition frquentielle du signal audio
Support crit par Jean-Paul Stromboni, pour les lves de troisime anne SI,
ncessite un vido projecteur, dure 1h , octobre 2010
Voici ce que vous devez savoir faire aprs cette sance :
Dfinir le spectre dun signal sinusodal
Dfinir la Transforme de Fourier Discrte (TFD) de taille N
Trouver la TFD des signaux constante et sinusode.
Mesurer leffet de la taille de la fentre et leffet de sa forme
Utiliser les fonctions fft(.) et spectrogram(.) de MATLAB

Quelle est linformation donne par le spectre
dun signal audio ?

Quelle est la rsolution frquentielle d'une
FFT de taille N= 32 si fe= 8kHz ?
Pourquoi diviser le spectre d'amplitude par la
taille N de la fentre temporelle ?
Quelle est la priode du spectre d'un signal
audio numrique chantillonn 22050Hz ?

Si on calcule M = 2048 valeurs de la TFD,
prciser les frquences fk si fe=8000Hz :

Quelle est la dure d'une fentre de 1024
chantillons, fe = 44100Hz
Donner la composition frquentielle de x(t) Pourquoi limiter le calcul du spectre une
fentre de taille N chantillons ?
) 2000 ( cos ) (
2
t t x t =
Le TD tudie sur le papier et avec Matlab TFD et FFT
Savez vous rpondre aux questions suivantes ?
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 2
Analyse frquentielle dun signal audio
Le concept danalyse frquentielle provient des
travaux de Joseph Jean-Baptiste Fourier au 19
me

sicle (quel tait le but de ses recherches ?) :
Un signal quelconque peut tre dcompos en une
somme de signaux sinusodaux : damplitudes, de
frquences, de dphasages diffrents, ce sont les
composantes frquentielles du signal
On nomme spectre dun signal lensemble de
ses composantes frquentielles, avec leurs
frquences, leurs amplitudes et leurs dphasages
respectifs.
Lanalyse frquentielle dun signal consiste
dterminer son spectre.
La transformation de Fourier dun signal calcule le
spectre de ce signal :
Dcomposition en sries de Fourier pour un signal
priodique, ou de dure limite (ex. triangle)
Transforme de Fourier pour un signal en temps
continu
Transforme de Fourier discrte (ou TFD) pour un
signal en temps discret (ex. signal audio numrique)
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 3
Le spectre d'un signal regroupe toutes les informations
sur la composition frquentielle de ce signal.
par exemple, le spectre du signal ci-dessous contient une
raie spectrale unique,
de frquence f0,
d'amplitude a0 (positive par convention),
et de phase p0 (dphasage linstant t = 0s)


on dcrit mathmatiquement le spectre de s(t) par une
quantit complexe S(f) fonction de la frquence le module
est le spectre d'amplitude (spectre par abus de langage),
l'argument est le spectre de phase (non considr en SSII)


on reprsente S(f) graphiquement :









Le signal s(t) est bande limite car son spectre vrifie

D t p t f a t s s s + = 0 , ) 2 cos( ) (
0 0 0
t
Max Min Max Min
f f et f f pour f S f f > < - - 0 ) ( , ,
0 ) ( , ) ( , ) (
0 0 0 0 0
= = Z = f f S p f S a f S
) (Hz f
0
a
0
f
spectre d'amplitude
) (Hz f
0
f
0
p
spectre de phase
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 4
Le spectre d'un signal regroupe toutes les informations
sur la composition frquentielle de ce signal.
second exemple (spectre d'amplitude en dB) :






Exercice : donner le spectre de





Donner un signal dont le spectre d'amplitude est





) t cos( . ) t cos( . ) t ( s t + t + = 2000 25 0 1000 5 0 1
) (Hz f
25 . 0
500
spectre (damplitude) de s3
) (Hz f
12
500 1000
0
spectre (damplitude)
6
0
) 1000 cos( 25 . 0 ) (
3
t t s t =
) (Hz f
0
100 200
6
spectre (en dB)
20
) 400 cos( 5 . 0 ) 200 cos( 1 . 0 ) (
4
t t t s t t + + =
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 5
Spectre et spectrogramme rels (par Goldwave)
|
.
|

\
|
+ + + =
2 2 2 2
7
) 14 cos(
5
) 10 cos(
3
) 6 cos(
) 2 cos(
8 . 0
) (
ft ft ft
ft t s
t t t
t
t
Spectrogramme de s(t), fe=8kHz, f=500Hz, fentre rectangulaire, 30fps
spectre = composition frquentielle
500 Hz, -28 dB
1500 Hz, -47 dB
2500 Hz, -56 dB
3500 Hz, -62 dB

20*log10(9)=19 dB
20*log10(25)=28 dB
20*log10(49) = 33 dB
Spectrogramme=spectr
e (temps)
On calcule le spectre
30 fois par seconde :
Donc 240 chantillons
par calcul
On runit tous ces
calcul avec le temps en
abscisse
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 6
Matlab utilise la Transforme de Fourier Discrte
(TFD) pour calculer le spectre des signaux audio
Dfinition de la TFD : pour un signal x(t) chantillonn
la frquence fe, MATLAB calcule le spectre en limitant le
signal une fentre temporelle de N chantillons :


X(f) est le spectre de x(n/fe),
X(f) est priodique, la valeur de la priode est fe
|X(f)| est symtrique par rapport la frquence fe/2
la fentre de calcul dure NTe (contient N chantillons)
Calcul de la TFD : en pratique, on calcule N valeurs de la
TFD, les X(f
k
) pour les seules frquences f
k
:


est la rsolution frquentielle

pour mieux reconstruire la TFD, on calcule M > N valeurs
Si N est une puissance de 2 : on acclre le calcul
suivant, cest lalgorithme de transforme de Fourier
rapide, (ou Fast Fourier Transform, FFT) :



=

=

= =
1
0
/ 2
1
0
/ 2
) / ( ) (
N
n
f fn i
n
N
n
f fn i
e
e e
e x e f n x f X
t t
N
f
f f
e
k k f
= = A
+1
1 0 , / = = N k N kf f
e k

, 1 0 , / , ) (
1
0
2
= = = =

M k M kf f e x X f X
e k
N
n
M
nk i
n k k

t
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 7
Calcul de la T.F.D. du signal constant de taille N
TFD de la fonction constante, du signal de frquence
nulle, ou de la fentre rectangulaire de dure NTe



=

= =
1
0
) / ( 2
) ( ) (
N
n
f f n i
n
e
e a f R r TFD
t
1 0 , s s = N n a r
n
e
e
f f i
f f N i
e
e
a f R
/ 2
/ 2
1
1
) (
t
t

=
e e
e e
e
e
f f i f f i
f Nf i f Nf i
f f i
f Nf i
e e
e e
e
e
a f R
/ /
/ /
/
/
) (
t t
t t
t
t

=
) / sin(
) / sin(
) (
/ ) 1 (
e
e
f f N i
f f
f Nf
e a f R
e
t
t
t
=
) / sin(
) / sin(
) (
e
e
f f
f Nf
a f R
t
t
=
spectre (d'amplitude) de r
n
) sin(
2
u
u u
=

+
i
e e
i i
Que valent :
1. R(0)
2. R(fe)
3. R(-fe)
4. R(fe/N)
5. La priodicit du dnominateur
6. La priodicit du numrateur

spectre de r
n
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 8
Analyse dun exemple : x=0.75, N=16, fe=8kHz
) 8000 / sin(
) 8000 / 16 sin(
75 . 0
) / sin(
) / sin(
) (
f
f
f f
f Nf
a f R
e
e
t
t
t
t
= =
Trac de |R(f)|
sur 2 priodes:
[fe/2, fe/2[
[0, fe[
[0,fe/2[
Trac sur
une priode.
Trac de
spectre/N
0 1000 2000 3000 4000 5000 6000 7000 8000
0
2
4
6
8
10
12
14
16
a=0.75, N=16, fe=8000, M=256
frquence (Hz)
s
p
e
c
t
r
e

d
'
a
m
p
l
i
t
u
d
e


spectre de x=0.75 fentre de taille 16
0 1000 2000 3000 4000 5000 6000 7000 8000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
a=0.75, N=16, fe=8000, M=256
frquence (Hz)
s
p
e
c
t
r
e
/
N


spectre de x=0.75 fentre de taille 16
-8000 -6000 -4000 -2000 0 2000 4000 6000 8000
0
2
4
6
8
10
12
14
16
a=0.75, N=16, fe=8000, M=256
frquence (Hz)
s
p
e
c
t
r
e

d
'
a
m
p
l
i
t
u
d
e


spectre de x=0.75 fentre de taille 16
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 9
TFD du signal sinusodal (dduite de R(f))
)) ( ) ( (
2
2
) ( ) (
0 0
1
0
/ ) ( 2 / ) ( 2
1
0
/ 2
0 0
f f R f f R
a
e e
a
e s a f S s TFD
N
n
f f f n i f f f n i
N
n
f nf
n n
e e
e
+ + =
+
=
= =

=
+

=

t t
t
1 0 ), / 2 cos(
0
s s = N n f nf a s
e n
t
2
) / 2 cos(
) / ( 2 ) / ( 2
0
0 0 e e
f f n i f f n i
e n
e e
a f nf a s
t t
t

+
= =
Exercice : analyser le spectre damplitude suivant
(Note :on a dj divis le spectre calcul par N)
0 1000 2000 3000 4000 5000 6000 7000 8000
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
a=0.5, N=16, fe=8000, f0=1000, M=256
frquence (Hz)
s
p
e
c
t
r
e

d
'
a
m
p
l
i
t
u
d
e


spectre de x=0.5 fentre de taille 16
Retrouver
fe
R(f0)
R(fe-f0)
R(fe/N)
a
et f0
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 10
Influence de la taille N de la fentre
temporelle (fentre rectangulaire)
s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
-1
-0.5
0
0.5
1
temps (s)
s
i
g
n
a
l

s
fentre rectangle N=32
0 1000 2000 3000 4000 5000 6000 7000 8000
0
0.1
0.2
0.3
0.4
frquence (Hz)
s
p
e
c
t
r
e
/
N
spectre d'amplitude/N, N=32 M=256
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
-1
-0.5
0
0.5
1
temps (s)
s
i
g
n
a
l

s
fentre rectangle N=256
0 1000 2000 3000 4000 5000 6000 7000 8000
0
0.1
0.2
0.3
0.4
frquence (Hz)
s
p
e
c
t
r
e
/
N
spectre d'amplitude/N, N=256 M=2048
f0=
a0=
fe =
N =
NTe =
Af =
spectre/N =
f0=
a0=
fe =
N =
NTe =
Af =
spectre/N =
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 11
Influence de la taille N de la fentre
temporelle (fentre de Hamming)
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
-1
-0.5
0
0.5
1
temps (s)
s
i
g
n
a
l

s
fentre de Hamming N=256
0 1000 2000 3000 4000 5000 6000 7000 8000
0
0.1
0.2
0.3
0.4
frquence (Hz)
s
p
e
c
t
r
e
/
(
N
*
0
.
5
3
)
spectre d'amplitude/(N*0.53), N=256 M=2048
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
-1
-0.5
0
0.5
1
temps (s)
s
i
g
n
a
l

s
fentre de Hamming N=32
0 1000 2000 3000 4000 5000 6000 7000 8000
0
0.1
0.2
0.3
0.4
frquence (Hz)
s
p
e
c
t
r
e
/
(
N
*
0
.
5
3
)
spectre d'amplitude/(N*0.53), N=32 M=256
Dessiner la
forme de la
fentre de
Hamming



Comparer au
spectre
obtenu avec
la fentre
rectangulaire
f0=
a0=
fe =
N =
NTe =
Af =
spectre/N =
s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 12
Deux fentres temporelles pour la F.F.T.:
fentre rectangulaire, fentre de Hamming
1 0 )), 1 /( 2 cos( 46 . 0 54 . 0 ) ( s s = N n N n n h t
0 0.5 1 1.5 2 2.5 3 3.5
x 10
-3
0
0.5
1
1.5
temps (s)
a
m
p
l
i
t
u
d
e
fentre de Hamming N=32


Hamming
Rect
-4000 -3000 -2000 -1000 0 1000 2000 3000 4000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
N=32, M=256 points calculs, D=N*Te=0.004, deltaf=250
frquence (Hz)
s
p
e
c
t
r
e

n
o
r
m
a
l
i
s


:

f
f
t
s
h
i
f
t
(

a
b
s

(
f
f
t
)
)

/

N


Rect
Hamming
Comparaison des spectres d'amplitude de ces deux fentres :
fe=
N=
dure=
fe/N=
fmin=
fmax=

Hamming
amplMax=
nbLobes=
largeur=

Rectangle
amplMax=
nbLobes=
largeur:
1 0 , 1 ) ( s s = N n n r
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 13
Spectre et spectrogramme avec MATLAB
fe=8000; N=4096;
t=[0:16000]/fe;
s=0.5*cos(2*pi*1000*t)+ 0.75*cos(4000*pi*t);
f=[-N/2:N/2-1]*fe/N;
spec= fftshift(fft(s(1:N)))
plot(f,abs(spec)), grid, figure
spectrogram(s,hamming(N),N/2,N,fe,'yaxis')
colorbar













Noter pour le spectrogramme :
1. la fentre de FFT utilise ci-dessous est une fentre de Hamming
2. le code de couleurs donnant lamplitude en dB est affich droite
-5000 0 5000
0
50
100
150
200
250
300
350
400
0.5 1 1.5
0
500
1000
1500
2000
2500
3000
3500
4000
Time

F
r
e
q
u
e
n
c
y

(
H
z
)
-140
-120
-100
-80
-60
-40
-20
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 14
Problme de synchronisation avec la FFT
On illustre avec le signal s suivant compos d'une
ou de deux frquences f0 et f1 :
s=a*cos(2*pi*f0*t)+a1*cos(2*pi*f1*t)
1. erreur sur l'amplitude et sur la position de la raie
si f1 n'est pas l'une des frquences calcules :
2. risque de confusion, si les deux composantes de
frquence sont trop proches
0 2000 4000 6000 8000
0
1
2
3
4
5
frquence (Hz)
s
p
e
c
t
r
e

d
'
a
m
p
l
i
t
u
d
e
f0=500, f1=625, a=0.25, a1=0.25
0 2000 4000 6000 8000
0
1
2
3
4
frquence (Hz)
s
p
e
c
t
r
e

d
'
a
m
p
l
i
t
u
d
e
f0=500, f1=550, a=0, a1=0.25
N
f
k f
e
=
1
N
f
f f
e
<
1 0
f1
f1
f0
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 15
Exploitation du trac du spectre d'amplitude
sur les tracs suivants, retrouver : fe, N, a0 et f0, la dure
de la fentre temporelle et l'axe de symtrie.
Que vaut M ?
Que vaut Af ?
Quelle est la relation entre les tracs ?



fe=8000, N=32, s=0.25*cos(2*pi*500*t)
0 2000 4000 6000 8000
0
1
2
3
4
5
frquence (Hz)
s
p
e
c
t
r
e

d
'
a
m
p
l
i
t
u
d
e
0 2000 4000 6000 8000
0
1
2
3
4
frquence (Hz)
s
p
e
c
t
r
e

d
'
a
m
p
l
i
t
u
d
e
Calcul de la composition frquentielle du signal audio, SSII sance 5, page 16
Reprsentation 3D du spectrogramme
pour le signal vocal, on sait que la dure de la fentre
danalyse ne doit pas dpasser 30ms (?)
si fe=8 kHz, cest une fentre de 240 chantillons.
On calcule la FFT de la fentre,
on dplace la fentre et on recommence
On regroupe les rsultats dans un spectrogramme,
en 3D (cf. ci-dessous) ou en 2D (cf. Goldwave)
Quelle est ici la rsolution frquentielle ?
Comment obtenir une fentre de 20ms, sachant que
fe=22050Hz ? Donner la rsolution frquentielle.
Voici le spectrogramme de piano_c3.wav trac par
WaveLab : retrouver les informations de frquence
fondamentale, dure du signal, enveloppe