Úvod do metód spracovania zvuku v súčasnom multimediálnom prostredí

<< Späť - Časť 3.3: Princípy stratovej kompresie zvuku <<
^^ Hore - Kapitola 3: Digitálny svet zvuku ^^
>> Ďalej - Časť 3.5: Zvuk v súčasnom svete elektroniky >>

Časť 3.4: Princípy bezstratovej kompresie zvuku

Opodstatnenie kompresie zvuku je jasné: Zvukové dáta v PCM formáte zaberajú značné miesto, je preto namieste využiť ich vnútornú štruktúru, korelovanosť a pokúsiť sa zapísať ich efektívnejšie. (Rátame totiž s tým, že nejaká štruktúra vo väčšine zvukov existuje – ak nejde o šum, p. časť 2.3 Charakteristiky zvuku.) V časti 3.3 sme si predstavili postupy pri stratovej kompresii zvuku. Tie dosahujú značný kompresný pomer – typicky 1:10 a lepší. Teraz je namieste povedať, že výsledný kompresný pomer bezstratových kompresných formátov sa typicky pohybuje nad 1:2 (tzn. skomprimované dáta zaberajú viac ako polovicu objemu pôvodných dát). Navyše sa bezstratové algoritmy vyznačujú vysokou výpočtovou náročnosťou. Predsa však uchovávajú pôvodné zvukové dáta bez zmeny, čo je pri stratových formátoch nedosiahnuteľné.

Táto časť práce pozostáva zo štyroch odsekov. Najprv si predstavíme dva základné princípy, s ktorými sa pri návrhu algoritmov na bezstratovú kompresiu zvuku v praxi stretávame – 3.4.1 Bezstratové transformačné kódovanie a 3.4.2 Kódovanie lineárnou predikciou. V odseku 3.4.3 Hybridné a škálovateľné kódovanie si spomenieme ich modifikácie. Záver časti 3.4 tvorí odsek 3.4.4 Kompresia stereofonického záznamu.

Odsek 3.4.1: Bezstratové transformačné kódovanie

V časti 3.3 sme si predstavili metódy stratovej kompresie zvuku. Uviedli sme si, že môžu často dosiahnuť dobrý kompresný pomer pri zachovaní vysokej vernosti, inými slovami, snažia sa skomprimovať vstup tak, aby bol veľmi podobnýPozn. 1 pôvodným dátam. Ak teda existujú takéto úspešné algoritmy, zdá sa logické využiť ich ako základ bezstratovej kompresie zvuku. To, čo zostane, bude rozdiel medzi originálom a zvukom získaným po dekompresii dát zo stratovej kompresnej schémy – akási chybová zložka, zvyšok transmisie. Tento prístup rozvíja napr. LiebchenPozn. 2 a nazýva ho bezstratové transformačné kódovanie (nem. „verlustlose Transformacionscodierung“, angl. lossless transformation coding). Faktom je, že v praxi sa používa menej ako lineárna predikcia, ktorej sa venujeme v nasledujúcom odseku.

Pri bezstratovom transformačnom kódovaní sú zvukové dáta najprv stratovo skomprimované, tak spätne dekomprimované, aby sa vyjadril rozdiel, skreslenie oproti originálu. Tento zvyšok sa nazýva chybová zložka (kóduje sa presne, bez straty) a spolu s koeficientmi zo stratovej kompresie (ktoré sa kvantujú len s istou presnosťou) tvorí výstupný tok dát (samozrejme, po použití vhodných entropických kódov). Schéma vyzerá nasledovne (obr. 3.2):

Obr. 3.2 – Schéma bezstratového transformačného kódovania
Obr. 3.2 – Schéma bezstratového transformačného kódovania

Pozornosť treba venovať vlastnostiam stratovej kompresie. V prípade nízkeho zvoleného dátového toku jej výstupu vzniká signál veľmi odlišný od pôvodného signálu, teda chybová zložka dosahuje vysoké hodnoty (pričom tieto sú silne korelované). Výstupný tok dát tak potom tvorí najmä chybová zložka. Pri zvolení vysokej kvality stratovej kompresie sa výrazne potláča veľkosť (i korelovanosť) chýb, výstup však zaberá zvýšený výstupný dátový tok z algoritmu stratovej kompresie. Vhodným kvantovacím faktorom α (číslo, ktoré vyjadruje najmenšiu jednotku škály pri zaokrúhľovaní koeficientov, teda stratovej zložky tohto kódovania) možno docieliť optimum. Liebchen a kol.Pozn. 3 ukazujú, že najlepšie výsledky možno docieliť, ak 0<α≪1. Liebchen vo svojom algoritme LTACPozn. 4 používa α=0,25.

