Cs.Kádár Péter - XXI. századi Diszkónika, 96. Mire jó a narancs?

Veszteségmentes az a tömörítés, amikor a tömörítvényből az eredeti jel tökéletesen visszaállítható. Eredeti jelnek a digitális technikában a PCM jelet tekintjük. Ezt a jelet digitalizálással állítjuk elő az analóg jelből, az analóg jel sávhatárolása, az abból vett minták, a minták tartása, kvantálása és kódolása segítségével.

mj02

Jó, jó, ezt már tudod, meg még azt is, hogy a mintavételi frekvenciának több, mint kétszeresének kell lennie a rögzítendő vagy átvinni kívánt jel legnagyobb frekvenciájánál.

mj03

Veszteséges viszont az a tömörítés, amikor a tömörítvényből az eredeti jel már csak kisebb-nagyobb hibával állítható vissza. Valójában ilyenkor a tömörítvényből egyszerűen elhagyunk információkat, amelyeket nem tartunk fontosnak. Aztán vagy észrevesszük a hiányt vagy nem. Ha úgy érezzük, hogy csak majdnem olyan lett, mint az eredeti, akkor észrevettük.

Akkor most narancslevet készítünk. Íme, a narancs.

mj04

Félbevágjuk.

mj05

Kifacsarjuk.

Az igazi narancslé finom.

Az igazi narancslé narancssárga (szín), narancsízű (rostos anyagok, ásványok, stb.) nedves (víz).

Ha kivonjuk belőle az összes tiszta vizet (H2O), száraz port kapunk, amely narancssárga és narancsízű. A kivont víz mennyiségét nagyon pontosan meg kell mérni! A por sokkal kisebb helyet foglal el, mint a narancslé. Könnyebben tárolható és szállítható. Ha a porhoz pontosan ugyanannyi vizet adunk, mint amennyit kivontunk belőle, visszakapjuk az igazi, eredeti narancslevet. Ez a veszteségmentes tömörítés.

A porból a színt adó anyagok egy részét is kivonhatjuk.

mj06

A különbséget amúgy sem látja senki. Aha… Fokozhatjuk a kivonást. Ha nem ismerjük az eredetit, az az érzésünk, hogy ugyanolyan. Nem is kell visszaállítani. Ez a veszteséges tömörítés.

mj07

Esetleg valami mesterséges színezéket belenyomhatunk majd, hogy ne legyen olyan feltűnő.

mj08

Hogy igazibb íze legyen, még aromát is tehetünk hozzá. Sőt, tulajdonképpen nincs is szükség narancsra ahhoz, hogy narancslét kapjunk. Ez a szintetizálás.

mj09

A hangtechnikában ugyanígy tömörítünk veszteségmentesen és veszteségesen is. A PCM kódolás ugyan egyszerű, de rendkívül pazarló. Ha pl. 16 bites a rendszer, minden minta 16 karakterből (0-ból és 1-ből) áll, és kisebb jelek esetén a szó elején feleslegesen sok a nulla. Ezeket pl. el lehetne hagyni. A sztereó jelben számos olyan összetevő van, amely mindkét csatornában azonos. Ezeket is össze lehetne vonni. A minél jobb tömörítés érdekében többféle kódolást használunk egy-egy eljárás során.

A Huffman-kódolás a morzejelhez hasonlóan statisztikai módszert alkalmaz. A kódszavakhoz táblázatokat rendel. A táblázatbeli kód hosszúsága attól függ, milyen gyakori az eredeti kódszó előfordulása. Így az állandó hosszúságú kódszavakat változó hosszúságú kódszavakká alakítja át.

A futamhossz kódolás olyan, mint amit az ősembernél láttunk: az adatban található, hosszasan ismétlődő karaktereket egyetlen értékként és számként tárolják, az eredeti teljes karaktersorozat helyett.

A delta-kódoláskor nem az egyes adatok tényleges értékét, hanem az egymást követő értékek közti különbséget rögzítjük vagy továbbítjuk. Az aktuális kód értékét a pillanatnyi és az eggyel korábbi minta különbségéből számítja ki a program.

Ezzel szemben a prediktív kódolás a jósnő esete.

mj10

A program az előző néhány mintából megpróbálja kitalálni, hogy mi lesz a következő minta. Képzeld, az agyunk is így műxik. Ha már azt hisszük, ismerünk valamit vagy valakit, megpróbálja az agyunk kitalálni, hogy a valami másik példánya milyen lesz, vagy, hogy az ismerősünk mit fog művelni. Ha sikerül, akkor keveset kellett számolnia, ha nem sikerül, akkor igencsak dolgozik az agyunk.

