1 / 12

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

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 :.

erol
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  2. 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= Prenons un signal audio à compresser

  3. 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) construisons un banc de filtres et les réponses impulsionnelles h1 et h2 de ces filtres

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

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

  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. 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 ? Pour décompresser, on sur-échantillonne en ajoutant des échantillons nuls :

  8. 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 ? pour terminer, il faut appliquer des filtres interpolateurs pour récupérer s1 et s2:

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

  10. conserver K signaux filtrés sur M g1 h1 h2 g2 … … hM gM D’où la structure du CODEC : compression sur-éch. banc sous-éch interpolation synthèse sse(1,: ) sd(1,: ) s(1,: ) sint(1,: ) s(2,: ) s 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 : 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) for j=0:M-1 y(j+1,:)=filter(banc(j+1,:),1,e); end %% 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,:)); end %% 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

More Related