Vous êtes sur la page 1sur 14

Calcul de la composition frquentielle du signal audio

Jean-Paul Stromboni, pour les lves SI3,


ncessite un vido projecteur, dure 50mn , octobre 2012

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 du signal de de la fentre dapodisation
Utiliser les fonctions fft(.) et spectrogram(.) de MATLAB

Travaux Dirigs : calculer et exploiter TFD et FFT

Savez vous rpondre aux questions suivantes ?


Quelle est linformation donne par le spectre Quelle est la rsolution frquentielle d'une
dun signal audio ? FFT de taille N= 32 si fe= 8kHz ?

Pourquoi diviser le spectre d'amplitude par la Quelle est la priode du spectre d'un signal
taille N de la fentre temporelle ? audio numrique chantillonn 22050Hz ?

Si on calcule M = 2048 valeurs de la TFD, Quelle est la dure d'une fentre de 1024
prciser les frquences fk si fe=8000Hz : chantillons, fe = 44100Hz

Donner la composition frquentielle de x(t) Pourquoi limiter le calcul du spectre une


x(t ) cos (2000t )
2 fentre de taille N chantillons ?

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 1


Composition frquentielle ou spectre
Depuis Joseph Fourier (1768-1830), physicien et
mathmaticien franais, on sait dcomposer une
fonction du temps s(t) quelconque en une somme
de fonctions sinusodales, ou spectre :
Soit s(t), fonction du temps dfinie quelque soit t,
S(f) ci-dessous dtermine le spectre de s(t) :

S ( f ) s(t )e2ift dt

Inversement, connaissant le spectre S(f) de s(t), on
dtermine s(t) par :

s(t ) S ( f )e2ift df

S(f) est une quantit complexe :


Si la composante frquentielle de s(t) la frquence
f sexprime par :
s f (t ) a f cos( 2ft p f )
On aura : a f S ( f ) et p f S ( f )

Dans la suite de ce cours, on se limite au module


de S(f), cest--dire au spectre damplitude :
spectre S ( f )

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 2


Matlab, Scilab, Goldwave, utilisent la Transforme
de Fourier Discrte (TFD) pour calculer le spectre
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 ) n0 x(n / f e )e2ifn / fe n0 xne2ifn / fe
N 1 N 1

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 seulement N
valeurs de la TFD, les X(fk) pour les seules frquences fk :
f k kfe / N , k 0 N 1
fe
f f k 1 f k est la rsolution frquentielle
N
N 1 2ink

X ( fk ) X k x
n 0
n e M
, f k kfe / M , k 0 M 1,

Note : pour mieux reconstruire la fonction X(f), on peut


calculer et afficher M > N valeurs au lieu de N
Algorithme de transforme de Fourier rapide (en
anglais Fast Fourier Transform)
Si N est une puissance de 2, on acclre le calcul du fait
des priodicits et symtries des exponentielles complexes
Matlab, Scilab, Goldwave, utilisent lalgorithme de
FFT pour calculer la transforme de Fourier discrte

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 3


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
rn x, 0 n N 1

TFD(rn ) R( f ) x n0 e2in( f / fe )
N 1

1 e 2iN f / f e
R( f ) x
1 e 2i f / f e
e iNf / f e eiNf / f e e iNf / f e
R( f ) x if / f e
e eif / f e e if / f e
sin( Nf / f e )
R( f ) x e i ( N 1) f / f e
sin( f / f e )

sin( Nf / f e )
R( f ) x
sin( f / f e )
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

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 4


Analyse dun exemple : x = 0.75, N = 16, fe = 8kHz
sin( Nf / f e ) sin( 16f / 8000)
R( f ) x 0.75
sin( f / f e ) sin( f / 8000)
a=0.75, N=16, fe=8000, M=256
16
spec tre de x=0.75 fentre de taille 16
14
Trac sur
12
une priode
spectre d'amplitude