A prediktív kódoló is összehasonlítja a jósolt és a tényleges jelet, és ha a kettő eltér egymástól, egy hibajelet is előállít. A hibajelek összességét reziduális jelnek hívják. Ezt aztán lehet továbbtömöríteni, mert igencsak redundáns. Dekódoláskor a kódolt jelhez hozzá kell adni a reziduális jelet, ha veszteségmentes tömörítést akarunk.

mj11
Az alsáv kódolás során a hangfrekvenciás tartományt sávokra bontjuk, és az egyes sávok tartalmának megfelelően választjuk meg a sávban alkalmazott kódszavak hosszát. Pl. az alapharmonikusok szintje magasabb, mint a felharmonikusoké, ezért a felharmonikusok tartománya rövidebb kódszavakkal is kódolható. A sávok a pszichoakusztikában már megismert kritikus sávok is lehetnek.

Az alsáv kódolás már transzform kódolás. A transzform kódoláskor az időtartományból a frekvenciatartományba váltunk, pl. így lehet sok alsávot kialakítani. A frekvenciatartományban sok frekvenciának 0 az értéke (nem minden frekvencián van rezgés), ezeket nem kell kódolni. A kitartott (nem tranziens) jelek spektruma lényegesen lassabban változik, mint az időfüggvény, tehát kevesebb adat kell a jellemzéséhez. Ezzel szemben azokat a jeleket, amelyeknek sok frekvencia összetevőjük van – pl. zajok vagy tranziensek – az időtartományban kódoljuk.

Most fogsz agyfrászt kapni!

A transzform kódoláshoz ugyanis kétfajta eljárást használhatunk. Mindkettőnek az a lényege, hogy a periodikus jelek fölbonthatók az összetevőikre. Ez sem újdonság, ezt hívják Fourier analízisnek. Ha ezt gyorsan csináljuk, akkor gyors Fourier transzformációról (FFT) beszélünk. Na, eddig könnyű volt. Az FFT azonban nagyon bonyolultan működik, legalábbis ahhoz képest, hogy mi mindent kell még csinálni – matematikailag nem túl szerencsés a cucc. Fontos azonban, hogy mivel a digitális jelek nem folytonos, hanem diszkrét jelek, így az FFT is diszkrét jeleket böffent ki magából.

A számítógépek szempontjából sokkal kedvezőbb a diszkrét koszinusz transzformáció, és ennek módosítását, az MDCT-t használják a legtöbb tömörítő eljárásban. Elég annyit tudni róla, hogy gyorsabb és könnyebben megvalósítható, mint az FFT.

Végül a leggyakoribb adattömörítések közé tartozik a spektrális sávismétlés is. Ennek során egy aluláteresztő szűrővel kiszűrjük a felhang tartományt, és csak az alaphang tartományt kódoljuk valamelyik, már ismert eljárással. Megadjuk továbbá az egyes felhangok arányát is az alaphanghoz képest.

Ezekkel a módszerekkel elvileg tudunk veszteségmentes tömörítést elérni, pusztán fizikai jellemzők alapján. Valójában sosem sikerül teljesen visszaállítani a PCM jelet, mert a valódi tömörítők sosem tökéletesek. A veszteségmentes tömörítési eljárások tömörítési aránya azonban alacsony, legfeljebb 50% érhető el.

A hangtechnikában legismertebb és igen jó minőségű veszteségmentes tömörítés a flac.

mj12

Az angol nyelvben a vesztésmentességet losslessnek mondják. A flac tehát szabad – vagyis ingyenes, megismerhető, nyílt forráskódú hangtömörítő eljárás.

mj13

Az egyre népszerűbb formátumból az ncore-n-is nagyon sok filé található.

mj14

A legutóbbi mondat és a kép törölve, mit is beszélek…

PCM jelből – wavból – te is könnyedén készíthetsz flac-et, például az Audacityvel. Ehhez azonban egy kodek, az ffmpeg kell. Tapasztalataim szerint ez a cucc valahogy minden gépre rámászik véletlenül, de ha nálad még sincs, nyelvtudás nélkül is megérthető a telepítése az alábbi videóból.

Ha már telepítetted az ffmpeget, a filé konvertálásához ki kell választanod a flac-et a „Fájl – Hang exportálása…” menüből.

mj15

Be kell állítanod a felbontást 16 vagy 24 bit/s-ra, és a minőséget 0 és 8 között. A 0 a leggyengébb és a leggyorsabb, alapállapotban 5 az értéke. Játssz vele kedvedre!