Bezstratové transformačné kódovanie našlo uplatnenie nie ani tak v samotnej bezstratovej kompresii zvuku, ale najmä v škálovateľných kompresných schémach – p. odsek 3.4.3 nižšie.


Poznámka 1: Samozrejme, ide o psychoakustickú vernosť (zhodnosť), ktorá nemusí byť dátovou zhodnosťou.

Poznámka 2: LIEBCHEN, Tilman. Realisierung einer verlustlosen Transformationscodierung zur Datenkompression von Mono- und Stereo-Audiosignalen. 1998.

Poznámka 3: LIEBCHEN, T., PURAT, M., Noll, P. Lossless Transform Coding of Audio Signals. 1997.

Poznámka 4: LTAC (Lossless Transform Audio Compression) je kodek vyvinutý Tilmanom Liebchenom z Technickej univerzity v Berlíne ako súčasť jeho diplomovej práce (LIEBCHEN, 1998). V praxi sa nedočkal veľkého úspechu, preto sa mu nebudeme ďalej venovať. Čitateľa odporúčame na stránky http://www.nue.tu-berlin.de/wer/liebchen/ltac.html.

Odsek 3.4.2: Kódovanie lineárnou predikciou

Vieme, že digitálny zápis zvuku vznikol pôvodne zo spojitého materiálu – analógového záznamu zvuku. Tento záznam je výsledkom skladania rôznych jednoduchých funkcií, zväčša tvaru sinusoidy (inými slovami, je súzvukom rôznych tónov, vlnení). Diskrétne ortogonálne transformácie sa snažia blok dát rozložiť na frekvenčné zložky, ale ponúka sa aj iná možnosť: na základe aktuálneho priebehu zvukovej „krivky“ (samozrejme, toto spojité chápanie zvuku sa kvantovaním zmenilo na diskrétne vyjadrenie, ktoré ho len aproximuje) predpovedať hodnotu ďalšej vzorky. Ilustrovať to možno na príklade (obr. 3.3). Ak majú namerané vzorky zvuku hodnoty 0, 5, 10, 14, 16, zo spojitosti pôvodného zvuku, z ktorého digitálny zápis vznikol, možno predpokladať, že hodnota ďalšej vzorky bude kdesi blízko čísla 17. Rozdiel oproti predpovedanej hodnote by potom bola jediná informácia, ktorú bude nutné preniesť. (Pravdepodobnosť priveľkej odchýlky od predpovedanej hodnoty je nízka – znamenalo by to, že v nahrávke sa náhle objavil zvuk s vysokou amplitúdou a širokým frekvenčným spektrom.)

Obr. 3.3 – Demonštrácia spojitého charakteru zvuku
Obr. 3.3 – Demonštrácia spojitého charakteru zvuku

V tomto odseku popisujeme metódy, ktoré sa snažia predpovedať hodnotu nasledujúcej vzorky na základe predošlých vzoriek, pričom pre zachovanie bezstratovosti kompresie prenášajú zvyšok, odchýlku od predpokladanej hodnoty, tzv. reziduál. Počet vzoriek použitých na predikciu budeme nazývať rád predikcie. V praxi sa na túto úlohu ukázali najvhodnejšie lineárne funkcie, preto spomenuté metódy nazývame kódovanie lineárnou predikciou (linear prediction coding, LPC). Lineárne funkcie síce presne nevyjadrujú skutočnú charakteristiku zvuku (ktoré je vlnením, sinusoidou), môžu ho však dostatočne aproximovať (podobne ako je sínus dobre aproximovaný Taylorovým polynómom zvoleného stupňa), navyše sú nenáročné na výpočet. Zavedenie silnejšieho aparátu by výrazne zvýšilo výpočtovú náročnosť za cenu len malej úspory v dátovom toku.