10
[ 0, fe [
8

6 Relation
4
entre
2
[0,fe/2] et
[fe/2, fe] ?
0
0 1000 2000 3000 4000 5000 6000 7000 8000
frquenc e (Hz)

a=0.75, N=16, fe=8000, M=256


1
spec tre de x=0.75 fentre de taille 16
0.9
Trac de
0.8
spectre/N
0.7
entre 0 et fe
0.6
spectre/N

0.5

0.4

0.3

0.2

0.1

0
0 1000 2000 3000 4000 5000 6000 7000 8000
frquenc e (Hz)
a=0.75, N=16, fe=8000, M=256
1
spec tre de x=0.75 fentre de taille 16
0.9

0.8
Trac de
0.7
spectre/N :
0.6
reporter les N
spectre/N

0.5 valeurs
0.4 calcules
0.3 R(kfe/N),
0.2 k= 0 N-1
0.1

0
0 1000 2000 3000 4000 5000 6000 7000 8000
frquenc e (Hz)
Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 5
TFD du signal sinusodal (sans calcul)
sn x cos(2nf 0 / f e ), 0 n N 1
e 2in ( f 0 / f e ) e 2in ( f 0 / f e )
sn x cos( 2nf 0 / f e ) a
2
TFD( sn ) S ( f ) x n 0 sn e 2nf / f e
N 1

e 2in ( f f 0 ) / f e e 2in ( f f 0 ) / f e
x n 0
N 1

2
x
( R( f f 0 ) R( f f 0 ))
2
Analyser le spectre damplitude suivant (o |S(f)| est dj divis par N)
a=0.5, N=16, fe=8000, f0=1000, M=256
0.35 Trac de |S(f)|/N
spectre de x=0.5 fentre de taille 16
sur une priode
0.3
Lire fe
0.25 R(f0)
spectre d'amplitude

R(fe-f0)
0.2
R(fe/N)
a
0.15
et f0
0.1
Placer les N= 16
valeurs calcules
0.05 par la TFD
f0 varie de 100
0 Hz, que prvoir ?
0 1000 2000 3000 4000 5000 6000 7000 8000
frquence (Hz)

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 6


Influence du nombre N dchantillons
(fentre rectangulaire, ou pas de fentre)
s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz

fentre rectangle N=32


1

0.5
signal s

-0.5 f0=
-1 a0=
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
temps (s) fe =
spectre d'amplitude/N, N=32 M=256
0.4 N=
0.3
NTe =
f =
spectre/N

0.2
spectre/N =
0.1

0
0 1000 2000 3000 4000 5000 6000 7000 8000
frquence (Hz)

fentre rectangle N=256


1

0.5 f0=
signal s

0 a0=
-0.5 fe =
-1 N=
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
temps (s) NTe =
0.4
spectre d'amplitude/N, N=256 M=2048
f =
0.3
spectre/N =
spectre/N

0.2

0.1

0
0 1000 2000 3000 4000 5000 6000 7000 8000
frquence (Hz)

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 7


Influence de la fentre de Hamming
r (n ) 1, 0 n N 1
h(n ) 0.54 0.46 cos( 2n /( N 1)), 0 n N 1
fentre de Hamming N=32
1.5
Hamming
Rect

1
amplitude

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5
temps (s) -3
x 10

Comparaison des spectres d'amplitude de ces deux fentres :


N=32, M=256 points calculs, D=N*Te=0.004, deltaf=250
1
fe=
Rect N=
0.9 Hamming dure=
0.8 fe/N=
spectre normalis : fftshift( abs (fft)) / N

0.7
fmin=
fmax=
0.6

0.5 Hamming
0.4
amplMax=
nbLobes=
0.3 largeur=
0.2
Rectangle
0.1
amplMax=
0
-4000 -3000 -2000 -1000 0 1000 2000 3000 4000
nbLobes=
frquence (Hz) largeur:

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 8


Influence de la taille N du signal dans le
cas de la fentre de Hamming
s= 0.75*cos(2*pi*440*t), D=0.04s, fe=8kHz
fentre de Hamming N=32
1

0.5
signal s

0 f0=
-0.5
a0=
-1
fe =
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
N=
temps (s)
spectre d'amplitude/(N*0.53), N=32 M=256 NTe =
0.4
f =
0.3
spectre/N =
spectre/(N*0.53)

0.2

0.1

0
0 1000 2000 3000 4000 5000 6000 7000 8000
frquence (Hz)

1
fentre de Hamming N=256
Dessiner la
forme de la
0.5
fentre de
signal s

0
Hamming
-0.5

-1
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
temps (s)

0.4
spectre d'amplitude/(N*0.53), N=256 M=2048
Comparer au
spectre
0.3
spectre/(N*0.53)

obtenu avec
0.2
la fentre
0.1 rectangulaire
0
0 1000 2000 3000 4000 5000 6000 7000 8000
frquence (Hz)

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 9


Erreur ou problme de synchronisation
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 :
f0=500, f1=550, a=0, a1=0.25
4
spectre d'amplitude

0
0 2000 4000 6000 8000
frquence (Hz)

2. risque de confusion, si les deux composantes de


frquence sont trop proches
f0=500, f1=625, a=0.25, a1=0.25
5

4
spectre d'amplitude

0
0 2000 4000 6000 8000
frquence (Hz)

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 10


Spectre et spectrogramme (avec Goldwave)
Spectrogramme de s(t), fe=8kHz, f=500Hz, fentre rectangulaire, 30fps
0.8 cos( 6ft) cos(10ft) cos(14ft)
s (t ) 2
cos( 2ft)
32 52 72

spectre = composition frquentielle

Spectrogramme=spectre (temps)

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 11


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
400

350

300

250

200

150

100

50

0
-5000 0 5000

Noter pour le spectrogramme :


1. la fentre utilise est une fentre de Hamming
2. le code de couleurs donnant lamplitude en dB est droite

4000

-20
3500

-40
3000

-60
2500
Frequency (Hz)

-80
2000

1500 -100

1000 -120

500 -140

0
0.5 1 1.5
Time

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 12


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 f ?
Quelle est la relation entre les tracs ?

4
spectre d'amplitude

0
0 2000 4000 6000 8000
frquence (Hz)

3
spectre d'amplitude

0
0 2000 4000 6000 8000
frquence (Hz)

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 13


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 TFD 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

Composition frquentielle du signal audio, sance 4 SSII, oct. 2012 - page 14

Vous aimerez peut-être aussi