110 likes | 226 Views
Compresser avec un banc de filtres. Jean-Paul Stromboni, Polytech'Nice Sophia, S.I. 3 ème année cours n°8, décembre 2013, durée : 50mn, vidéoprojecteur. Le contenu de ce cours :.
E N D
Compresser avec un banc de filtres Jean-Paul Stromboni, Polytech'Nice Sophia, S.I. 3ème année cours n°8, décembre 2013, durée : 50mn, vidéoprojecteur Le contenu de ce cours : • Dans cette séance, on réunit les notions présentées lors des séances précédentes pour compresser un signal audio numérique : • Soit le signal x de taille N échantillons codés sur B bits chacun • Le spectre de x est analysé par un banc de M filtres, c’est à dire décomposé en M signaux x1, x2, … xM issus chacun d’un filtre, soient N*M échantillons, • On sait que x1+x2+… xM= x et • On peut sous échantillonner es signaux x1, x2, … xM dans un rapport M puisque leurs spectres sont tous de largeur fe/M, (condition de Shannon), on a maintenant M*N/M échantillons • Pour atteindre un taux de compression supérieur à un, il faut dégrader le signal x : • soit en négligeant les échantillons des signaux de plus faible énergie • soit en réduisant le nombre de bits utilisés pour le codage binaire des échantillons T.D. n° 8 : simulation de compression avec Scilab
R R/2 R/4 R/8 f 0 fe f f f f B2 B2 B3 B3 B4 Découper le spectre X ci-dessous (à compléter) en quatre bandes de fréquence de largeurs égales fe/4 compléter Découper X en quatre bandes égales, B1, B2, B3 et B4 B1 B1
R R/2 R/4 R/8 f R R R R 0 fe R/2 R/2 R/2 R/2 R/4 R/4 R/4 R/4 R/8 R/8 R/8 R/8 f f f f fe fe fe fe Vérifier qu’on peut compresser x3 comme les autres signaux issus du banc dans un facteur 4 En perdant 10% de l’énergie du signal x, on obtient C=4
Structure de principe d’un CODEC* utilisant un banc de filtres Algorithme compression Étage sur-é- chantillonneur Étage sous-é- chantillonneur banc de M filtres banc de M filtres Étage de compression *CODEC : coder decoder, cf. vocoder, Chicago, 1939 • La structure du CODEC inclut cinq étages : • Banc de filtres de réponses fréquentielles B1,B2,… BM et de longueur R avec : (B1+B2+… BM)*X=XN*M échantillons, C=1/M • Sous-échantillonnage de rapport M, autorisé parce que la largeur de spectre des signaux x1, x2, … xM vaut fe/M (et donc la condition de Shannon générale est vérifiée)M*N/M échantillons, C=1 • Etage de compression: objectif, atteindre C > 1 • Sur-échantillonnage (intercale M-1 échantillons nuls) • Banc de filtres interpolateurs, obtenu en multipliant par M les réponses fréquentielles des filtres B1, B2, … BM • Synthèse additive, le signal décompressé est noté xrec xse1 x1 xd1 B1 xd2 xse2 x2 B2 x xrec … … xM xdM xM xseM BM
Deux principes pour l’étage de compression • Un premier principe de compression consiste à comparer les énergies des signaux x1, x2, … xM issus du banc de filtre : • Si on conserve K signaux sur M, ceux dont les énergies sont les plus importantes, le taux de compression atteint est : C= M/K • Si on conserve suffisamment de signaux pour reconstituer 80% de l’énergie du signal x, soit L signaux en tout, le taux de compression vaut C= M/L • Un second principe de compression consiste à réduire le nombre de bits utilisés pour coder les signaux sous-échantillonnés x1d, x2d, … • x codé sur B bits, on code • x1 sur b1 bits, • x2 sur b2 bits • … • xM sur bM bits • Et le taux de compression est :C= N*B/(b1+b2+…bM)*N/MC= B*M/(b1+b2+…bM)
Quantification sur B bits d’un signal discret • signal discret : x=[x(nTe)=xn, n=0.. N-1] • xn codé sur B bits, intervalle -1=< xn < 1 • le pas de quantification Q= 2/2B • taille de x : N*B en bits • Signal binaire : xbinn= partieEntière (xn/Q) • -2B-1 =< xbinn < 2B-1, par exemple B=8, -128=<xbinn<128 • Signal quantifié (ou numérique) xquantn=xbinn*Q, avec -1 =< xquantn < 1 • Erreur de quantification : en = xn – xquantn • Rapport signal sur bruit ou SNR (en dB):SNR= 20*log10(écartType(x)/écartType(e))(ex. SNR =72dB sur ligne téléphonique gd public)
Pour compresser sans modifier le pas de quantifica-tion Q, on supprime les bits inutilisés, s’il en existe Plus l’amplitude du signal est faible, et plus il risque d’y avoir des bits inutilisés. Premier cas, le signal couvre tout l’intervalle allant de -1 à 1, avec 2B valeurs différentes espacées de Q=2/2B, B bits sont utilisés. Second cas, si l’amplitude du signal reste dans l’intervalle allant de -0.5 à 0.5, il suffit de 2B-1 valeurs espacées du même pas Q= 2/2B, donc de B-1 bits pour coder x, et un bit est inutile. Cas général, soit xmax=max(abs(x)), c’est-à-dire le maximum en valeur absolue des échantillons xn, n=0 .. N-1 : S’il existe m tel que 2 -m-1 < xmax < 2 -m, alors m bits sont inutiles c’est : – (m+1)*ln(2)< ln(xmax)< -m*ln(2) soit : m < - ln(xmax) / ln(2) < m+1, d’où : m= partieEntière(-log2(xmax)) Bits utiles : u = B-m Taux de compression : C=B/u Page 7
Trouver les bits inutilisés dans les signaux suivants issus d’un banc de quatre filtres -0.8<s1<0.6 xmax= m= bits ? u = ? Y a t’il des bits inutiles dans les signaux suivants codés sur 8 bits issus d’un banc de filtres ? Quel est le taux de compression qui en résulte ? -0.25<s2<0.2 xmax= m = bits ? u= ? -0.10<s2<0.10 xmax= m= bits ? u= ? -0.03<s2<0.04 xmax= m= bits ? u= ? C= ?
Pour réduire le nombre de bits au-delà de u, il faut augmenter le pas et l’erreur de quantification • Le signal étant codé sur B bits dont m sont inutilisés, il est en définitive codé sur u=B-m bits, et prend 2B-m valeurs différentes espacées de Q=2/2B. • Si on réduit encore le nombre de bits utilisés à b < B-m, on dispose de 2b valeurs différentes pour coder l’intervalle allant de -2-m à 2-m. • Il faut donc augmenter le pas de quantification qui devient :Qprime=2*2-m/2b=2/2b+m • Si b < B-m, on a b+m < B et Qprime > Q • L’erreur de quantification augmente, le signal compressé est modifié • Le taux de compression est C= B/b