SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013)...

13
SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser Jean-Paul Stromboni, Polytech'Nice-Sophia, Département Sciences Informatiques, SI3 Jean-Paul Stromboni, Polytech'Nice-Sophia, Département Sciences Informatiques, SI3 durée 55 mn, vidéo projecteur, et au besoin jouer des sons durée 55 mn, vidéo projecteur, et au besoin jouer des sons Après ce cours, vous devez savoir : • décrire l'effet du sous-échantillonnage sur un signal audio et sur son spectre • justifier la contrainte de Shannon pour bien échantillonner un signal • décrire l’effet sur le spectre du filtre reconstructeur de Shannon • décrire l’effet du sur-échantillonnage d’un signal discret • décompresser par sur-échantillonnage et application du filtre de Shannon En travaux dirigés, vous expérimenterez : la compression et la décompression d'un signal sinusoïdal par sous-échantillonnage et sur-échantillonnage, avec l’aide de Scilab

Transcript of SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013)...

Page 1: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1

Sous-échantillonner le signal audio pour compresser Jean-Paul Stromboni, Polytech'Nice-Sophia, Département Sciences Informatiques, SI3Jean-Paul Stromboni, Polytech'Nice-Sophia, Département Sciences Informatiques, SI3durée 55 mn, vidéo projecteur, et au besoin jouer des sonsdurée 55 mn, vidéo projecteur, et au besoin jouer des sons

Après ce cours, vous devez savoir :

• décrire l'effet du sous-échantillonnage sur un signal audio et sur son spectre• justifier la contrainte de Shannon pour bien échantillonner un signal• décrire l’effet sur le spectre du filtre reconstructeur de Shannon • décrire l’effet du sur-échantillonnage d’un signal discret • décompresser par sur-échantillonnage et application du filtre de Shannon

En travaux dirigés, vous expérimenterez :la compression et la décompression d'un signal sinusoïdal par sous-échantillonnage et

sur-échantillonnage, avec l’aide de Scilab

Page 2: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 2

Sous échantillonner : un moyen de compresser• Sous échantillonner un signal discret dans un rapport M, c’est conserver

un échantillon sur M (cf. illustration ci-dessous)• Symbole :• Sous échantillonner dans un rapport M revient à diviser la fréquence

d’échantillonnage par M• La taille du signal est divisée par M, le bit rate (débit binaire) aussi,

d’où le taux de compression de M• Jusqu’à quel point peut on augmenter M sans endommager le signal ?

Te

t

s(t)

0 D

Exemple : pour M=2• Taille du signal avant ?• Taille du signal après

sous échantillonnage ?• Échantillons restants• que devient Te ?• Que devient fe ?• Taux de compression ?2Te

t

s(t)

0 D

M

Page 3: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 3

Effet du sous échantillonnage sur le spectre

eee

effNi

een

Tfetff

fNfefRavec

ffRffRa

sTDF

NnnTfanTsss

