´ ´I ZVUKOVY ´ KODER ´ EXPERIMENTALN F. Rund, J. Nov´ aˇcek ˇ Katedra radioelektroniky K13137, FEL CVUT Praha Abstrakt Vˇ sechny dnes ˇ siroce rozˇ s´ıˇ ren´ e syst´ emy pro kompresi zvuku vych´ azej´ı ze stejn´ ych psychoakustick´ ych princip˚ u a vyuˇ z´ıvaj´ı velmi podobnou vnitˇ rn´ı blokovou strukturu. To n´ am umoˇ zn ˇ uje vytvoˇ ren´ı jedin´ eho modul´ arn´ıho syst´ emu, kter´ y bude m´ıt definov´ an pouze form´ at dat vstupuj´ıc´ıch, respektive vystupuj´ıc´ıch z jednotliv´ ych syst´ emov´ ych blok˚ u. Vnitˇ rn´ı struktura dan´ eho bloku nen´ı pˇ r´ımo definov´ ana a z´ avis´ı pouze na realizovan´ em kompresn´ım algoritmu.
1
´ Uvod
V dneˇsn´ı dobˇe je komprese zvuku velmi aktu´aln´ım probl´emem. Pˇres neust´ ale se zvˇetˇsuj´ıc´ı kapacitu z´aznamov´ ych m´edi´ı je kladen velik´ y d˚ uraz na sniˇzov´an´ı objemu dat potˇrebn´ ych pro zak´ odov´an´ı dan´e informace. Tento trend postihl i oblast z´aznamu a pˇrenosu ˇsirokop´ asmov´ ych zvukov´ ych sign´al˚ u. Od vzniku dnes bezpochyby nejrozˇs´ıˇrenˇejˇs´ıho standardu pro kompresi zvuku MP3 (MPEG 1 Layer III) zaˇc´atkem 90. let 20. stolet´ı se objevilo mnoho dalˇs´ıch, kter´e v´ıce ˇci m´enˇe na tento form´ at navazuj´ı. Tento ˇcl´ anek popisuje univerz´ aln´ı modul´ arn´ı syst´em, pomoc´ı kter´eho je moˇzn´e porovn´avat a kvalitativnˇe hodnotit jednotliv´e kompresn´ı algoritmy z hlediska vn´ım´an´ı zvuku lidsk´ ym sluchem. Navrˇzen´ y syst´em umoˇzn ˇuje nejen implementaci, studium a hodnocen´ı st´avaj´ıc´ıch syst´em˚ u (napˇr´ıklad kodeky z rodiny MPEG, kodek Ogg Vorbis nebo kodeky ATRAC), ale tak´e implementaci nov´ ych algoritm˚ u pro kompresi zvukov´ ych sign´al˚ u zaloˇzen´ ych na nov´ ych poznatc´ıch z oblasti lidsk´eho slyˇsen´ı.
2
Univerz´ aln´ı modul´ arn´ı syst´ em
V´ ychoz´ı myˇslenkou cel´eho n´avrhu je fakt, ˇze velk´a vˇetˇsina syst´em˚ u pro kompresi zvukov´ ych sign´al˚ u vych´az´ı ze stejn´ ych psychoakustick´ ych princip˚ u a proto vyuˇz´ıvaj´ı velmi podobn´ ych vnitˇrn´ıch struktur (viz napˇr. [1], [2], aj.) Na z´akladˇe anal´ yzy tˇechto syst´em˚ u jsme navrhli blokov´e sch´ema podle obr. 1. Toto blokov´e sch´ema bylo navrˇzeno tak, aby bylo maxim´ alnˇe univerz´ aln´ı a umoˇzn ˇovalo implementaci co nejvyˇsˇs´ıho poˇctu kompresn´ıch algoritm˚ u. Jedn´ım z hlavn´ıch c´ıl˚ u navrˇzen´eho univerz´ aln´ıho syst´emu je moˇznost porovn´an´ı algoritm˚ u jednak jako celku, ale zejm´ena tak´e porovn´av´an´ı a pˇr´ıpadn´ a kombinace jednotliv´ ych blok˚ u napˇr´ıˇc spektrem kompresn´ıch algoritm˚ u. V dalˇs´ıch kapitol´ ach n´asleduje popis jednotliv´ ych blok˚ u navrˇzen´eho syst´emu. O kaˇzd´em bloku je nejprve pojedn´ ano obecnˇe, pot´e je pops´ ana funkce deklaruj´ıc´ı dan´ y blok. N´ azvy funkc´ı jsou pro pˇrehlednost zapoˇcaty velik´ ym p´ısmenem K, n´asleduje kl´ıˇcov´e slovo charakterizuj´ıc´ı dan´ y syst´emov´ y blok. N´ azev deklaraˇcn´ı funkce konˇc´ı velik´ ym p´ısmenem X, kter´e je pˇri implementaci nahrazeno kl´ıˇcov´ ym slovem charakterizuj´ıc´ım implementovan´ y kompresn´ı algoritmus. Deklarace funkce je provedena pomoc´ı syntaxe programu Matlab. V popisu kaˇzd´e funkce jsou rozebr´ any vˇsechny vstupn´ı a v´ ystupn´ı parametry.
2.1
Pˇ redzpracov´ an´ı
Blok nazvan´ y Pˇredzpracov´ an´ı je voliteln´ ym blokem. Do syst´emu byl vloˇzen pro zv´ yˇsen´ı jeho ˇ univerz´ alnosti. Nˇekter´e kompresn´ı algoritmy totiˇz pˇred Casovˇe-frekvenˇcn´ı anal´yzou prov´adˇej´ı
Vstupn´ı data
ˇ Casovˇ ePˇ redzpracov´ an´ı
frekvenˇ cn´ı
Voliteln´ y
anal´ yza
blok
Kvantiz´ er Alokace bit˚ u
Voliteln´ y entropick´ y kod´ er
Psychoakustick´ y model Sbˇ er vedlejˇ s´ıch a pomocn´ ych informac´ı
Form´ atov´ an´ı v´ ystupn´ıho datov´ eho toku
V´ ystup Obr´azek 1: Blokov´e sch´ema popisovan´eho experiment´aln´ıho zvukov´eho kod´eru. u ´pravu vstupn´ıho sign´alu. Z hlediska kompatibility by se mˇel form´ at vstupuj´ıc´ıch i vystupuj´ıc´ıch dat shodovat. Blok je implementov´an ve formˇe funkce function [vystup_data, info_pre] = KpreprocX(vstup_data) , ystupn´ıch dat a pomoc´ı info pre kde vstup data je vektor vstupn´ıch dat, vystup data vektor v´ funkce pˇred´ av´a parametry bloku Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı.
2.2
ˇ Casovˇ e-frekvenˇ cn´ı anal´ yza
ˇ Blok nazvan´ y Casovˇ e-frekvenˇcn´ı anal´yza pˇredstavuje transformaci vstupn´ıho sign´alu do formy vhodn´e pro n´aslednou kompresi. V nejjednoduˇsˇs´ı formˇe se m˚ uˇze jednat napˇr´ıklad o banku filtr˚ u (napˇr´ıklad MPEG 1, vrstva 1 a 2), u pokroˇcilejˇs´ıch algoritm˚ u se m˚ uˇze jednat tˇreba o transformaci DCT (napˇr´ıklad MPEG 1, vrstva 3) a podobnˇe. Deklarace funkce: function [vystup_data,popis_data,info_tf,varargout] = KtimefreqX(vstup_data) , ystupn´ıch dat, vektor popis data kde vstup data je vektor vstupn´ıch dat, vystup data vektor v´ popisuje strukturu vektoru v´ ystupn´ıch dat a pomoc´ı info tf funkce pˇred´ av´a parametry bloku Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı. Posledn´ı v´ ystupn´ı parametr varargout (variabiln´ı poˇcet dalˇs´ıch v´ ystupn´ıch argument˚ u) je pˇrid´ an pro zv´ yˇsen´ı univerz´ alnosti syst´emu. Pomoc´ı tohoto parametru se pˇren´ aˇsej´ı informace specifick´e pro nˇekter´e pokroˇcil´e kompresn´ı algoritmy.
2.3
Psychoakustick´ y model
´ Ukolem Psychoakustick´eho modelu je analyzovat vstupn´ı sign´al z hlediska jeho vn´ım´an´ı lidsk´ ym sluchem. V´ ystupem psychoakustick´eho modelu je vˇzdy prahov´a (maskovac´ı) kˇrivka. Zvuky leˇz´ıc´ı pod touto kˇrivkou nejsou lidsk´ ym sluchem vn´ım´any, z tohoto pohledu nenesou ˇz´adnou uˇziteˇcnou ´ informaci. Ukolem dalˇs´ıch syst´emov´ ych blok˚ u je nadbyteˇcnou informaci zanedbat a d´ale pˇren´ aˇset
pouze u ´daje popisuj´ıc´ı sloˇzky sign´alu leˇz´ıc´ı nad prahovou kˇrivkou. Deklarace funkce: function [prah_f, prah_spl, info_pm, varargout] = KpsychomodX(vstup_data) , ystupn´ı prahovou kde vstup data je vektor vstupn´ıch dat, vektory prah f a prah spl popisuj´ı v´ kˇrivku. Oba vektory maj´ı stejnou velikost, prvn´ı z parametr˚ u ud´av´a frekvence, pro kter´e je vypoˇc´ıt´ ana prahov´a kˇrivka, druh´ y pak ud´av´a vypoˇc´ıtanou hladinu akustick´eho tlaku (SPL) pro danou frekvenci. Pomoc´ı info pm m˚ uˇze funkce pˇred´ avat parametry bloku Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı. Tento parametr se spolu s posledn´ım v´ ystupn´ım parametrem varargout v souˇcasnosti nevyuˇz´ıvaj´ı, oba byly pˇrid´ any pro budouc´ı kompatibilitu.
2.4
Alokace bit˚ u a Kvantiz´ er
Bloky Alokace bit˚ u a Kvantiz´er se v literatuˇre v z´avislosti na autorovi sluˇcuj´ı ˇci rozdˇeluj´ı. Alokace bit˚ u a kvantiz´er spolu kaˇzdop´adnˇe u ´zce souvis´ı. Blok Alokace bit˚ u m´ a za u ´kol podle v´ ystupu psychoakustick´eho modelu navrhnout pouˇzitou kvantizaci. Pro algoritmy vyuˇz´ıvaj´ıc´ı banku filtr˚ u se jedn´ a o poˇcty bit˚ u pouˇzit´e pro kvantizaci sign´al˚ u v jednotliv´ ych p´asmech. Blok Kvantiz´er realizuje kvantizaci sign´alu podle v´ ystupu bloku Alokace bit˚ u. Deklarace funkce: function [vystup_data, popis_vystup, info_abk, varargout] = .. KalokqantX(vstup_data, popis_vstup, varargin) , at vstupn´ıch dat. Pro kde vstup data je vektor vstupn´ıch dat, vektor popis vstup popisuje form´ budouc´ı kompatibilitu a zv´ yˇsen´ı univerz´ alnosti je pˇrid´ an vstupn´ı parametr varargin. Form´at dat ve vektoru v´ ystupn´ıch dat vystup data popisuje vektor popis vystup, pomoc´ı info abk funkce opˇet pˇred´ av´a parametry bloku Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı. Parametr varargout byl podobnˇe jako u ostatn´ıch blok˚ u pˇrid´ an pro budouc´ı kompatibilitu a vˇetˇs´ı univerz´ alnost navrˇzen´eho syst´emu.
2.5
Entropick´ y kod´ er
Souˇc´ast´ı vˇsech prakticky pouˇziteln´ ych kod´er˚ u zvuku je Entropick´y kod´er. Jeho podstatou je bezeztr´atov´ y kopresn´ı algoritmus, kter´ y vˇetˇsinou vyuˇz´ıv´ a pravdˇepodobnosti v´ yskytu jednotliv´ ych symbol˚ u. Podle t´eto pravdˇepodobnosti pˇriˇrazuje ˇcasto se vyskytuj´ıc´ım symbol˚ um kratˇs´ı k´odov´e slovo a naopak m´enˇe ˇcasto se vyskytuj´ıc´ım slov˚ um pˇriˇrazuje k´odov´a slova delˇs´ı. V´ ysledkem takov´ehoto pˇrek´ odov´an´ı je sn´ıˇzen´ı redundance. Pokud jsou pravdˇepodobnosti v´ yskytu jednotliv´ ych vstupn´ıch symbol˚ u znaˇcnˇe variabiln´ı (s velik´ ym rozptylem), bude datov´a u ´spora z´ıskan´ a entropick´ ym k´odov´an´ım znaˇcn´ a. Oproti tomu v pˇr´ıpadˇe podobn´ ych pravdˇepodobnost´ı v´ yskytu jednotliv´ ych vstupn´ıch symbol˚ u bude datov´a u ´spora mal´ a. Nejˇcastˇeji pouˇz´ıvan´ ym entropick´ ym k´odovac´ım algoritmem je Huffmanovo k´odov´an´ı. Deklarace funkce: function [vystup_data, popis_vystup, info_ek, varargout] = .. KentropcoderX(vstup_data, popis_vstup, varargin) , Popis jednotliv´ ych argument˚ u se shoduje s pˇredchoz´ım blokem Alokace bit˚ u a Kvantiz´er. Parametr info ek pˇred´ av´a informace bloku Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı.
2.6
Sbˇ er vedlejˇ s´ıch a pomocn´ ych informac´ı
Blok nazvan´ y Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı byl do syst´emu zaˇclenˇen pro jeho zpˇrehlednˇen´ı a zjednoduˇsen´ı. M´ a za u ´kol shromaˇzd’ovat informace potˇrebn´e pro spr´avn´e dek´ odov´an´ı v´ ystupu. Do tohoto bloku vstupuj´ı informace ze vˇsech ostatn´ıch blok˚ u syst´emu. Jedn´ a se napˇr´ıklad o u ´daje popisuj´ıc´ı implementovan´ y algoritmus. Pro syst´em MP3 by se jednalo napˇr´ıklad o u ´daj o kvantizaci, poˇctu ˇcinitel˚ u mˇeˇr´ıtka a jejich velikosti nebo o d´elku blok˚ u. Deklarace funkce: function [info, popis_info] = KsideinfoX(varargin) , Do bloku Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı vstupuj´ı data ze vˇsech ostatn´ıch blok˚ u pˇres argument varargin. Tento parametr je pouˇzit pro zpˇrehlednˇen´ı, nahrazuje parametry info pre, info tf, info pm, info abk a info ek. D´ıky deklaraci pomoc´ı varargin je nav´ıc zajiˇstˇena budouc´ı kompatibilita, nebot’ je moˇzn´e pˇrid´ avat dalˇs´ı vstupn´ı parametry. Struktura v´ ystupn´ıho parametru info je pops´ ana pomoc´ı druh´eho v´ ystupn´ıho parametru popis info.
2.7
Form´ atov´ an´ı v´ ystupn´ıho datov´ eho toku
V´ ystupn´ı datov´ y tok, respektive soubor odpov´ıdaj´ıc´ı dan´emu implementovan´emu algoritmu, vytv´aˇr´ı blok nazvan´ y Form´ atov´ an´ı v´ystupn´ıho datov´eho toku. Jeho u ´kolem je vz´ıt surov´a zkomprimovan´ a data a vˇsechny pomocn´e informace, z nich vytvoˇrit jednotliv´e r´amce, vytvoˇrit v´ ystupn´ı bitov´ y tok a ten n´aslednˇe uloˇzit do odpov´ıdaj´ıc´ıho v´ ystupn´ıho souboru. Deklarace funkce: function [status] = KformoutX(info,popis_info,vstup_data,popis_vstup,varargin) , Do bloku vstupuj´ı jednak pomocn´ a a vedlejˇs´ı data z bloku Sbˇer vedlejˇs´ıch a pomocn´ych informac´ı pomoc´ı parametr˚ u info a popis info, d´ale pak data z bloku Entropick´y kod´er pˇres parametry vstup data, popis vstup a varargin. Funkce zpracuje vˇsechna vstupn´ı data a vrac´ı pouze informativn´ı hodnotu status. Je-li rovna nule, zak´ odov´an´ı probˇehlo bez probl´em˚ u.
3
Z´ avˇ er
V ˇcl´ anku byl prezentov´an n´avrh univerz´ aln´ıho modul´ arn´ıho syst´emu pro kompresi zvuku. Navrˇzen´ y syst´em umoˇzn ˇuje implementaci souˇcasn´ ych i nov´ ych perceptu´ aln´ıch kod´er˚ u za u ´ˇcelem jejich porovn´an´ı, optimalizace a vylepˇsen´ı. Zejm´ena pˇri v´ yvoji nov´ ych zp˚ usob˚ u komprese zvukov´ ych sign´al˚ u umoˇzn ˇuje navrˇzen´ y kod´er spolupr´aci t´ ymu v´ yvoj´aˇr˚ u a pˇr´ısluˇsn´e rozdˇelen´ı pr´ace. Implementace je pˇripravena v prostˇred´ı Matlab, kter´e je rozˇs´ıˇren´e v prostˇred´ı technick´ ych univerzit a tud´ıˇz velmi vhodn´e pro tento projekt.
Podˇ ekov´ an´ı ˇ e grantov´e agentury ˇc´ıslo 102/05/2054 – KvaPopisovan´ y v´ yzkum je podporov´an grantem Cesk´ litativn´ı aspekty zpracov´an´ı audiovizu´aln´ı informace v multimedi´ aln´ıch syst´emech.
Reference [1] Bosi, M., Goldberg, R. E.: Introduction to Digital Audio Coding and Standards, Kluwer Academic Publishers, USA 2003.
[2] Painter, T., Spanias, A.: Perceptual Coding of Digital Audio, In IEEE Proceedings, Vol 88, No. 4, pages 451-513, April 2000
Frantiˇsek Rund ˇ Katedra radioelektroniky, FEL, CVUT Praha, Technick´a 2, 166 27, Praha 6 tel. 22435 2108, e-mail:
[email protected] Jan Nov´aˇcek ˇ Katedra radioelektroniky, FEL, CVUT Praha, Technick´a 2, 166 27, Praha 6 e-mail:
[email protected]