V každom kroku lineárnej predikcie teda vyberáme vhodnú funkciu (prediktor, napr. P) so želaným rádom predikcie (p). Prediktorom odhadneme hodnotu ďalšej vzorky ( Pi:=Pp(xi−1,xi−2,...,xip) ) a odpočítame ju od skutočnej hodnoty, aby sme získali reziduál (ri:=xiPi). Na spomenutom príklade získame napr. pre prediktor druhého rádu P2(xi−1,xi−2)=2xi−1−xi−2 ako výsledok hodnotu 18, čo sa zrejme nebude veľmi líšiť od skutočnej hodnoty. Štatisticky sú reziduály (pri voľbe vhodných prediktorov) nízke čísla, s hustým rozdelením okolo nuly – sú teda vhodnými kandidátmi pre entropické kódy.

Vo všeobecnosti možno prediktor P rádu p vyjadriť ako:.
P^p(x_i-1, x_i-2, ..., x_i-p)=Sum(j=1..p: a_j x_i-j)
kde a1,a2,...,ap sú koeficienty tohto prediktora. Zvolením vhodného rádu prediktora a jeho koeficientov možno zminimalizovať štandardnú odchýlku reziduálneho signálu (postupnosti reziduálov). Existujú rôzne algebraické optimalizačné metódy riešenia tohto problémuPozn. 1. (Na začiatku bloku je, samozrejme, nemožné hneď použiť prediktor rádu p. Prvých p vzoriek preto treba preniesť priamo, resp. možno aplikovať progresívnu predikciuPozn. 2, pri ktorej rád predikcie postupne rastie až k číslu p.) Tento postup – keď sa pre spracúvaný blok na základe jeho obsahu dopredu určia rád a koeficienty prediktora – sa nazýva dopredne adaptívna predikcia. Rozhodovanie je na strane kodéra, dekodér tak môže byť konštrukciou a výpočtovou zložitosťou omnoho jednoduchší.

(Poznámka: V prípade, že sa koeficienty určujú len na základe analýzy už spracovaného signálu – vzoriek, hovoríme o spätne adaptívnej predikcii. V tom prípade nie je potrebné prenášať informácie o koeficientoch, keďže sa tieto vypočítajú zhodne v algoritme kodéra i dekodéra. Navyše netreba dopredu poznať hodnoty vzoriek v celom spracúvanom bloku, ale signál možno spracúvať v reálnom čase, čo je mimoriadne výhodné napríklad v prípade kompresie hovoreného slova pri mobilných alebo internetových protokoloch na prenos hlasu. Nevýhodou je rovnako vysoká komplexnosť kodéra i dekodéra.)

Zvolením vhodnej veľkosti bloku a výberom vhodného prediktora (používajú sa aj tabuľky fixne daných prediktorov, aby sa nemuseli prenášať koeficienty, alebo VQ, alebo sa využije istá symetrickosť koeficientov a ich združovanie metódou LSP alebo parcorPozn. 3) teda možno kompresiu adaptívne prispôsobovať potrebám aktuálneho vstupu, za účelom dosiahnutia najvyššej kompresie. Súbežne možno použiť metódu adaptívnosti predikovateľnosti: určí sa faktor predikovateľnosti (pomer „spoliehania“ sa na predikciu) m (na začiatku napr. m=0,75), pričom nová predikovaná hodnota vzorky bude škálovaná medzi predošlou hodnotou vozrky a pôvodne predikovanou hodnotou vzorky (teda nová predikovaná hodnota vzorky sa vypočíta ako Pi:=m Pp(xi−1,xi−2,...,xi−p) + (1−m)xi−1). V prípade, že by menší faktor predikovateľnosti prispel k menšej chybe, v ďalšom kroku sa m môže zmenšiť (postup pri jeho úprave závisí od konkrétneho kompresného algoritmu).

V praxi sú reálne koeficienty prediktora pre svoj rozsah nevhodné na prenos, preto sa zaokrúhľujú a reziduálny signál sa počíta z takto kvantovaného prediktora.


Poznámka 1: V prípade lineárnej predikcie sa požíva najčastejšie Levinsonov-Durbinov algoritmus, ktorého časová zložitosť je O(p2). Nájde optimálne koeficienty prediktora, navyše poskytuje možnosť iteratívneho zvyšovania rádu. Presný postup možno nájsť napr. na http://www.data-compression.com/speech.html alebo http://en.wikipedia.org/wiki/Levinson-Durbin_algorithm.