e /1)/sin(

)/sin()(

)),((2

)(

]10),2cos()([

/)1(

00

0

Exemple d’un signal sinusoïdal

Comment retrouver f0 et a sur le spectre ?

On sous-échantillonne le signal dans un rapport MTe devient MTe, M entier, fe devient fe/M

]1%0),2cos([

/

0

NMmmMTfass

MffMTT

emNM

eeee

Retrouver f0 et a ? Il faut répondre à la question :

f

f

fe

fe /M

fo

fo

fe - fo

fe /M- fo

0

0

a/2

a/2

|TFD(s)|

)( MsTFD

?20 M

ff e

Page 4: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 4

Exemple d’un signal sinusoïdal avec Matlab

% attention, script Matlabfe=8000;D=3;f0=440;a0=1;t=0:1/fe:D;s=a0*sin(2*pi*f0*t);N=8192;stem(t,s)axis([0,D,-1.1,1.1])ylabel('amplitude')xlabel('temps t (s)')title(['0 à',num2str(D),' s'])K=4*N;fr=[0:K-1]*fe/K;spec=abs(fft(s(1:N),K));plot(fr,spec)ylabel('spectre d''amp …)xlabel('fréquence Hz')title([ … ])grid

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

ampl

itude

temps t (s)

de 0 à 0.011364 s

0 1000 2000 3000 4000 5000 6000 7000 80000

1000

2000

3000

4000

5000sp

ectr

e d'

ampl

itude

fréquence Hz

abs(fft(y(1:N))), N=8192

Page 5: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 5

Sous-échantillonnage dans un rapport M=2

• Symbole :

• ssech=s(1:2:length(s));

• N devient 4096

• Te devient 2*Te, 1/4000s

• fe devient fe/2 soit 4000Hz

• on retrouve a0 et f0– a0/2 = 2048/N (2036/N),

d'où a0 = 1

– f0 = 440Hz (439.9)

• taux de compression C=2

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

ampl

itude

temps t (s)

de 0 à 0.011364 s

0 500 1000 1500 2000 2500 3000 3500 40000

500

1000

1500

2000

2500sp

ectr

e d'

ampl

itude

fréquence Hz

abs(fft(y(1:N))), N=4096

2

Page 6: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 6

Sous-échantillonnage de s dans un rapport 4

• ssech=s(1:4:length(s));

• N devient N/4= 2048 • Te devient 4*Te• fe devient fe/4 =2000Hz• a0/2 = 1024/2048, a0=1• f0 = 440Hz• taux compression : 4

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

ampl

itude

temps t (s)

de 0 à 0.011364 s

0 200 400 600 800 1000 1200 1400 1600 1800 20000

200

400

600

800

1000

1200sp

ectr

e d'

ampl

itude

fréquence Hz

abs(fft(y(1:N))), N=2048

4

Page 7: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 7

Sous-échantillonnage de s dans un rapport M= 8

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

ampl

itude

temps t (s)

de 0 à 0.011364 s

0 200 400 600 800 1000 1200 1400 1600 1800 20000

200

400

600

800

1000

1200

spec

tre

d'am

plitu

de

fréquence Hz

abs(fft(y(1:N))), N=2048

8

• ssech=s(1:8:length(s));

• N devient N/8= 1024 • Te devient 8*Te• fe devient fe/8 =1000Hz• a0/2 = 512/1024, a0=1• f0 = 440Hz• taux compression : 8

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

ampl

itude

temps t (s)

Chronogramme de 0 à 0.011364 secondes.

0 100 200 300 400 500 600 700 800 900 10000

100

200

300

400

500

600

spec

tre

d'am

plitu

de

fréquence Hz

abs(fft(y(1:N))), N=1024

Page 8: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 8

Sous-échantillonnage de rapport 16 : expliquer le problème !

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

ampl

itude

temps t (s)

Chronogramme de 0 à 0.011364 secondes.

0 50 100 150 200 250 300 350 400 450 5000

50

100

150

200

250

300sp

ectr

e d'

ampl

itude

fréquence Hz

abs(fft(y(1:N))), N=512

16• ssech=s(1:16:length(s));• N devient N/16= 512 • Te devient 16*Te• fe devient fe/16 =500Hz• a0/2 = 256/512, a0=1• f0 = 60Hz !! Erreur !!• taux compression : pas

• Les deux raies spectrales en f0 et fe-f0 ont croisé fe/2, on parle de repliement du spectre.

• On lit fe-f0=60Hz et non f0=440Hz dans l'intervalle [0,250Hz]

Page 9: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 9

Énoncés de la contrainte de Shannon• D’après ‘A Mathematical Theory of Communication’, july 1948, in Bell

System Technical Journal, par Claude Elwood Shannon (1916-2001)• Pour échantillonner correctement un signal s(t), il faut respecter la

contrainte de Shannon :– Contrainte de Shannon simplifiée : la fréquence d'échantillonnage doit être

égale au moins au double de la fréquence maximale du spectre du signal : • s'il existe fmax telle que S(f >fmax)=0, • alors fe >=2*fmax

– Contrainte de Shannon générale : la fréquence d'échantillonnage doit être égale au moins au double de la largeur du spectre du signal :

• s'il existe fmin et fmax telle que S(f >0) =0 pour f<fmin et pour f>fmax, • alors fe >=2*(fmax-fmin)

• Si la contrainte n’est pas respectée, les échantillons ne permettent pas de reconstituer le signal s(t) !

• Conséquence : seuls les signaux ‘à bande limitée’ (c’est-à-dire dont le spectre est nul au-dessus d’une fréquence fmax) peuvent être échantillonnés correctement, d’où le filtre dit ‘anti-aliasing’ des cartes sons qui limite le spectre du signal à l’intervalle [0, fe /2[ avant l’échantillonnage

Page 10: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 10

Filtre reconstructeur de Shannon, formule de Shannon

• Voici la formule de Shannon qui reconstruit s(t) à partir des échantillons s(nTe) si la contrainte de Shannon est respectée:

• En terme de filtrage, la formule de Shannon applique au signal discret le filtre reconstructeur de Shannon, pour retrouver s(t) :– ce filtre multiplie par Te les composantes fréquentielles entre –fe/2 et fe/2,

et multiplie par 0 toutes les autres composantes du spectre pour supprimer– voici la réponse fréquentielle de ce filtre tracée entre -fe et fe :

• Si la contrainte de Shannon n‘est pas respectée pour l’échantillonnage, la formule est impuissante, s(t) est perdu, les échantillons sont inutiles !

n ee

eeee TnTt

TnTtnTstsnTs

/)(

)/)(sin()()()(

ffe/2-fe/2

Te

0

Page 11: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 11

Effets du sur-échantillonnage sur le spectre : • S(f) ne change pas, car on ajoute des échantillons nuls !• fe étant multipliée par 8, on voit M=8 périodes de S(f) entre 0 et fe

Sur-échantillonnage d’un signal discret dans un rapport M signifie insertion de M-1 échantillons nuls entre deux échantillons du signal

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

ampl

itude

temps t (s)

Chronogramme de 0 à 0.011364 secondes.

0 1000 2000 3000 4000 5000 6000 7000 80000

100

200

300

400

500

600sp

ectr

e d'

ampl

itude

fréquence Hz

abs(fft(y(1:N))), N=8192

8// avec Scilab ou Matlabsse=zeros(size(s));sse(1:M:length(s))=ssech;

• N/8 redevient N échantillons• 8*Te redevient Te• fe/8 redevient fe =8000Hz• a0/2 reste 512/1024, a0=1• f0 = 440Hz

sur-échantillonnage M=8 :

1

0

/2)(N

n

fnfin

eesfS

8

0440

Comment retrouver ci-contre le spectre du signal de départ (cf. page 6) ?

Page 12: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 12

pour terminer, on applique un filtre chargé de reconstituer le spectre du signal sinusoïdal avant le sous échantillonnage

0 0.002 0.004 0.006 0.008 0.01

-1

-0.5

0

0.5

1

0 1000 2000 3000 4000 5000 6000 7000 80000

1000

2000

3000

4000

5000sp

ectr

e d'

ampl

itude

fréquence Hz

abs(fft(y(1:N))), N=8192

la3la3Shannon

Le filtre de Shannon de fréquence de coupure fe/8 reconstitue le spectre du signal s à partir du spectre de sse :

• il conserve les 2 raies du spectre de s et supprime toutes les autres

• il multiplie par 8 les raies conservées

Pourquoi peut-on assurer que la sortie du filtre vaut s ? Parce que le spectre du signal filtré est le spectre de s !

Pourquoi faut-il respecter la contrainte de Shannon ?Car le filtre de Shannon est inefficace sinon (voir par exemple M=16)Programmation du filtre avec Scilab

t= [0: length(s)-1]/fe;srec=zeros(1,length(s)); // pour size(s) en Matlabfor j=0:length(ssech)-1 srec=srec+ssech(j+1)*sinc(%pi*(t-8*j/fe)*fe/8); // en Matlab, pas besoin de %piend

8

0440

Page 13: SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 1 Sous-échantillonner le signal audio pour compresser.

SI3, cours S.S.I.I., chapitre 5 : Sous-échantillonner le signal audio pour compresser (vers. 2013) Page 13

Créer avec Scilab le signal s suivant durant 2 s :

Sous échantillonner le signal s dans le vecteur Scilab sse si M=2 ?

Quel est le bit rate de s si B=8 bits ? Quel taux de compression faut il appliquer à s pour réduire le bit rate à 32kbps ?

Sur-échantillonner le vecteur sse dans un rapport M=2

Qu'est ce que le recouvrement du spectre ?

Jusqu'à quel rapport M peut on sous échantillonner le signal s ?

Dans quel cas le filtre de Shannon est-il incapable de retrouver s à partir de sse ?

kHzft e 8),1800cos(5.0

Pour vous tester par vous-même