Linux E X P R E S

Facebook

Hudební CD na minimum, 2. část

V minulé části jsme si řekli něco málo k teorii audio CD záznamu, technikách "ochrany" hudebních CD nosičů a dále jsme si ukázali použití grafického nástroje Grip pro účely ripování a enkódování audio disků. Dnes si blíže osvětlíme proces enkódování a podrobněji se seznámíme s konzolovými nástroji pro ripování a enkódování. Tomáš Hanusek .


Technika enkódování do MP3

Proces komprimace (enkódování) digitálního audia do formátu MP3 (MP3 = MPEG-1 Audio Layer 3) je ztrátovou kompresí originálu založenou na vlastnostech vnímání zvuku lidským uchem. Některé vjemové/zvukové informace, které jsou obsaženy v originálním zvuku, jsou při zpracování vynechány, neboť lidské ucho je není schopné vnímat, nebo jsou maskovány/překryty jinými zvuky v záznamu - mluvíme o perceptuálním enkódování.

Následně, po aplikaci příslušného perceptuálního/psychoakustického modelu, který hraje klíčovou roli pro výslednou kvalitu zvuku, nastupuje proces redukce duplicit (opakujících se dat) v záznamu, tzv. Huffman coding - nyní jde o bezeztrátovou kompresi, která v průměru dále snižuje objem dat o cca 20 %. Poté je ještě využita bitová banka/rezervoár vytvářený jako zásobník, kdy data ušetřená v klidnějších pasážích (opravdu by zde zbytečně docházelo k plýtvání daty) jsou využita v jiných místech záznamu. Tento postup je použit i při enkódování s fixním datovým tokem (CBR - Constant Bit Rate).

Jde o velmi zjednodušený popis celého procesu. Ten je specifikován normou ISO/IEC 11172. Konkrétní aplikace tohoto postupu pak najdeme v jednotlivých MP3 enkodérech/kodecích. Za všechny uveďme alespoň komerční kodeky Fraunhofer IIS (FhG MP3enc a starší FhG l3enc) či Xing MP3 encoder (nyní používán v Real Playeru), z free kodeků pak samozřejmě vynikající LAME či velmi rychlý BladeEnc (vývoj byl zastaven).

Vorbis a soubory .ogg

V poslední době se stále častěji můžete setkat se soubory zakončenými příponou ogg, mluví se o Vorbis či Ogg Vorbis. Na adrese www.xiph.org se dočteme o open-source komunitě Xiph.Org, která zaštiťuje např. svobodné kodeky Vorbis, Theora, FLAC či projekt Ogg.

Jak jistě víte, MP3 formát je patentovaný a jeho vlastník má právo vybírat poplatky za jeho použití v přehrávačích, kodecích a dokonce i samotných mp3 souborech. Naproti tomu zmíněné kodeky spadající pod Xiph.Org jsou vydávány se svobodnou licencí a s otevřeným kódem. Vorbis je psychoakustický/perceptuální (a tedy ztrátový) audio kodek, FLAC je pak bezeztrátový audio kodek, Theora představuje video kodek a Ogg je multimediální kontejner (nahrazující a v mnoha ohledech překonávající AVI, MOV či MPEG kontejnery).

Audio kodek Vorbis tedy představuje svobodnou konkurenci komerčnímu formátu MP3. Je však mnohem mladší a je vyvíjen s velkými vizemi do budoucna, s důrazem na vysokou flexibilitu. Dekódování Vorbis je oproti MP3 snazší (méně zatěžuje procesor), potřebuje však o něco více paměti; zvládá vzorkovací frekvence 8-192 kHz a širokou škálu kanálů (od monofonního, přes stereo, 5.1 až do 255 oddělených kanálů). Technika enkódování se logikou podobá MP3 (aplikace psychoakustického modelu, Huffman coding).

Vorbis je čistě metodou zpracování vstupního audia, nepředstavuje kompletní zvukový formát. Je koncipován jako plnokrevný VBR kodek a pro svůj přenos vyžaduje transportní mechanismus, který mu poskytne proměnlivou velikost datových bloků, synchronizaci, časování, korekci chyb - takovým je např. souborový kontejner Ogg či RTP pro přenos po síti.

Z mnoha výše uvedených důvodů je Vorbis schopen při stejné bitrate ve srovnání s MP3 poskytnout vyšší kvalitu enkódovaného záznamu. Jelikož však jde o opravdový VBR kodek, primárním parametrem pro nastavení výsledné kvality není bitrate, ale koeficient kvality (-1 až 10, kdy 3 představuje cca 110 kbps a odpovídá asi kvalitě MP3 128 kbit, 5 se rovná zhruba bitrate 160 kbps, 10 pak cca 400 kbps).

