Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Filmy a seriály, streamovací služby
Televize  |  Projektory
Audio a domácí kina
Multimediální centra  |  Ostatní
Svět hardware  |  Digimanie
Svět mobilně

Mezi tichem a šumem - komprese zvuku

10.9.2008, Radek Jahoda, článek
Zvuk byl v počátcích kinematografie i kvůli opojení z pohyblivých obrázků opomenut a až později nastalo nedílné spojení. Nejprve jako doprovod hudbou, pak i se synchronizací dialogů. My se přeneseme do doby, kdy nastala potřeba zvuk efektivně komprimovat.
Dostáváme se konečně k opravdovým zvukovým kompresorům, které nemají jako vstup noty, ale zdigitalizovaný reálný zvuk. Jsou často situace, kdy si nemůžeme dovolit zvuk nějak zhoršit a požadujeme stále plnou kvalitu. Typický příklad je další zpracování, mixování a mastering hudebních disků. Zde přichází na řadu komprese bezeztrátová. Pokud dekomprimujeme zkomprimovaný zvuk a porovnáme ho s originálem, dostaneme naprosto identickou kopii. Lze k tomu přistupovat stejně jako k jakýmkoliv jiným datům, protože o data jde.

Jednou z možností je použít libovolný pakovač dat, např. ZIP, RAR, JAR apod., ale zjistíme, že si se zvukem příliš neporadí, když dosahují velmi malé komprese - soubor je zmenšen o 5-10%. Novější verze RARu zavedly lepší kompresi pro multimediální soubory, takže dosahují zmenšení o 30-40%.

Kompresor zvuku ale nefunguje nad surovými daty, ale přistupuje k nim jako ke zvuku. Komprimuje každý kanál zvlášť na konkrétní kvantizaci, takže může aplikovat lepší metody komprese. Jsou na ně kladeny ale i další požadavky, které nemohou tradiční metody komprese dat poskytnout:
  • rychlost komprese - jelikož nekomprimovaný zvuk zabírá hodně místa, tak narážíme na limity přenosové rychlosti pevných disků. Komprese může rychlost ukládání dat dokonce zvýšit, jinak ale není až tolik zajímavé, protože se děje jen jednou.
  • kompresní poměr - jakékoliv snížení velikosti dat sníží nároky na velikost pevných disků, hlavní důvod ale bude při sdílení dat se spolupracovníky a posílání přes internet, čím menší soubor, tím rychleji se po internetu přenese
  • rychlost dekomprese - platí to samé co pro kompresi, ale nároky jsou vyšší, protože můžeme při mixování velkého množství souborů a přehrávání v reálném čase narážet na limity počítače
  • přenositelnost - nekomprimovaný zvuk se často používá mezi různými systémy, takže přenositelnost je velmi důležitá, ne-li nejdůležitější vlastnost

Jak toho všeho dosáhnout? Dnešní bezeztrátové kompresory fungují v podstatě stejně, liší se jen v aplikaci různých algoritmů. Jejich schéma je ale vždy následující:

1. Paketizace
Aby byla zajištěna dobrá editovatelnost a rychlý přístup ke všem částem zvukového souboru, je zvuk rozdělen na kratší časové úseky - pakety alias frames. Ty jsou na sobě nezávislé a jde s nimi pracovat samostatně. Je to obdobné, jako intraframe komprese u videa, kdy je každý snímek zpracován sám. Zde jde ale o časové úseky určité délky s určitým počtem vzorků. Časový úsek může být i různě dlouhý, toto se ale v podstatě nepoužívá. Nejlepší je rozdělení na co nejkratší úseky, ale poté se zase zhoršuje komprimovatelnost. Ke každému paketu je přidána hlavička, která pak říká i způsob komprimace, což je důležité pro dekodér. Způsob totiž může být u každého paketu jiný. Čím kratší budou časové úseky, tím více dat budou zabírat data hlavičky, takže je nutné najít určitý kompromis.

2. Dekorelace
Druhá fáze se snaží objevit v signálu opakující se signály a redundance. Ty lze poté lépe zakódovat a doplnit jen zbytek signálu. Často dochází u vícekanálového zvuku k odstranění mezikanálové redundance (shodnosti) mezi kanály. Například u stereo signálu se vytvoří mono signál a jeho rozdíl podobně jako u FM vysílání rádia, tedy (L+P)/2 a (L-P)/2. Ty se pak kódují zvlášť. Používají se dvě metody.
a) predikce
lineární prediktivní algoritmus se snaží popsat signál a určit parametry signálu. Zjednodušeně řečeno algoritmus popisuje vzorek X(n) podle předchozích vzorků X(n-1), X(n-2) atd. Používají se různé metody, například FIR nebo IIR prediktory. Dále se upravuje (zmenšuje ) kvantizace (počet potřebných bitů k reprezentaci parametrů), což snižuje datovou náročnost. Po popsání signálu se zjistí chyba oproti originálu E(n), což je neurčitý signál - entropie. Toto je nejpoužívanější algoritmus.
b) ztrátová komprese
druhá metoda je komprimace pomocí známého ztrátového algoritmu (jako MP3 apod.), poté zjištění rozdílu E(n) a jeho přidání ke komprimovanému signálu.

