1 comment compresser avec le codec law jean-paul stromboni, mardi 4 mai 2004 essi 1, module ssi, 1h,...

16
1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI , 1h, amphi est ESSI 1, module SSI , 1h, amphi est Objectifs de la séance : Rappeler comment on quantifie un signal audio avec B bits Montrer comment on évalue le bruit de quantification Calculer le rapport signal sur bruit SNR dB (B) Justifier l’emploi d’une loi de quantification non uniforme Evaluer le CODEC law à l’aide d’un exemple

Upload: corneille-smith

Post on 03-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

1

Comment compresser avec le CODEC lawJean-Paul Stromboni, mardi 4 mai 2004Jean-Paul Stromboni, mardi 4 mai 2004

ESSI 1, module SSI , 1h, amphi estESSI 1, module SSI , 1h, amphi est

Objectifs de la séance :

• Rappeler comment on quantifie un signal audio avec B bits

• Montrer comment on évalue le bruit de quantification

• Calculer le rapport signal sur bruit SNRdB(B)

• Justifier l’emploi d’une loi de quantification non uniforme

• Evaluer le CODEC law à l’aide d’un exemple

Page 2: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 2

On annonce un rapport signal sur bruit de 48dB. Qu’est ce que cela signifie précisément ?

Donner l’expression de la loi inverse :

En général, le CODEC law est-il plus performant que le CODEC MPEG audio layer 3 ?

Quel est l’effet d’une réduction d’amplitude du signal x sur le SNR ?

Un signal aléatoire x présente une répartition uniforme dans [-1,1]. Que peut-on en déduire ?

Quand l’erreur de quantification augmente, quel est l’effet sur le rapport signal sur bruit ?

Si le nombre de bits utilisés B diminue, quel est l’effet sur le rapport signal sur bruit ?

On ramène nombre de bits de 12 à 8 avec le CODEC law. Quel est le taux de compression résultant ?

Pour vous tester sur ce cours

Page 3: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 3

Comment quantifier le signal issu du micro• Quantifier l’échantillon :

• c’est le contraindre à une valeur parmi 2B possibles.