Je libo joint?

Joint Stereo (dále jen JS) představuje matematický postup pro dosažení vyšší kvality komprimovaného digitálního audia. Využívá se nejen v MP3 formátu, ale i v dalších "vrstvách" MPEG-1 audia, v AAC (Advanced Audio Coding) a jistou modifikaci obsahuje i projekt Ogg Vorbis ve svých "channel interleaving" a "lossless stereo image coupling".

JS je dokonce používáno i v rámci některých bezeztrátových technik pro kompresi audia - např. APE (Monkey's audio) či LPAC (Lossless Predictive Audio Compression), což samo o sobě stačí k vyvrácení mýtu, že JS znehodnocuje stereo záznam. Častou chybou je totiž záměna "opravdového" JS (Stereo mode 1) za Joint Stereo enkódování použité v případě MPEG-1 Layer 2, zde se jedná o něco jiného. Stereo, kdy jsou oba kanály kódovány nezávisle, se též označuje jako Stereo mode 0. Stereo mode 1 (jinak též JS) je technika enkódování stereo signálu, kdy jsou kódovány oba kanály společně, avšak při zachování stereo povahy zvuku - podle použitého algoritmu je též označováno jako MS Stereo (Middle/Side Stereo). Z hodnot obou kanálů je určena střední hodnota (Middle) a dále pak jejich odchylka (Side), jejímž přičtením, resp. odečtením od středu získáme levý, resp. pravý kanál. Stereo záznam tak není narušen. Velmi zjednodušeně řečeno.

Pro nízké bitrate (96 kbps a méně) bývá využívána technika Intensity Stereo, která spočívá v separátním enkódování pouze těch bitů, které jsou důležité pro pocitové vnímání nahrávky jako stereofonní. Tedy u vysokých a nízkých frekvencí, kdy lidské ucho je jen obtížně schopno vnímat směr zvuku, jsou levý a pravý kanál kombinovány dohromady. Zde pak již opravdu dochází k degradaci stereo signálu a odtud pochází nedůvěra v Joint Stereo, jež je vlastně označením pro dvě různé techniky.

Stereo mode 0 používá pouze striktně separátního/nezávislého enkódování obou kanálů. Takže ačkoli je v jednom kanále ticho, spotřebuje stejný objem dat. Naproti tomu Stereo mode 1 (JS) vychází z faktu, že ve většině audio záznamů si jsou levý a pravý kanál blízko, takže vypočtená odchylka (Side) je malá a k jejímu uložení je potřeba mnohem méně dat. Ušetřená data jsou pak použila k preciznějšímu popisu signálu při dané bitrate.

Pokud by signál v pravém a levém kanále byl identický (odchylka je nulová), potřebuje Stereo mode 1 zhruba poloviční objem dat oproti Stereo mode 0 při stejné úrovni komprese. Zdánlivě paradoxně je tak při dané bitrate při použití JS možno dosáhnout vyšší výsledné kvality než kdybychom použili odděleného sterea.

Ripování z příkazové řádky

A nyní se už dostáváme k samotnému procesu ripování. Pro tento účel jsem si jako mnozí ostatní vybral program cdparanoia (verze III alpha 9.8), který naleznete ve stejnojmenném balíčku.

Jedná se zřejmě o nejpoužívanější nástroj pro extrakci digitálního audia v systému Linux. Naprostá většina grafických ripovacích programů využívá jeho služeb. cdparanoia kromě běžné extrakce (DAE - Digital Audio Extraction) přidává ještě dodatečné algoritmy pro ověřování dat, synchronizaci, ošetření chyb a rekonstrukci škrábanců. Jak si později ukážeme, můžou být tyto mechanismy občas spíše na škodu.

Jiným konzolovým nástrojem pro digitální extrakci audio dat je např. cdda2wav, jež ve verzi 2.01 již také podporuje paranoia režim rozšířené korekce chyb; cdparanoia však vyniká širokou škálou podpory různých, i méně běžných CD-ROM jednotek. cdda2wav najdete ve stejnojmenném balíčku, popř. v cdrecord-cdda2wav.

Obrázek: Seznam skladeb na CD z freedb.org pomocí cdda2wav

Ještě než se pustíme do samotného ripování, můžeme využít služeb internetového svobodného databázového CD serveru freedb.org pro získání seznamů skladeb. K tomu využijeme nové schopnosti cdda2wav. Vložte audio CD do mechaniky a použijte příkaz cdda2wav -D /dev/cdrom1 -L 0 -J -v titles (/dev/cdrom1 u mne označuje druhou DVD-ROM mechaniku).

Z tabulky obsahu CD bude vypočten (téměř) unikátní kód disku a odeslán databázi k identifikaci. Pokud server nalezne shodný záznam, zašle zpět informace o názvu alba, interpretovi a seznam skladeb. Někdy je nalezeno více shodných záznamů, pak vám volba -L 0 umožní vybrat si ten správný - viz obrázek 1.

Někdy se naopak může stát, že není nalezen žádný odpovídající záznam. Pak můžete použít např. Grip, který umožňuje vámi zadané informace o CD předat freedb serveru k doplnění databáze (dočtete se o tom v 1. části článku v předchozím čísle).

Informace o CD zaslané freedb.org serverem uloží cdda2wav do pracovního adresáře jednak ve formě cddb záznamu (jeden soubor), dále v xml podobě (jeden soubor) také ve vlastním textovém formátu (jeden soubor na každou písničku/track).

Jestliže po zasunutí šuplíku CD-ROM mechaniky dochází k automatickému spuštění CD přehrávače (typicky v KDE či GNOME), a vám toto chování systému nevyhovuje, pak ho můžete trvale eliminovat vymazáním/přesunutím souboru audio_cd.script z adresáře /etc/dynamic/user-scripts/, případně dočasně zabitím procesů jako magicdev či gnome-volume-manager (používán i v KDE).

Nakonec, před samotným ripováním, se ještě ujistíme, že cdparanoia správně rozpozná obsah audio CD. K tomu použijeme příkaz cdparanoia -d /dev/hdd -Q -v (/dev/hdd je jen jiné označení pro mou druhou DVD-ROM mechaniku zapojenou jako secondary slave), který, jak vidno na obrázku obr. 2, nejprve detekuje CD-ROM jednotku, dále ověří její schopnost číst digitálně audio data a následně vypíše obsah CD disku (TOC - Table of contents).

Tady již můžeme narazit na první problémy, které mohou signalizovat jisté ochranné prvky proti kopírování audio CD disku. Některé příklady a jejich řešení si uvedeme později.

Obrázek:Obsah CD (TOC) a průběh ripování s cdparanoia

Základním příkazem pro ripování, se kterým si vystačíme ve většině případů, je cdparanoia -d /dev/hdd -B, kde přepínač -B zadává programu, aby každý track byl uložen do samostatného souboru; jinak by bylo celé CD uloženo do jediného souboru. Formát ukládaných souborů je standardně WAV/RIFF (cdparanoia zvládá také AIFF, AIFC, což jsou audio formáty platformy Macintosh, či RAW formát), ovlivnit lze i další parametry výstupu - těmito detaily se zde však nebudeme zabývat.

Jakmile cdparanoia začne ripovat, v konzoli se zobrazí grafický průběh, viz obr. 2. Kromě obvyklého zobrazení postupu procesu jsou podle kvality ripovaných dat zobrazovány různé smajlíky - jejich význam je podrobně popsán v manuálové stránce programu. Zároveň jsou do ukazatele průběhu vepisovány různé znaky v závislosti na kvalitě dat získaných z CD.

Ideální situace je v případě, že ukazatel průběhu zůstane "čistý", prázdný. Pokud se v něm objeví znaky -,+,e, pak cdparanoia narazila na chyby, ale opravila je. Znaky X,* indikují chyby, které bylo možno opravit interpolací (podobně jako to dělají stolní CD přehrávače) bez slyšitelných následků a ani tyto znaky vás tudíž nemusí znepokojovat.

Pokud se v průběhu ripování objeví znak !, jedná se již o chybu, která se nemění během opakovaného čtení a není ji tedy možno spolehlivě opravit - takovéto pasáže skladby již stojí za pozornost a vyplatí se poslechnout si je. Nejkritičtější je znak V, který signalizuje skok ve čtení (často vážné poškození média) - tato chyba již obvykle znamená nějaký slyšitelný defekt v nahrávce. Protože cdparanoia provádí několikanásobná opakovaná čtení stejných pasáží CD a mnoho ověřovacích a opravných výpočtů, znatelně zatěžuje systém (datovou sběrnici a procesor). Pokud se postup ripování kriticky zpomalí či téměř zastaví, je lepší ho přerušit pomocí [Ctrl+c] a zkusit kritickou skladbu naripovat bez korekčních algoritmů. K tomu slouží přepínač -Z.

Soubory jsou standardně ukládány pod názvem track01.cdda.wav, track02.cdda.wav atd. Jestliže chceme ripovat pouze vybrané skladby, použijeme syntaxi cdparanoia -d /dev/cdrom -B 3 pro ripování pouze třetí skladby. Pokud chcete naripovat pouze část skladby, použijte syntaxi cdparanoia -d /dev/cdrom -B 4[1:1]-4[2:2] pro zpracování 4. skladby v rozsahu 1 minuta 1 sekunda až 2 minuty 2 sekundy. Pro další možnosti viz manuálovou stránku programu.

Slovníček

Ripování (z angl. ripping) představuje proces získávání hudebních či obrazových dat z digitálního nosiče - tedy audio či video CD/DVD disku.

Enkódování označuje postup zpracování dat, která jsou transformována z jedné formy do jiné, např. převod hudebních dat ve formátu WAV do formátu MP3 či OGG, nebo obrazových dat formátu MPEG2 do formátu DivX atp.

Enkodér představuje nástroj (program či knihovnu) používaný k enkódování. Dekodér je pak software, který zpětně převádí (dešifruje/dekóduje) dříve enkódovaná data na výstupní zařízení. Kodek (z angl. CODEC - COder/DECoder) pak představuje knihovnu či program obsahující jak kodér tak dekodér.

Encoding bitrate (krátce jen bitrate) představuje datový tok, tedy objem dat, který je spotřebován na daný časový úsek záznamu. Udává se v kbit/sec (též kbps) - 1000 bitů za sekundu. Čím je tento datový tok vyšší, tím lepší je výsledná kvalita po komprimaci. Pro hudební formát MP3 se nejběžněji používá 128 kbit/sec. Náročnější posluchači však vyžadují 160 kbps popř. 192 kbit/sec. MP3 formát běžně podporuje 32-320 kbps.

Constant Bit Rate (CBR) je označení pro neměnný/fixní datový tok - na každou časovou jednotku/úsek záznamu je při enkódování použit stejný objem dat.

Naproti tomu v případě Variable Bit Rate (VBR) je velikost datového toku proměnlivá v závislosti na povaze záznamu - v nenáročných pasážích je datový tok nižší, u komplikovanějších je použit větší objem dat, aby byla udržena stejná, stanovená kvalita. Výsledná velikost enkódovaných dat se proto předem špatně stanovuje.

Average Bit Rate (ABR) představuje kombinaci obou přístupů, je však bližší CBR - zjednodušeně řečeno stanovený datový tok zde představuje průměr, kdy v náročných pasážích je použit vyšší datový tok, který se ušetřil v pasážích méně náročných v rámci celého záznamu. Tato metoda bývá někdy mylně označována jako VBR.

Bezeztrátová (lossless) komprese představuje proces snižování objemu dat, kdy z výsledného komprimovaného souboru lze data obnovit do přesné, původní podoby. Jako příklady nástrojů můžeme uvést ZIP, RAR, ARJ, ACE pro kompresi obecných dat, FLAC, LPAC, APE, AudioZip pro kompresi audio dat, PNG, JPEG-LS, TIFF, GIF pro statický obraz, HuffYUV, MSU pro video.

Ztrátová (lossy) komprese má vyšší účinnost (výsledná data mají mnohonásobně menší objem), avšak z komprimovaného souboru již nelze plně obnovit původní data. Tato komprese se tedy využívá jen u hudby, obrazu a videa a je založena na zachování pocitové/perceptuální věrnosti - vypuštěny jsou informace, které nejsou lidský sluch či zrak schopny vnímat.

Příklady aplikace ztrátové komprese jsou MP3, Vorbis, AAC, AC3, DTS, WMA pro audio data, JPEG, TIFF (má i lossless variantu) pro statický obraz, MPEG-2, MPEG-4, Motion JPEG, DivX, XviD, Theora pro video.

MPEG je zkratkou Motion Picture Expert Group. MPEG-1 je zvukový formát definovaný normou ISO/IEC 11172. MPEG-2 je obrazový formát definovaný normou ISO/IEC 13818. Pro MPEG-2 AAC viz ISO/IEC 13818.

Kontejner představuje specifické uspořádání multimediálního souboru, který v sobě nese obraz, zvuk, titulky a další informace a vlastnosti. Příklady takových kontejnerů jsou AVI, MPEG, MOV či OGG.

WAV (wave form audio) je formát uložení digitálních audio dat založený na RIFF specifikaci a vyvinutý ve spolupráci firem Microsoft a IBM. Formát svou úrovní kvality odpovídá CD (může však obsahovat i audio záznam nižší kvality). Podporuje různé kompresní algoritmy, nejběžnější je však PCM (Pulse Code Modulation) představující nekomprimovaný záznam zvukového vzorku.

RIFF je zkratka Resource Interchange File Format, což je specifikace uložení (nejen) multimediálních dat vyvinutý formou Microsoft. Na platformě Apple Macintosh se pak setkáváme s AIFF - Audio Interchange File Format.

Diskuze (3) Nahoru