La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

1

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 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 lemploi dune loi de quantification non uniforme Evaluer le CODEC law à laide dun exemple

3 Page 2 On annonce un rapport signal sur bruit de 48dB. Quest ce que cela signifie précisément ? Donner lexpression de la loi inverse : En général, le CODEC law est- il plus performant que le CODEC MPEG audio layer 3 ? Quel est leffet dune réduction damplitude 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 lerreur de quantification augmente, quel est leffet sur le rapport signal sur bruit ? Si le nombre de bits utilisés B diminue, quel est leffet 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

4 Page 3 Comment quantifier le signal issu du micro Quantifier léchantillon : cest le contraindre à une valeur parmi 2 B possibles. Lintervalle [-1,1[ est dé- coupé en 2 B intervalles I i avec i = 0,1,2,… 2 B -1 de la forme I i = [a i,a i + [ Si x(nT e ) appartient à lin- tervalle i, on lui associe dans la suite de ce cours : –la valeur x i au centre de lintervalle et –le code binaire i sur B bits On définit ainsi lerreur de quantification e(nT e ) : Pour B = 8 bit, que vaut ? Et dans ce cas que vaut lintervalle I 0 ?

5 Page 4 Ce nest pas la seule façon de quantifier 2. on choisit pour xi dans un CAN, la borne inférieure de lintervalle. Lerreur est donc toujours < 0. Elle varie entre ? 1. Ici, xi est le centre de lintervalle (loi rouge). Lerreur 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, x i, et lerreur de quantification avec les deux lois pour les valeurs x= 0.2, x= -0.2, x= 0.9 Amplitude x de léchantillon à quantifier valeur x i quantifiée

6 Page 5 On illustre la quantification avec Matlab max(eq) = min(eq) = mean(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 danalyser ler- reur de quantification : t=[0:1000]/44100; s=sin(880*pi*t); sq=numerise(s,8); %calculons l'erreur eq=sq-s; % étude de l'erreur Quobserve ton pour lerreur ?

7 Page 6 La qualité de la quantification se mesure en décibel au moyen du rapport signal sur bruit (ou SNR). Lerreur de quantification est centrée (à valeur moyenne nulle) : On en tire la variance de lerreur et lexpression du rapport signal sur bruit (en décibel) :

8 Page 7 On doit gérer lerreur comme un signal aléatoire Lerreur de quantification e(nT e ) 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) cest-à-dire que la probabilité davoir est –doù la valeur moyenne de e : –et la variance ou lécart-type qui mesurent lécart moyen de e à la valeur moyenne E(e) :

9 Page 8 Hypothèse dune erreur uniformément répartie Lhypothèse que p(e) est constante dans [-2 -B,2 -B ] est dautant plus plausible que : Quelle est la probabilité que ?

10 Page 9 Il faut évaluer x à partir du signal x(nT e ) Pour calculer précisément le rapport signal sur bruit, on fera une étude statistique du signal, comme pour lerreur de quantification. En pratique, x(nTe) noccupe quune partie de lintervalle [-1,1]. évaluer p(x) et x si x est centré et uniformément réparti dans [-1,1[

11 Page 10 On illustre avec le fichier piano_c3.wav [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 = Hz b = 16 bit N= max(y)= min(y)= mean(y) = std(y) = Le signal x est il centré et uniformément réparti ? Quel est leffet sur x ? Valeurs des échantillons entre -1 et 1 Nombre déchantillons

12 Page 11 Abaque donnant SNR dB (B) pour x =1/3 Lécart type x mesure loccupation de linterval- le [–1, 1] par le signal x. Voici le script Matlab qui trace labaque ci-contre avec x =1/3 : sigx=1/3 b=0:16; SNR=6.02*b *log10(sigx); plot(b,SNR) grid xlabel('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 ?

13 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 nest 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, doù on tire des taux de compression de lordre de C=3/2 (12 bits 8 bits) sur le signal vocal en téléphonie ou C=2 (16 bits 8 bits).

14 Page 13 Tracé avec Matlab de y =Q[x] (ici =2 8 -1) function ymu=mulaw(x) mu=255; N=1+mu; ymu=sign(x).*log(1+mu*abs(x))/log(N); % puis dans linterpréteur Matlab x=[-1:0.01:1]; plot(x,mulaw(x)) 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);

15 Page 14 Comment law transforme piano_c3 law law inverse b = 8 bit SNR Quantifier hist(y,64)hist(x,64)hist(y8,64) hist(xdec,64) Que démontre cette chaîne ?

16 Page 15 On vérifie que law améliore le SNR Klf1.wav 8 bit 8 bit [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 bruit er=x-x8; snr1=20*log10(std(x)/std(x-xrec)) snr2=20*log10(std(x)/std(er)) Résultats de MATLAB std(x) = std(y) = snr1 = dB snr2 = dB snr1 snr2

17 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 SNR x8=numerise(xdiv8,8); % on numérise sur 8 bit % numérise est une fonction à écrire par ailleurs % compression : on applique la loi mu y=sign(xdiv8).*log(1+255*abs(xdiv8))/log(256); y8=numerise(y,8); % décompression : on applique la loi mu inverse xrec=sign(y).*(256.^abs(y8)-1)/255; sound([8*x8;8*xrec],fs) % on joue les deux sons piano_c3 8 bit 8 bit 1/8 Comparer x8 et y8 et évaluer le taux de compression


Télécharger ppt "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."

Présentations similaires


Annonces Google