3. Kódování entropie
Dále dochází ke zkomprimování chyby od zakódovaného signálu. K tomu se používají běžné metody komprimace klasických dat jako u Zip apod. Nejčastější je:
a) Huffmanovo kódování
Všechny hodnoty se překódují na jiné s variabilní délkou, nejčastěji se vyskytující hodnoty se překódují na nejkratší, nejméně časté na nejdelší
b) RLE - Run Length Encoding
Vždy se kódují stejné hodnoty za sebou a jejich počet. Chyba může těchto shodných hodnot nabývat velmi často, takže jde v tomto případě o vhodné kódování
c) Riceovo kódování
Vychází z Golombova kódování, které je vhodné pro systémy, kde jsou nižší hodnoty pravděpodobnější než vyšší, což je právě případ kódování E(n). Volitelný parametr m rozdělí vstupní hodnotu na dvě části - výsledek po dělení číslem m a zbytek. Tyto dvě hodnoty jsou pak kódovány samostatně za sebou. Nejúčinnější a nejpoužívanější kódování u bezeztrátových kodeků.



V podstatě všechny známé kodeky používají kombinaci zmíněných metod. Plyne z něj, že výsledek bude mít různou velikost podle druhu vstupního signálu. Nejde tedy o kódování s konstantním datovým tokem (CBR - constant bitrate), ale s variabilním datovým tokem (VBR). Nejde ani přesně odhadnout, jaká bude úspěšnost komprese. Značně záleží na druhu signálu. Dnešní hudební soubory mají úspěšnost velmi malou - komprese dosahuje kolem 50%. Lepší je to například u hudby z dechových a "foukacích" nástrojů, kde se můžeme dostat až k 60-70 %. Čím více nástrojů je pak obsaženo ve zvuku, tím horší je komprimovatelnost.


Opět si vyjmenujme nejpoužívanější kodeky, ne vždy jsou ale přesné metody známy:

FLAC
Asi nejpoužívanější kodek s open source implementací a širokou podporou. Odstraňuje mezikanálovou redundanci, používá lineární prediktivní algoritmus a Riceovo kódování entropie.

Monkey audio
Rovněž velmi rozšířený kodek, používající stejné metody jako FLAC, pouze implementace je mírně rozdílná - odstraňuje mezikanálovou redundanci, používá IIR lineární prediktivní algoritmus a Riceovo kódování.

Meridian
Nejde o kodek, ale algoritmus kódování, který je licencován třetím stranám. Našel uplatnění například na DVD-Audio nebo je součástí Dolby TrueHD. Používá matrixové (pro vícekanálový zvuk) odstranění mezikanálové redundance, prediktivní algoritmus s několika možnými filtry (převážně IIR) a Huffmanovo nebo Riceovo kódování entropie.

Shorten
Starý a v minulosti velmi oblíbený kodek, používá FIR prediktor a Riceovo kódování.

WavPack
Již poměrně starý kodek, který umožňuje i hybridní kódování - ztrátové v jednom souboru a dodatkové kódování entropie ve druhém souboru. Používá lineární predikci a Golombovo kódování.

Apple Lossless (ALAC)
Bezeztrátové kódování od Apple pro jeho iTunes a přehrávač iPod. Používá rovněž lineární prediktivní algoritmus a Riceovo kódování.

OggSquish
Projekt z rodiny Ogg, ale ne příliš rozšířen. Používá IIR prediktivní algoritmus a Huffmanovo kódování.

Sonarc
Již hodně starý algoritmus z dob DOSu. Používá FIR prediktor a Huffmanovo kódování.

WMA9 Lossless
Bezeztrátový kodek od Microsoftu, algoritmus neznámý.

ATRAC Advanced Lossless
Formát Sony, který komprimuje zvuk pomocí ATRAC3 ztrátového kodeku a přidává rozdílovu složku vůči originálu.



Z uvedeného je zřejmé, že všechny kodeky používají podobné metody, a tak je jejich účinnost velmi podobná. Při stejném vstupu tak dosahují podobných výsledků, rozdíly ale samozřejmě existují, jak v účinnosti algoritmů, tak v jejich optimalizaci a tedy rychlosti. Další rozdíly jsou ve výsledných datových tocích, tedy formátech uložení dat. Ty jsou samozřejmě mezi jednotlivými kodeky rozdílné a nejsou kompatibilní, přestože používají podobné algoritmy.

Všechny uvedené algoritmy jsou samozřejmě náročné na výpočetní výkon, takže k jejich rozvoji došlo hlavně v posledních letech, kdy to technika dovoluje. Stávají se také čím dál více oblíbené na nových vysokokapacitních datových médiích, kde nevadí menší komprese. Příkladem jsou například DVD-Audio nebo Blu-ray disky.