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

Un moyen de compresser le signal audio présenté à travers un exemple

Présentations similaires


Présentation au sujet: "Un moyen de compresser le signal audio présenté à travers un exemple"— Transcription de la présentation:

1 Un moyen de compresser le signal audio présenté à travers un exemple
Cours S.S.I.I., séance 10, novembre 2009, durée 55 minutes Jean-Paul Stromboni, pour les élèves SI3, vidéoprojecteur préciser Ce que vous devez savoir après cette séance : Compresser un signal audio, c'est réduire sa taille et son débit binaire, ou bit rate, d’où le taux de compression. Pour compresser avec un banc de filtres, il faut d’abord sous échantillonner les signaux filtrés, et réduire la taille des signaux filtrés les moins significatifs. Pour décompresser, on sur-échantillonne en ajoutant des échantillons nuls, et on applique des filtres interpolateurs. définir contenu Savez vous répondre aux questions suivantes ? se tester soi-même Calculer l’énergie d’un échelon de Heaviside de longueur R=256 points de deux façons. Un son wav 44100Hz, 16 bits, mono, est compressé à 128kbps, que vaut C ? Avec un taux de compression de 11 que devient un son wav de 33 Mo ? Comment décimer en Matlab dans un facteur 10 le vecteur: s= sin(0.2*pi*[1:10000]) Pourquoi peut-on décimer les signaux filtrés dans un banc de M filtres ? Comment sur-échantillonner le signal s avec MATLAB dans un rapport ? Décimer le signal suivant : Avec un banc de 32 filtres, quel taux de compression peut on imaginer atteindre ?

2 Prenons un signal audio à compresser
Il est tiré du fichier : Chord.wav son spectrogramme son chronogramme sa taille N sa durée sa fréquence d'échantillonnage durée de fenêtres de fft (20 à 30 ms donne D=

3 construisons un banc de filtres
un banc de deux filtres (pour faire simple), réponses harmoniques représentées entre -fe/2 et fe/2 retrouver la fréquence d'échantillonnage la longueur des filtres, les fréquences de coupure leurs gains statiques (à fréquence nulle) et les réponses impulsionnelles h1 et h2 de ces filtres

4 On filtre le signal e avec h1 et h2
on obtient deux signaux, s1 et s2 dont voici les chronogrammes s1, c'est e filtré par h1 et s2, e filtré par h2 et voici les spectres de e, s1 et s2

5 on peut sous-échantillonner s1 et aussi s2 dans un rapport 2, pourquoi ?
On obtient deux signaux notés sd1 et sd2

6 On compare sd1 et sd2 en calculant les énergies de ces deux signaux :
Matlab trouve que l'énergie de sd1 vaut 25.5 , et que celle de sd2 vaut 1.0 prédire le taux de compression si on néglige sd2 on conserve sd1 et sd2, pour voir si on sait décompresser les deux signaux, quel est le taux de compression prévisible ?

7 Pour décompresser, on sur-échantillonne en ajoutant des échantillons nuls :
comment en tire t'on les signaux sse1 et sse2 (utiliser le zoom sur le chronogramme de sse2) ? quel est l'effet sur la fréquence d'échantillonnage ? comment retrouver les spectres de s1 et de s2 ?

8 pour terminer, il faut appliquer des filtres interpolateurs pour récupérer s1 et s2:
On en tire les signaux sint1 et sint2, par filtrage : comparer ces deux filtres ci-dessous avec h1 et h2 pourquoi peut on affirmer qu'on récupère s1 et s2 ?

9 et voici le signal reconstruit srec, ici avec un taux de compression de un puis de deux

10 D’où la structure du CODEC :
Pour évaluer l'importance des signaux filtrés dans le signal à compresser, on utilise l'énergie définie par : Compléter le diagramme ci-dessus : identifier les étages de la structure : placer les signaux et variables : donner un principe pour le bloc 'conserver K signaux‘ Donner le taux de compression donner le taux de compression maximum possible indiquer comment réaliser les filtres interpolateurs gi : compression sur-éch. banc sous-éch interpolation h1 h2 hM g1 g2 gM conserver K signaux filtrés sur M sd(1,: ) sse(1,: ) synthèse s(1,: ) sint(1,: ) s(2,: ) s srec sint(M,: ) Rappel : exercice Négliger les signaux filtrés dont l’énergie est inférieure à un seuil M/K, soit M gi=M*hi

11 Simulation Matlab : le script codec.m
% lecture du signal [e,fe,B]=wavread('..\..\z.SonsSSI\Bbc.wav'); D=fix(fe*0.03) % pour une fenêtre de 30 millisecondes spectrogram(e,D,0,D,fe,'yaxis') title(['spectrogramme de Bbc.wav']) % création du banc de filtres M=8; R=256; N= R/(4*M); H=[ones(1,N-1),0.9,0.5,0.1,zeros(1,R-2*N-3), … 0.1,0.5,0.9,ones(1,N-2)]; h=fftshift(real(ifft(H))); for j=0:M-1 banc(j+1,:)=2*cos((2*j+1)*[0:R-1]*pi/(2*M)).*h; end %% 1. étage d’analyse (banc de filtres) y(j+1,:)=filter(banc(j+1,:),1,e); %% 2. étage sous-échantillonneur fd = y(:,1:M:length(e)); %% 3. placer ci-dessous votre algorithme de compression monalgorithme %% 4. étage sur-échantillonneur fse=zeros(M,length(e)); fse(:,1:M:length(e))=fd; %% 5. étage interpolateur for k=1:M fint(k,:)=filter(M*banc(k,:),1,fse(k,:)); %% 6. étage de synthèse frec=sum(fint);

12 Exemple d'algorithme de compression: on annule les échantillons compressés
%% monalgorithme.m : garder les K premiers signaux filtrés % principe: annuler les signaux filtrés à négliger E=diag(y*y')/2; bar([0:M-1]*fe/(2*M),100*E/sum(E)) xlabel('fréquence (Hz)') title('énergie en % de l''énergie totale') grid K=input('entrer le nombre de bandes à conserver') fd(K+1:M,:)=0; disp(['K= ',num2str(K),'taux de compression : ',num2str(M/K)]) illustrer Résultat pour K=5, taux de compression prédit : 1.6


Télécharger ppt "Un moyen de compresser le signal audio présenté à travers un exemple"

Présentations similaires


Annonces Google