Poznámka 2: Ako ju pre MPEG-4 ALS (p. časť 5.8, str. 128) navrhli MORIYA et al. Extended Linear Prediction Tools for Lossless Audio Coding. 2004.

Poznámka 3: Bližší popis LSP možno nájsť napr. na http://www.data-compression.com/speech.html. Parcor je metóda na zápis tzv. parcorových (z angl. partial correlation) alebo reflexných koeficientov – viac možno nájsť napr. na http://en.wikipedia.org/wiki/Levinson-Durbin_algorithm. LPC koeficienty, ich LSP zápis a reflexné koeficienty sú navzájom zameniteľné, každé majú svoje výhody a nevýhody.

Odsek 3.4.3: Hybridné a škálovateľné kódovanie

Na začiatku tejto časti práce sme si spomenuli nízku účinnosť bezstratových kompresných schém. Pre mnohých používateľov predstavuje veľkosť výsledných dát problém – chcú na svoje prenosné dátové médiá alebo prehrávače uložiť čím viac hudobných záznamov. Zároveň nechcú stratiť výhody bezstratovej kompresie zvuku – možnosť dokonalo rekonštruovať pôvodný záznam.

Prvým, triviálnym riešením je použiť dva rôzne formáty na dosiahnutie oboch cieľov. Tento prístup však v mnohých prípadoch nie je dostatočne pohodlný (dva súbory), alebo nie je vhodný vzhľadom na použitý dátový priestor (z dôvodu duplicity).

Druhou možnosťou je využiť tzv. hybridné kompresné schémy. Ich výstupom sú dva súbory. Prvý (menší) súbor poskytuje stratovú, no psychoakusticky dostačujúcu reprodukciu. Zväčša sa používa metóda LPC, teda súbor zahŕňa popis prediktora a kvantovaný (teda približný) reziduálny signál. Druhý (väčší) súbor neslúži na reprodukciu, ale na prípadnú bezstratovú rekonštrukciu pôvodného záznamu. Obsahuje chybovú zložku z kvantovania reziduálneho signálu pri tvorbe prvého súboru, preto z neho možno, v kombinácii s prvým súborom, pôvodný záznam dokonalo zrekonštruovať. Hybridné kódovanie je občas voliteľnou vlastnosťou niektorých bezstratových schém, napr. WavPack a OptimFROG.

Tretím riešením je tzv. škálovateľné kódovanie, pripomínajúce bezstratové transformačné kódovanie z odseku 3.4.1. Výsledok je bezstratovo uložený v jedinom súbore, no základ netvorí LPC, ale transformačná kódová schéma – tá je svojou konštrukciou vhodnejšia pre úspornú stratovú kompresiu. Zvyšok toku dát tvorí chybová zložka. Jej kódovanie je však akoby viacvrstvové – v toku dát je prítomných viacero hierarchicky usporiadaných tokov. Každý ďalší tok zvyšuje presnosť zápisu chybovej zložky. Použitie je jednoduché – stačí jeden súbor, z ktorého v prípade potreby možno (bez nutnosti dekompresie a opätovnej kompresie) vytvoriť súbor so zvoleným dátovým tokom. Táto možnosť je vhodná najmä pri prenášaní mediálneho obsahu internetom – dátový tok možno prispôsobovať vlastnostiam spojenia. Príkladom technológie, ktorá by škálovateľné kódovanie mala ponúknuť, je MPEG-4 SLS.

Odsek 3.4.4: Kompresia stereofonického záznamu

Ako v prípade stratovej kompresie zvuku, i pri bezstratových formátoch nesmieme zabudnúť na stereofonický záznam. Medzikanálovú koreláciu možno využiť viacerými spôsobmi, ktoré sa v prípade bezstratovej kompresie zvuku navzájom nevylučujú, ale dopĺňajú:


<< Späť - Časť 3.3: Princípy stratovej kompresie zvuku <<
^^ Hore - Kapitola 3: Digitálny svet zvuku ^^
>> Ďalej - Časť 3.5: Zvuk v súčasnom svete elektroniky >>

(c) 2006 Pavol Adam
kontakt
Powered by:
ATRIP software