• L’intervalle [-1,1[ est dé-coupé en 2B intervalles Ii avec i = 0,1,2,… 2B-1 de la forme Ii = [ai,ai+[

• Si x(nTe) appartient à l’in-tervalle i, on lui associe dans la suite de ce cours :– la valeur xi au centre de

l’intervalle et

– le code binaire i sur B bits

• On définit ainsi l’erreur de quantification e(nTe) :

1)(1 enTx

)()( eie nTxxnTe

Pour B = 8 bit, que vaut ? Et dans ce cas que vaut l’intervalle I0 ?

Page 4: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 4

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Deux lois de quantification (B=3 bits(

loi centré eerreur <0lieu d'erreur nulle

Ce n’est pas la seule façon de quantifier

2. on choisit pour xi dans un CAN, la borne inférieure de l’intervalle. L’erreur est donc toujours < 0. Elle varie entre ?

1. Ici, xi est le centre de l’intervalle (loi rouge). L’erreur est donc tantôt > 0, tantôt < 0, et nulle en moyenne. Elle varie entre ?

-2-B et 2-B

0 et -2-B+1

Préciser i, xi , et l’erreur de quantification avec les deux lois pour les valeurs • x= 0.2 , • x= -0.2, • x= 0.9

Amplitude x de l’échantillon à quantifiervaleur x

i quantifiée

Page 5: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 5

On illustre la quantification avec Matlab

0 0.01 0.02 0.03-1

-0.5

0

0.5

1signal à quantifier

0 0.01 0.02 0.03-1

-0.5

0

0.5

1signal quantifié

0 0.005 0.01-5

0

5x 10

-3erreur de quantification

-4 -2 0 2 4

x 10-3

0

5

10

15

20histogramme de l'erreur

max(eq) = 0.004min(eq) = -0.004mean(eq) = -3.6*10-5 std(eq) = 2.2*10-3 hist(eq, 64)

La fonction numerise quantifie sur 8 bits les échantillons de s(t) et permet d’analyser l’er-reur de quantification :

Hzf

tts

e 44100

)880sin()(

t=[0:1000]/44100;s=sin(880*pi*t);sq=numerise(s,8);%calculons l'erreureq=sq-s;% étude de l'erreur

Qu’observe t’on pour l’erreur ?

Page 6: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 6

La qualité de la quantification se mesure en décibel au moyen du rapport signal sur bruit (ou SNR).

][][][0)(][ 22222

2

eEeEeEdeepeeE e

B

B

)(log2077.402.6

)32(log20)(log10

10

102

2

10

xd

xB

e

xdB

BSNR

SNR

B

BBB

e

B

Bdee

22

22

2

212

23

1

212

22

L’erreur de quantification est centrée (à valeur moyenne nulle) :

On en tire la variance de l’erreur

et l’expression du rapport signal sur bruit (en décibel) :

Page 7: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 7

On doit gérer l’erreur comme un signal aléatoire• L’erreur de quantification e(nTe) est notée e :• Elle est traitée comme un signal aléatoire, on dit aussi un

bruit.• On lui associe donc une densité de probabilité p(e) c’est-à-dire

que la probabilité d’avoir est

– d’où la valeur moyenne de e :

– et la variance ou l’écart-type qui mesurent l’écart moyen de e à la valeur moyenne E(e) :

BB e 22

B

B

deeepeE2

2

)()(

e2e

B

B

deepeeE

eEeEeEeEe

2

2

22

2222

)()(

)()()))(((

deeee 00 deep )( 0

Page 8: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 8

Hypothèse d’une erreur uniformément répartieL’hypothèse que p(e) est constante dans [-2-B,2-B] est d’autant plus plausible que :12 B

12

2

2)(1)(

]2,2[,)(

B

BB

epdeepet

ecteepB

B

B2B 2e

)(ep

Quelle est la probabilité que ? BB e 22

Page 9: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 9

Il faut évaluer x à partir du signal x(nTe)Pour calculer précisément le rapport signal sur bruit, on fera une étude statistique du signal, comme pour l’erreur de quantification.En pratique, x(nTe) n’occupe qu’une partie de l’intervalle [-1,1].

1

1

2

222

1

1

maxmin

)(

][][0][

)()(][

:)(

1)(1

max

min

dxxpx

xExExE

dxxxpdxxxpxE

xdeéprobabilitdedensitéxp

xnTxx

x

x

x

e

)(xp

x

1 1

x

][xE maxxminx

évaluer p(x) et x si x est centré et uniformément réparti dans [-1,1[

Page 10: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 10

On illustre avec le fichier piano_c3.wav

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

500

1000

1500

2000

2500

3000

3500

[y,fe,b]=wavread('../Sons/piano_c3.wav');disp(num2str(fe))disp(num2str(b))N=length(y)mean(y)std(y)hist(y,100)

fe = 44100 Hzb = 16 bitN= 77566 max(y)= 0.8533min(y)= - 0.9999mean(y) = - 0.0012std(y) = 0.1528

Le signal x est il centré et uniformément réparti ? Quel est l’effet sur x ?

Valeurs des échantillons entre -1 et 1

Nom

bre d’échantillons

Page 11: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 11

Abaque donnant SNRdB(B) pour x=1/3L’écart type x mesure l’occupation de l’interval-le [–1, 1] par le signal x.Voici le script Matlab qui trace l’abaque ci-contre avec x=1/3 :sigx=1/3b=0:16;SNR=6.02*b+4.77+20*log10(sigx);plot(b,SNR)gridxlabel('b=nombre de bits')ylabel('Signal to noise ratio (dB)')title('Tracé pour \sigma_x=1/3')

Quel est l’écart de rapport signal sur bruit entre B=8bits et B=12bits ?

Page 12: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 12

law: loi de quantification non uniforme• Les niveaux de quantification sont mal utilisés par le signal

x(nTe) quand la répartition des échantillons n’est pas uniforme, il en résulte une chute de x, donc du rapport signal sur bruit.

• Le CODEC law applique une non linéarité Q[.] (voir ci-dessous) au signal x pour répartir mieux les valeurs des échantillons et donc augmenter le rapport signal sur bruit.

• Si on quantifie y= Q[x], on peut réduire le nombre de bit B en dégradant un peu le SNR, d’où on tire des taux de compression

• de l’ordre de C=3/2 (12 bits 8 bits) sur le signal vocal en téléphonie ou C=2 (16 bits 8 bits).

12,)1ln(

)1ln()sgn(][ 8

xxxxQy Q

Page 13: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 13

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Tracé avec Matlab de y =Q[x] (ici =28-1)

x

function ymu=mulaw(x)

mu=255; N=1+mu;

ymu=sign(x).*log(1+mu*abs(x))/log(N);

% puis dans l’interpréteur Matlab

x=[-1:0.01:1];

plot(x,mulaw(x))

][xQy

function [y]=invmulaw(xmu) mu=255; N=1+mu; y=sign(xmu).*(exp(log(N)*abs(xmu))-1)/mu;function yn=numerise(y,b) % code y sur b bit, retour dans yd % y est supposé varier entre -1 et 1 N=2^b; yn=(1+2*fix((y+1)*N/2))/N - 1; yn(length(yn))=yn(length(yn)-1);

Page 14: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 14

Comment law transforme piano_c3law law inverse

b = 8 bit

SNR

Quantifier

x ][xQy 8y DECx

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

2000

4000

6000

8000

10000

12000

14000

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

500

1000

1500

2000

2500

3000

3500

hist(y,64)hist(x,64)

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

500

1000

1500

2000

2500

3000

3500

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

2000

4000

6000

8000

10000

12000

hist(y8,64) hist(xdec,64)

12000

3000 3000

12000

Que démontre cette chaîne ?

Page 15: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 15

On vérifie que law améliore le SNR

Klf1.wav

8 bit -1

8 bitbitB 16

)( enTx )( enTy )(8 enTy

)(8 enTx

)( erec nTx

[x,f,b]=wavread('../Sons/klf1.wav');x8=numerise(x,8);std(x)y=mulaw(x);std(y)y8=numerise(y,8);xrec=invmulaw(y8);% calcul du rapport signal sur bruiter=x-x8;snr1=20*log10(std(x)/std(x-xrec))snr2=20*log10(std(x)/std(er))

Résultats de MATLABstd(x) = 0.0541std(y) = 0.3567snr1 = 37.7157 dBsnr2 = 27.5937 dB

bitB 8

bitB 8 snr1

snr2

Page 16: 1 Comment compresser avec le CODEC law Jean-Paul Stromboni, mardi 4 mai 2004 ESSI 1, module SSI, 1h, amphi est Objectifs de la séance : Rappeler comment

Page 16

Comment on utilise law pour compresser

[x,fs,b]=wavread('../Sons/piano_c3.wav');xdiv8=x/8; % on divise le signal par 8 pour dégrader SNRx8=numerise(xdiv8,8); % on numérise sur 8 bit% numérise est une fonction à écrire par ailleurs% compression : on applique la loi muy=sign(xdiv8).*log(1+255*abs(xdiv8))/log(256);y8=numerise(y,8);% décompression : on applique la loi mu inversexrec=sign(y).*(256.^abs(y8)-1)/255;sound([8*x8;8*xrec],fs) % on joue les deux sons

piano_c3 8 bit -1

8 bitbitB 16

)( enTx)( enTy )(8 enTy

)( erec nTx1/8

)(8 enTx

bitB 8

bitB 8

Comparer x8 et y8 et évaluer le taux de compression