Audiotechnik II Digitale Audiotechnik: 8. Übung Prof. Dr. Stefan Weinzierl 11.12.2014 Musterlösung: 11. Dezember 2014, 10:43 Informationstheorie und Entropiekodierung Bei der Entropiekodierung werden die Kodewortlängen in Abhängigkeit der Auftrittswahrscheinlichkeit der Quellenzeichen variiert, wobei Redundanzen im Signal ausgenutzt werden. Die mittlere Kodewortlänge sollte dabei im Idealfall der Entropie entsprechen, so dass die Redundanz verschwindet. a) Erläutern Sie die der Entropiekodierung zugrunde liegenden Begrie des Informationsgehaltes, der Entropie, der mittleren Kodewortlänge und der Redundanz im Sinne der Informationstheorie. Geben Sie jeweils die Berechnungsvorschrift an. Der Informationsgehalt I i ist ein Maÿ für die Unbestimmtheit eines Ereignisses bzw. Zeichens. Je kleiner die Wahrscheinlichkeit eines Zeichens (Audio: Amplitude), desto gröÿer ist I i. I i = log 2 (p i ) [bit/zeichen] mit p i = Auftrittswahrscheinlichkeit eines Zeichen Die Entropie H m ist der mittlere Informationsgehalt einer Quelle (Audio: Signal) und gibt die minimale Anzahl Bits je Symbol an, mit der die Quelle eindeutig kodiert werden kann. Sie ist maximal, wenn die Auftrittswahrscheinlichkeiten aller Amplituden gleich sind (z.b. weiÿes Rauschen) und minimal (= 0), wenn es nur eine Amplitude (Gleichspannung) mit der Wahrscheinlichkeit 1 gibt. H m = I i p i [bit/zeichen] Die mittlere Kodewortlänge l m ergibt sich aus den einzelnen Kodewortlängen sowie ihren Auftrittswahrscheinlichkeiten: l m = l i p i [bit/zeichen] Im Falle einer 16-bit-Kodierung eines Audiosignals im Zweier-Komplement wäre l m = 16 bit/zeichen, da jedes Kodewort die selbe Länge hat und sich die Auftrittswahrscheinlichkeiten zu 1 summieren. Die Redundanz ist durch die Dierenz von mittlerer Kodewortlänge und Entropie gegeben R = l m H m [bit/zeichen]. b) Lesen Sie die Audiodatei music.wav in Matlab ein, und requantisieren Sie das Signal auf eine Wortbreite von w = 3 bit. Benutzen Sie dafür eine mid-tread-kennlinie. Wandeln Sie das Stereosignal als erstes in ein Monosignal um, dessen Amplituden aus dem momentanen Mittelwert der Amplituden der beiden Stereokanäle bestehen. 1
%% b) y = mean( wavread('music.wav'), 2 ); % Quantisierung mit Funktion aus Tutorium 4 w = 3; [y, ~, codebook, ~ ] = xquant(y, w, 'mid-tread', 'none'); c) Wie sind die Auftrittswahrscheinlichkeiten der 2 w Kodewörter im Quellkode? %% c) % Zaehle die Haeufigkeit der Amplituden je Quantisierungsstufe hf = hist(y,codebook); % Kodewortwahrscheinlichkeiten p_i p_i = hf/sum(hf) % Kontrolle: (Summe der p_i muss 1 ergeben) W_ges = sum(p_i) hist(y,codebook) set(gca, 'xtick', codebook, 'xticklabel', -4:3) Die 2 3 = 8 Kodewörter und ihre gemessenen Auftrittswahrscheinlichkeiten: Quellzeichen x 4 x 3 x 2 x 1 x 0 x 1 x 2 x 3 p i 0.0001 0.0029 0.0132 0.0934 0.7643 0.1149 0.009 0.0022 2.5 x 105 2 1.5 1 0.5 0 4 3 2 1 2 3 Abbildung 1: Absolute Häugkeiten der Amplitudenstufen d) Wie groÿ ist die Quellenentropie in bit/quellenzeichen? 2
I i = ld 1 p i H m = p i I i = 1.1632 bit/zeichen %% d) % Bestimme den Informationsgehalt je Zeichen I_i I_i = -log2(p_i); % danach die Entropie H_m: H_m = sum(p_i.*i_i) e) Konstruieren Sie manuell für diese Quelle den Optimalkode nach dem Human-Verfahren. Eigenschaften von Human-Kodes: - Je gröÿer die Auftrittswahrscheinlichkeit eines Kodewortes, desto kürzer ist seine Länge l i. - Präxeigenschaft: Es beginnt kein Kodewort mit der Bitfolge eines anderen, kürzeren Kodewortes. - Redundanz, nur dann optimal (= 0), wenn p i = 2 n 3
1,000 0,2357 0,7643 0,1149 0,1208 0,0274 0,0934 0,0132 0,0142 0,0052 0,009 0,0023 0,0029 0,0001 0,0022 Quellzeichen x 4 x 3 x 2 x 1 x 0 x 1 x 2 x 3 p i 0.0001 0.0029 0.0132 0.0934 0.7643 0.1149 0.009 0.0022 Kodewort 0101000 010101 0100 011 1 00 01011 0101001 Hinweis: Eine anschauliche Anleitung für die Erstellung eines Humann-Kodes nden Sie z.b. hier: http: // www. iti. fh-flensburg. de/ lang/ algorithmen/ code/ huffman/ huffman. htm f) Welche mittlere Kodewortlänge ergibt sich aus dem erstellten Kode? Vergleichen Sie die Koderedundanz des Human-Kodes mit der eines Kodes mit einer festen Länge von 3 bits ( gleichmäÿiger Kode). Die mittlere Kodewortlänge berechnet sich aus Kodewortlänge und Auftrittswahrscheinlichkeit der Kodewörter. l m = p i l i = 1.4056 bit/zeichen 4
%% f) % mittele Kodewortlaenge des Huffman-Kodes: % x_-4... x_3 l_i = [ 7 6 4 3 1 2 5 7 ]; l_m = sum(p_i.*l_i) Als Redundanz bezeichnet man die Dierenz zwischen der mittleren Kodewortlänge und der Entropie. Koderedundanz des Human-Kodes R k, Huffman = l m H m = 1.4056 1.1632 = 0.2424 bit/zeichen Koderedundanz des Kodes konstanter Länge R k, 3 bit = l m H m = 3 1.1632 = 1.8368 bit/zeichen g) Wie groÿ ist der auf diese Weise erzielte Kompressionsfaktor, d.h. um welchen Faktor ist die mittlere Kodewortlänge des Human-Kodes geringer als die des ursprünglichen Quellkodes? c = l 3 bit = 3 l Huffman 1.4056 = 2.13 5