České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů
Bakalářská práce
Experimenty s psychoakustickou kompresí zvuku Radek Svoboda
Vedoucí práce: doc. Ing. Miroslav Šnorek, CSc.
Studijní program: Elektrotechnika a informatika, strukturovaný, Bakalářský Obor: Výpočetní technika 26. května 2010
iv
v
Poděkování Děkuji panu doc. Ing. Miroslavu Šnorkovi, CSc., vedoucímu práce, a všem dalším, kteří mi jakkoliv pomohli k vytvoření této práce.
vi
vii
Prohlášení Prohlašuji, že jsem práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 26. 5. 2010
.............................................................
viii
Abstract This work deals with explanation of psychoacustic principles, methods and algorithms used in psychoacoustic compression format MPEG I - Layer III, also called MP3, of standard ISO 11172-3. The standard itself is shown in short. Experiments with coder, which was programmed within the scope of the work based on this standard in mathematical software Matlab, are presented.
Abstrakt Práce se zabývá vyložením psychoakustických principů, metod a algoritmů použitých v psychoakustickém kompresním formátu MPEG I - Layer III, MP3, standardu ISO 11172-3. Samotný standard je ve stručnosti uveden. Jsou prezentovány experimenty s kodérem, který byl v rámci práce naprogramovaným na základě tohoto standardu v matematickém software Matlab.
ix
x
Obsah 1 Úvod 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Specifikace cílů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1
2 Psychoakustika 2.1 Úvod . . . . . . . . . . . . . . 2.2 Ucho a zvuk . . . . . . . . . . 2.3 Úroveň akustického tlaku . . 2.4 Práh slyšitelnosti . . . . . . . 2.5 Maskování . . . . . . . . . . . 2.5.1 Frekvenční maskování 2.5.2 Časové maskování . . 2.6 Kritická pásma . . . . . . . .
. . . . . . . .
3 3 3 4 4 5 6 6 7
. . . . . . . .
11 11 11 12 13 14 16 18 20
. . . . . . . . . .
21 21 21 22 22 23 23 25 28 29 30
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
3 Metody a algoritmy pro zpracování zvukového signálu 3.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Pulzně kódová modulace (PCM) . . . . . . . . . . . . . . 3.3 Diskrétní Fourierova transformace . . . . . . . . . . . . . 3.4 Subpásmové kódování . . . . . . . . . . . . . . . . . . . . 3.5 Polyfázová kvadraturní banka filtrů (PQMF) . . . . . . . 3.6 Modifikovaná kosínová transformace . . . . . . . . . . . . 3.7 Huffmanovo kódování . . . . . . . . . . . . . . . . . . . . 3.8 Cyklický redundantní součet . . . . . . . . . . . . . . . . . 4 Standard MPEG I - Part 3: Audio 4.1 Úvod . . . . . . . . . . . . . . . . . . 4.2 MUSICAM a ASPEC . . . . . . . . 4.3 Obsah standardu . . . . . . . . . . . 4.4 Kodér formátu MP3 . . . . . . . . . 4.4.1 Blok PQMF . . . . . . . . . . 4.4.2 Blok MDCT . . . . . . . . . 4.4.3 Psychoakustický model . . . 4.4.4 Kvantizace . . . . . . . . . . 4.4.5 Huffmanovo kódování . . . . 4.4.6 Cyklický redundantní součet
xi
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . .
xii
OBSAH
4.5 4.6
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
30 31 31 32 32 33 33
5 Experimenty s kodérem v Matlabu 5.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Kodér v Matlabu . . . . . . . . . . . . . . . . . . 5.2.1 Matlab . . . . . . . . . . . . . . . . . . . 5.2.2 Popis kodéru . . . . . . . . . . . . . . . . 5.3 Průběh experimentů . . . . . . . . . . . . . . . . 5.4 Zjištění chyby vzniklé PQMF filtrací . . . . . . . 5.4.1 Cíle . . . . . . . . . . . . . . . . . . . . . 5.4.2 Postup . . . . . . . . . . . . . . . . . . . . 5.4.3 Výsledky . . . . . . . . . . . . . . . . . . 5.4.4 Zhodnocení . . . . . . . . . . . . . . . . . 5.5 Zjištění chyby vzniklé transformací MDCT . . . 5.5.1 Cíle . . . . . . . . . . . . . . . . . . . . . 5.5.2 Postup . . . . . . . . . . . . . . . . . . . . 5.5.3 Výsledky . . . . . . . . . . . . . . . . . . 5.5.4 Zhodnocení . . . . . . . . . . . . . . . . . 5.6 Vliv délky bloku MDCT na výskyt jevu pre-echo 5.6.1 Cíle . . . . . . . . . . . . . . . . . . . . . 5.6.2 Postup . . . . . . . . . . . . . . . . . . . . 5.6.3 Výsledky . . . . . . . . . . . . . . . . . . 5.6.4 Zhodnocení . . . . . . . . . . . . . . . . . 5.7 Psychoakustická komprese tónu . . . . . . . . . . 5.7.1 Cíle . . . . . . . . . . . . . . . . . . . . . 5.7.2 Postup . . . . . . . . . . . . . . . . . . . . 5.7.3 Výsledky . . . . . . . . . . . . . . . . . . 5.7.4 Zhodnocení . . . . . . . . . . . . . . . . . 5.8 Psychoakustická komprese hudebního souboru . . 5.8.1 Cíle . . . . . . . . . . . . . . . . . . . . . 5.8.2 Postup . . . . . . . . . . . . . . . . . . . . 5.8.3 Výsledky . . . . . . . . . . . . . . . . . . 5.8.4 Zhodnocení . . . . . . . . . . . . . . . . . 5.9 Zhodnocení experimentů . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35 35 35 35 36 38 39 39 39 39 40 40 40 40 40 40 41 41 41 41 42 42 42 43 43 43 44 44 44 44 44 44
4.7
Dekodér . . . . . . . . Bitový tok . . . . . . . 4.6.1 Hlavička . . . . 4.6.2 Kontrola chyb . 4.6.3 Audio data . . 4.6.4 Doplňková data Shrnutí . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
6 Závěr
47
Literatura
49
A Seznam použitých zkratek
51
OBSAH
xiii
B Obsah přiloženého CD
53
xiv
OBSAH
Seznam obrázků 2.1 2.2 2.3 2.4 2.5 2.6
Rozložení vláskových buněk detekující dané frekvence, převzato Práh slyšitelnosti . . . . . . . . . . . . . . . . . . . . . . . . . . Naměřené prahy slyšitelnosti . . . . . . . . . . . . . . . . . . . Frekvenční maskování . . . . . . . . . . . . . . . . . . . . . . . Časové maskování . . . . . . . . . . . . . . . . . . . . . . . . . Frekvenční rozložení středů kritických pásem . . . . . . . . . .
3.1 3.2 3.3 3.4 3.5 3.6 3.7
Digitalizační řetězec PCM . . . . . . . . . . . . . . . . Schéma subpásmového kodéru a dekodéru . . . . . . . Modul frekvenčního spektra typického audiosignálu . . Impulzní charakteristika prototypu filtru PQMF . . . Modul frekvenční charakteristiky prvních třech filtrů a Sinové a Hannovo okno . . . . . . . . . . . . . . . . . Huffmanův strom . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
4 5 6 7 8 8
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
12 14 15 16 17 18 19
4.1 4.2 4.3 4.4
Schéma MP3 kodéru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Příklad využití oken v MDCT, sekvence normální-start-krátké-stop-normální Stavový diagram přepínání oken . . . . . . . . . . . . . . . . . . . . . . . . . Schéma MP3 dekodéru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 24 27 30
5.1 5.2 5.3 5.4
Schéma navrženého kodéru . . . . . . . . . . . . . . . . . . . Frekvence výskytu znaků ve výstupním souboru kodéru . . . Signál a jeho psychoakustická entropie . . . . . . . . . . . . . Vznik pre-echa v závislosti na použitých délkách oken MDCT
36 38 42 43
xv
z . . . . .
[14] . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . detail v -3dB . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
xvi
SEZNAM OBRÁZKŮ
Seznam tabulek 2.1
Frekvenční šířka jednotlivých kritických pásem . . . . . . . . . . . . . . . . .
3.1 3.2
Četnost znaků v textu „motion picture experts group“ . . . . . . . . . . . . . 19 Huffmanovy kódy znaků v textu „motion picture experts group“ . . . . . . . 19
4.1 4.2 4.3 4.4 4.5
Šířka výstupního PQMF subpásma v závislosti na vzorkovací frekvenci . . . . Délka okna MDCT v závislosti na použitém oknu a vzorkovací frekvenci . . . Šířka pásma, určená koeficientem MDCT v závislosti na vzorkovací frekvenci Koeficient c pro vypočtení koeficientů ca a cs pro redukci aliasingu . . . . . . Hlavička MP3 rámce a příklad . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1
Formát souboru zakódovaného v Huffmanově kódu . . . . . . . . . . . . . . . 37
xvii
9
23 24 24 25 32
xviii
SEZNAM TABULEK
Kapitola 1
Úvod 1.1
Úvod
Datová komprese je důležitou součástí uchování informace. Redukcí množství dat přispíváme ke snížení ekonomické zátěže při uchování informace a při jejím přenosu počítačovými sítěmi, hlavně internetem. Kompresní algoritmy se rozdělují do dvou hlavních kategorií, a to na ztrátové a bezeztrátové. Ztrátové algoritmy využívají znalostí o podstatě dat, mohou se jim přizpůsobit, a tím dosáhnout mnohem větších kompresí než algoritmy bezeztrátové. Využívají se především u dat, která vnímá člověk svými smyslovými orgány, tedy u obrázků, zvuku a videa. Tato práce se zaměřuje na kompresi zvukových signálů, především pak hudebních souborů, neboť například pro kompresi hlasu existují mnohem sofistikovanější metody, než se kterými zde pracujeme. Pro vytvoření ztrátového kompresního algoritmu využijeme principů, které nám nabízí psychoakustika, vědní obor zabývající se vnímáním zvuku člověkem. Psychoakustika zkoumá, které komponenty zvukového signálu jsou z hlediska vnímání zvuku redundantní, nadbytečné, a jak provést takovou kompresi, s jejíž pomocí dosáhneme minimalizace dat při zachování kvality zvuku shodné se zdrojem. S využitím kombinace principů psychoakustiky a algoritmů pro zpracování zvuku implementujeme středně složitý kodér a budeme experimentovat s nastavením jeho parametrů.
1.2
Specifikace cílů
Tato práce si klade několik cílů, vedoucích k uskutečnění experimentů s funkčním kodérem založeným na psychoakustickém principu. Prvním z těchto cílů je seznámit čtenáře s principy psychoakustické komprese. Nejprve budou vyloženy vlastnosti vnímání zvuku člověkem a jak nám naše poslechové ústrojí svou nedokonalostí umožňuje dosáhnout datové komprese audiosignálů více než 1:5 při nezměněné poslechové kvalitě. Dalším z cílů je představit praktické využití poznatků psychoakustiky. Nejdříve probereme konkrétní používané postupy, které nám umožňují vytvořit jednotlivé bloky pro fungující kompresní algoritmus. Jednotlivé metody se zabývají rozdělením frekvenčního rozsahu audiosignálů do vícero pásem, identifikací psychoakustických parametrů signálu a následnou kvantizací vzorků a také bezeztrátovou kompresí. Poté, se znalostí těchto metod, nám následují kapitola představí
1
2
KAPITOLA 1. ÚVOD
v technické praxi využívaný mezinárodní standard ISO-11172-3, definující kompresní algoritmus pro uložení audiosignálů, jež dává základ hudebním MP3 souborům. Ačkoliv tento standard za několik málo let oslaví 20. výročí své existence a byl již kvalitativně překonán, stále se pro něj nenašel takový soupeř, který by ho sesadil z pomyslného trůnu v uchovávání hudebních dat. Posledním, nikoliv nejmenším úkolem této práce je v matematickém software Matlab připravit na základě tohoto standardu fungující kompresní kodér. S jeho pomocí budou v rámci práce v závěru provedeny některé experimenty ověřující přínos jednotlivých psychoakustických postupů k datové kompresi a jejich zhodnocení. Po dokončení této práce se předpokládá, že její výsledky budou sloužit jak k náhledu do problematiky psychoakustiky, tak k tvorbě dalších experimentů ve vytvořeném kodéru.
Kapitola 2
Psychoakustika 2.1
Úvod
Psychoakustika je vědní obor zabývající se studiem subjektivního vnímání zvuku. V této kapitole si řekneme, jak funguje ucho, orgán umožňující příjem zvukových informací, a uvedeme důležité pojmy z oblasti audiosignálů. Představíme si základní kameny psychoakustiky, kterými jsou práh slyšitelnosti (threshold in quite), frekvenční, někdy též označované souběžné maskování (frequency masking) a časové maskování (temporal masking). Zaměříme se na způsob využití nedokonalostí ucha při kompresi audiosignálů. Veškeré významené psychoakustické kompresní formáty současnosti využívají níže uvedené principy ke zmenšení datového toku potřebného pro přenos signálu. Komprimované formáty dosahují kompresních poměrů více než 1:5 bez degradace zvukové kvality.
2.2
Ucho a zvuk
Zvuk je mechanické vlnění v látkovém prostředí, které způsobí sluchový vjem [13]. Lidské ucho je fyzicky omezené na vnímání mechanického vlnění o frekvencích od 20 Hz do 20 kHz. Touto vrozenou dispozicí je určena i potřebná vzorkovací frekvence signálu. Ucho se skládá ze třech hlavních částí. Vnější ucho slouží k usměrnění a zesílení zvukové vlny dopadající na bubínek. Střední ucho se svými třemi kůstkami, kladívkem, třmínkem a kovadlinkou slouží k vyrovnání impedancí mezi plynným prostředím vnějšího ucha a kapalným prostředím vnitřního ucha. Samotné vnitřní ucho začíná oválným okénkem, na které doléhá třmínek a je tvořeno hlemýžděm, což je stočená trubice vyplněná tekutinou (endolymfou) a zevnitř pokrytá výstelkou zvanou Cortiho orgán. Ten překrývá vláskové buňky, jež provádějí převod kmitání endolymfy na elektrické impulzi vysílané do mozku. Vnitřní ucho funguje jako frekvenční analyzátor. Převádí vstupující zvuk na kmitání endolymfy a v závislosti na frekvenci tohoto kmitání dochází k rozechvívání v určitém fyzickém prostoru vnitřního ucha. Na obrázku 2.1 vidíme, které vláskových buňky v hlemýždi reagují na jaké frekvence signálu. Nejvyšší frekvence jsou detekovány hned za oválným okénkem, nejnižší až na konci spirály hlemýždě.
3
4
KAPITOLA 2. PSYCHOAKUSTIKA
Obrázek 2.1: Rozložení vláskových buněk detekující dané frekvence, převzato z [14]
2.3
Úroveň akustického tlaku
Lidské ucho nevnímá hlasitost zvukového signálu lineárně, ale logaritmicky. Vnímá změny tlaku p na bubínek, dynamický rozsah ucha je od 10−5 Pa do 102 Pa, tedy plných sedm dekád. Abychom lépe popsali zvukový signál, měříme jeho hodnotu v decibelech, což je logaritmické měřítko podílu dvou hodnot. Úroveň akustického tlaku (Sound Pressure Level - SPL) je relativní veličina, deklarovaná jako 2.1 v závislosti na tlaku p, kde za hodnotu 0 dB je považována hodnota tlaku p = 20µP a, což zhruba odpovídá prahu slyšitelnosti (viz. níže) tónu o frekvenci 2 kHz. Úroveň akustického tlaku je problémová z hlediska vnímání zvuku člověkem, neboť na různých frekvencích se signál se shodnou úrovní akustického tlaku jeví různě hlasitý. Z tohoto důvodu je navrženo vícero metod ohodnocení hlasitosti. Jednotka sone vyjadřuje subjektivně vnímanou hlasitost, hodnot 1 sone odpovídá 40 dB SPL při frekvenci 1 kHz, narozdíl od decibelu se jedná o jednotku lineární. SP L = 20 ∗ log10
2.4
p [dB] p0
(2.1)
Práh slyšitelnosti
Již jsme se dozvěděli, že sluchový vjem nezávisí pouze na úrovni akustického tlaku, ale také na frekvenci zvuku. V závislosti na frekvenci lze tedy vynést křivku, která pro každou frekvenci prochází hodnotou akustického tlaku, který jsme už schopni smyslově vnímat. Taková křivka se nazývá práh slyšitelnosti (threshold in quite). Byla přibližně určena měřením např. v [3]. Tato křivka je však závislá na vícero faktorech a není jednotná pro všechny subjekty. Například vlivem věku se křivka posouvá směrem vzhůru hlavně v oblasti vyšších frekvencí. Tato křivka se dá přibližně aproximovat funkcí podle 2.2 z [2]. Podle ní vznikne křivka prahu slyšitelnosti 2.2 odpovídající naměřeným experimentálním hodnotám. Práh slyšitelnosti je velice důležitou součástí psychoakustického kodéru. Veškeré frekvenční složky, které se nacházejí pod ním jsou totiž neslyšitelné a je možné je ze signálu odebrat
2.5. MASKOVÁNÍ
5
bez změny poslechové kvality. Je také možné zmenšit numerickou přesnost přenášených frekvenčních složek, jejichž část spadá pod křivku prahu slyšitelnosti a tím zmenšit požadované nároky na množství přenesených dat.
A(f ) = 3, 64
f 1000
−0,8
f
2
− 6.5e−0,6( 1000 −3,3) + 10−3
f 1000
4
[dB]
(2.2)
140 SPL prahu slyšitelnosti
120 100
SPL [dB]
80 60 40 20 0 −20
2
10
3
10
4
10
f [Hz]
Obrázek 2.2: Práh slyšitelnosti
Pro ověření této křivky byl uspořádán experiment s využitím lékařského přístroje Voyager 522 pro měření prahu slyšitelnosti u pacientů trpících ztrátou sluchu. Testovaným subjektem v tomto případě byl sám autor. Měření proběhlo zvlášť pro levé a pravé ucho. Měření prováděly dvě osoby, testovaný subjekt a obsluha přístroje. Testovaný subjekt měl nasazena sluchátka a byl otočen zády k přístroji a obsluha spínala testovací tón na daných frekvencích od 125 Hz do 8 kHz počínaje úrovní akustického tlaku −20dB s krokem a tedy i přesností 5dB. Testovaný subjekt dával pomocí tlačítka najevo, že daný signál slyší. Výsledky měření jsou vyneseny v grafu 2.3. Experiment potvrdil průběh naměřený v [3], křivky si tvarově odpovídají, avšak naměřené křivky jsou asi o 5 dB výše, než křivka z literatury. Rozdíly mezi pravým a levým uchem jsou na hraně přesnosti.
2.5
Maskování
Maskování je jev, při němž některá část v signálu vjemově překryje jinou, která je potom neslyšitelná. Tohoto jevu lze využít v psychoakustickém kodéru, neboť při přenosu reálných signálů dochází k maskování neustále a ve velké míře ovlivňuje naše vnímání zvuku. Prvek signálu, který způsobí překrytí jiného prvku nazýváme maskující (masker), prvek překrytý potom maskovaný (maskee). Maskování dělíme na dva typy, v závislosti na časové incidenci maskujícího a maskovaného prvku. Jestliže se maskující a maskovaný prvek vyskytují
6
KAPITOLA 2. PSYCHOAKUSTIKA
40 Práh slyšitelnosti pravého ucha Práh slyšitelnosti levého ucha Práh slyšitelnosti z literatury
35 30
SPL [dB]
25 20 15 10 5 0 −5 −10
3
10
4
10
f [Hz]
Obrázek 2.3: Naměřené prahy slyšitelnosti
v signálu současně, hovoříme o takzvaném souběžném, spíše označovaném jako frekvenčním maskování. Jestliže maskující prvek časově předchází nebo následuje za maskovaným prvkem, hovoříme o časovém maskování. Na oba jevy se podíváme podrobněji.
2.5.1
Frekvenční maskování
Frekvenční maskování je jev, při kterém silnější komponenta v signálu, která se vyskytuje ve stejném okamžiku jako komponenta slabší, tuto slabší překryje a ta přestane být v signále slyšitelná. Na obrázku 2.4 vidíme zjednodušený příklad frekvenčního maskování. Signál je tvořen třemi tóny o blízkých frekvencích. Tón s nejvyšší amplitudou, v jehož okolí dojde ke změně křivky slyšitelnosti, kompletně překryje ostatní dva tóny. Pokud tedy přehrajeme signál tvořený pouze prostředním tónem, z poslechového hlediska se zvuk nezmění, což nám dává velký potenciál k úspoře dat. Rozlišujeme dva druhy maskujících prvků, a to šumové a tónové. Šumový maskující prvek má mnohem lepší potenciál maskovat okolní frekvenční pásma než tón. Šumová složka maskuje frekvenční pásma s maximem -5 dB pod úrovní maskujícího prvku, tónová složka až zhruba -20 dB pod úrovní maskujícího prvku, což snižuje potenciál tónové složky z hlediska psychoakustické komprese. Rozdělení na tóny a šum je možné provádět například pomocí detekce lokálních maxim, kde maximum bude tón, nebo pomocí predikce, kdy tón bude vysoce predikovatelný z po sobě jdoucích frekvenčních spekter.
2.5.2
Časové maskování
Časové maskování nastane, jestliže maskující a maskovaný prvek signálu se nevyskytuje ve stejném čase, ale maskující se vyskytuje buď před nebo po zaznění maskovaného prvku signálu [6]. Dopředné maskování (postmasking), nebo-li že maskující předchází maskovanému, si vysvětlujeme jako dobu odeznění rozkmitání membrány působící na vláskové buňky v
2.6. KRITICKÁ PÁSMA
7
140 120
SPL [dB]
100
Práh slyšitelnosti Maskované tóny Maskující tón Maskovací efekt tónu
80 60 40 20 0 2
3
10
10
4
10
f [Hz]
Obrázek 2.4: Frekvenční maskování
uchu způsobené maskujícím signálem. Zpětné maskování (premasking), tedy že maskující se vyskytuje v čase později než maskovaný, je jev, který je neočekávaný. Obecně se vysvětluje tím, že uchu trvá jistou dobu než „naintegruje“ sluchový vjem a to způsobuje, že může vůbec dojít k zamaskování prvku signálu prvkem vyskytujícím se časově až po jeho doznění. Na obrázku 2.5 vidíme principielní nákres časového maskování v signálu. Je patrné, že dopředné maskování má mnohem delší dobu trvání, přes 100 ms, zatímco zpětné maskování trvá řádově desítky ms. Zpětné maskování využíváme při kvantizaci vzorků, kde při náhlé změně energie signálu v čase dochází k průniku nechtěné kvantizace i do nízkoenergetických částí signálu, což způsobí jev zvaný pre-echo. Abychom se tomuto jevu vyhnuli, musíme upravit časové rozlišení zpracování signálu tak, že výsledné nežádoucí efekty kvantizace padnou do oblasti, kde budou potlačeny zpětným maskováním.
2.6
Kritická pásma
Experimenty ukázaly, že při frekvenčním maskování se maskovací efekt v okolí maskujícího prvku zužuje směrem k nižším frekvencím. Bylo zjištěno, že lidské ucho rozděluje zvuk do 24 takzvaných kritických pásem (critical bands). Uvnitř těchto pásem dochází k nejvýraznějším efektům frekvenčního maskování, neboť lidské ucho nedokáže uvnitř těchto kritických pásem jasně rozlišit vícero frekvencí. Kritická pásma nemají stejný frekvenční rozsah, pásma pokrývající nižší frekvence mají řádově nižší frekvenční rozsah než pásma
8
KAPITOLA 2. PSYCHOAKUSTIKA
Obrázek 2.5: Časové maskování
pokrývající vysoké frekvence. Tabulka 2.1 udává frekvenční rozsah jednotlivých kritických pásem. Na obrázku 2.6 vidíme rozložení středů jednotlivých kritických pásem po celém vnímatelném frekvenčním rozsahu. Jestliže na vodorovnou osu vyneseme lineárně všech 24 25
Kritické pásmo [Bark]
20
15
10
5
0 0
2000
4000
6000
8000 10000 12000 14000 16000 f [Hz]
Obrázek 2.6: Frekvenční rozložení středů kritických pásem
kritických pásem, potom v tomto měřítku odstraníme frekvenční závislost tvaru maskovacího efektu v okolí maskujícího prvku, maskovací efekt bude mít na celém rozsahu stejný tvar. Jedná se o Barkovou stupnici (Bark scale), jejíž jednotkou je 1 Bark. Jelikož celý koncept kritických pásem vychází z fyzických dispozic ucha, ve skutečnosti barková stupnice odpovídá fyzickému rozdělení vláskových buněk detekujících jednotlivé frekvence v uchu. Každý Bark odpovídá stejně dlouhému segmentu hlemýždě. Jedná se tedy o mapování z frekvenční oblasti do prostorové lokality ucha. Barková stupnice je nelineární stupnicí, pro převod jednotek z Hz do Bark se využívá vzorec 2.3. f KP = 13atan 0, 76 1000
+ 3, 5atan
f 7500
2 !
[Bark]
(2.3)
2.6. KRITICKÁ PÁSMA kr. pasmo šířka [Hz] kr. pasmo šířka [Hz]
1. 100 13. 280
2. 100 14. 320
9
3. 100 15. 380
4. 100 16. 450
5. 110 17. 550
6. 120 18. 700
7. 140 19. 900
8. 150 20. 1100
9. 160 21. 1300
10. 190 22. 1800
11. 210 23. 2500
12. 240 24. 3500
Tabulka 2.1: Frekvenční šířka jednotlivých kritických pásem S použitím Barkové stupnice můžeme jednoduše určit maskovací efekt mezi komponentami signálu nezávisle na jejich frekvencích, což využijeme v psychoakustickém modelu při výpočtu maskování.
10
KAPITOLA 2. PSYCHOAKUSTIKA
Kapitola 3
Metody a algoritmy pro zpracování zvukového signálu 3.1
Úvod
V této kapitole se seznámíme s metodami a algoritmy, které později využijeme při zpracování audiosignálu, zaměříme se na ty, jež jsou využity při kódování zvuku do formátu MP3. Dříve než se k nim dostaneme, zmíníme se o základech uložení audiosignálu na počítačích a jeho přednostech a nevýhodách a definujeme diskrétní Fourierovu transformaci potřebnou k převedení signálů do frekvenční oblasti. Podíváme se na subpásmové kódování, které lze s výhodou použít při kompresi reálných signálů a na implementaci této metody pomocí polyfázové banky filtrů a na transformační kódování reprezentované modifikovanou kosínovou transformací. Závěrem nahlédneme do principů bezeztrátové komprese dat využívající pravděpodobnostního rozdělení výskytu symbolů v datech a způsobu zabezpečení těchto dat proti chybám přenosu.
3.2
Pulzně kódová modulace (PCM)
Pulzně kódová modulace je metoda převodu analogového signálu na signál digitální. Je známa již od roku 1937, kdy byla popsána britským inženýrem A. Reevsem, a později patentována. Její princip spočívá v tom, že analogový signál je vzorkován v pravidelných intervalech a hodnotám signálu v nich je přiřazena nejbližší diskrétní hodnota definovaná velikostí úložného místa pro jeden vzorek. Vyvstává tedy otázka, s jakou vzorkovací periodou T tedy vzorkovat, aby mohl být z digitálního signálu zpětně rekonstruován původní analogový signál. Odpověď na ni přinesl Claude Shannon v návaznosti na práci Harryho Nyquista[10]. „Jestliže funkce f(x) neobsahuje frekvence vyšší nežli ωmax (v radiánech za sekundu), potom je plně určena hodnotami posloupnosti bodů rozmístěných ve vzdálenosti T = π/ωmax sekund.“ Převedeme-li radiány na jednotku Hertz a vyjádříme si frekvenci jako f = 1/T , dostáváme známý vztah 3.1, kde fmax je nejvyšší frekvence v signálu a Fs je vzorkovací frekvence. fmax =
Fs [Hz; Hz] 2 11
(3.1)
12KAPITOLA 3. METODY A ALGORITMY PRO ZPRACOVÁNÍ ZVUKOVÉHO SIGNÁLU
Jestliže budeme vzorkovat signál s frekvencí nižší nežli fs , dojde z důvodu periodicity spektra vzorkovaného signálu k jevu zvanému aliasing, čili překrytí frekvenčních spekter. S takto navzorkovaného signálu již není možné vytvořit originální analogový signál, dochází tedy k degradaci. Analogové hodnoty signálu ukládáme v digitální podobě jako čísla. Pro uložení digitální informace můžeme využít pouze konečné množství stavů, nejčastěji binárních, pak mluvíme o bitech. Právě počet bitů použitých k uložení dat ovlivňuje výslednou kvalitu signálu. Při digitalizaci analogové hodnoty do N bitů můžeme k uložení využít jeden z 2N možných stavů. Rozdíl mezi skutečnou hodnotou amplitudy a hodnotou uloženou se nazývá kvantizační zkreslení, nabývá hodnoty poloviny kvantizační jednotky. Vzhledem k tomu, že toto zkreslení je pro všechny frekvence stejné, má tedy charakter bílého šumu, nazýváme kvantizační zkreslení někdy jako kvantizační šum. Důležitá je hodnota odstupu signálu od šumu-SNR (z angl. signal-to-noise-ratio), který udává odstup šumové složky od signálu definovaného jako x[n] = A ∗ sin(n), kde A je rovné polovině rozsahu převodníku, čili 2(N −1) . Pro 16-bitové převodníky se udává SN R = 96dB. Odstup signálu od šumu pro obecný počet bitů na vzorek lze vyjádřit vztahem 3.2,kde N je počet bitů převodníku [2]. SN R = 6.021 ∗ N + 4.771
(3.2)
Na obrázku 3.1 vidíme typický digitalizační řetězec. Nejprve analogový signál projde filtrem typu dolní propust, který odstraní frekvence nesplňující Shannonův teorém. Tento filtr se někdy označuje také jako antialiasingový, to z důvodu, že při jeho nezařazení se do navzorkovaného signálu dostanou všechny frekvence obsažené v původním analogovém signálu, tedy i ty, které nesplňují Shannonův teorém a způsobí aliasing. Poté dochází v obvodech Sample&Hold ke snímání amplitudy signálu v diskrétních časových okamžicích. Nasnímaná hodnota je následně v A/D (analogově/digitálním) převodníku kvantována na n-bitové číslo. Nejčastějším způsobem kódování v převodníku bývá doplňkový kód. vstup x(t)
AF
S&H
x(nTs )
A/D
xq [n]
PC
Obrázek 3.1: Digitalizační řetězec PCM
Výhodou uložení signálu ve tvaru PCM je jednoduchá manipulace a úprava vzorků v časové oblasti a také větší odolnost proti chybám přenosu, protože chyba v jednom vzorku neovlivní ostatní vzorky. Největší nevýhodou pro reálné použití v audiotechnice je přílišná datová redundance způsobující i v dnešní době prodlevy při přenosu a vysoké nároky na úložná média.
3.3
Diskrétní Fourierova transformace
Disrétní Fourierova transformace (DFT) je diskrétním ekvivalentem výpočtu koeficientů komplexní Fourierovy řady[4]. Využívá se jí pro výpočet diskrétního frekvenčního spektra
3.4. SUBPÁSMOVÉ KÓDOVÁNÍ
13
signálu. DFT použijeme na signál diskrétní v čase s délkou N vzorků. Provedeme úvahu, že tento signál je periodický s periodou N. Výpočtem DFT získáme frekvenční spektrum, které je opět periodické s periodou N, a které má frekvenční rozlišení Fs /2N , kde Fs je vzorkovací frekvence. Uvědomme si, že toto spektrum je komplexní. Rovnice 3.3 je definicí DFT. Pro přechod zpět z frekvenční do časové oblasti využíváme inverzní DFT, definovanou vztahem 3.4. X[k] =
N −1 X
2π
x[n]e−j N nk
k = 0..N − 1
(3.3)
n=0 −1 2π 1 NX x[n] = X[k]ej N nk N k=0
n = 0..N − 1
(3.4)
S použitím definice je asymptotická složitost výpočtu rovna O(n2 ). Využívá se proto rychlejší forma výpočtu DFT, takzvaná rychlá Fourierova transformace (Fast Fourier Transform) se složitostí O(nlogn). Jejím principem je znovuvyužití již dříve spočtených koeficientů. DFT nám umožní nahlédnou do frekvenční struktury signálu a z modulového a fázového frekvenčního spektra vyvodíme správné parametry psychoakustické komprese.
3.4
Subpásmové kódování
Využijeme skutečnosti, že umíme převést signál z časové do frekvenční oblasti. Pro různá frekvenční pásma je výhodné použít různé strategie pro redukci dat, je také vhodné pracovat současně s pásmy, které vykazují podobný charakter signálu a tím dosáhnout lepší komprese. Nezabývejme se nyní konkrétními metodami, a podívejme se na jednotlivé fáze subpásmového kódování. Nejprve je nutné pomocí filtrů typu pásmová propust rozdělit signál do několika pásem. Šířka pásem bývá pro jednotlivé filtry z banky shodná, a to z důvodu redukce aliasingu na okrajích pásem. Typicky se používá počet filtrů v násobcích 2. Druhou fází rozdělení signálu do více frekvenčních pásem je decimace. Rozdělením signálu do N frekvenčních pásem totiž naroste N-násobně množství dat. Zde nachází využití předpoklad, že vzorkováním může dojít k překryvu frekvenčních pásem. Vzhledem k tomu, že ve filtrovaném signálu se žádné frekvence jiné, než které jsme propustili nevyskytují, můžeme provést převzorkování signálu s periodou N*Ts , kde Ts je původní vzorkovací perioda. Tím dojde k aliasingu, takže se nám propuštěné frekvence zobrazí na interval frekvencí od 0 do 1/N Ts a nedojde ke ztrátě informace. Po decimaci tedy získáváme stejný objem dat, jaký jsme měli před frekvenčním dělením signálu. Abychom získali zpět původní signál, je potřeba doplnit do všech N pásem za každý vzorek N-1 nul, poté všech N frekvenčních pásem filtrovat opět pásmovými propustmi a nakonec všech N vzniklých signálů sečíst, čímž dostaneme původní signál. Samozřejmě filtry pro rozdělení a opětovné složení musí být speciálně navrženy, aby nedošlo k aliasingu. Na obrázku 3.2 je znázorněno schéma subpásmového kodéru a dekodéru, který dělí vstupní PCM signál do 32 subpásem, symbol ↓ značí převzorkování signálu, symbol ↑ doplnění nulami. Nyní už máme k dispozici N kanálů signálu a můžeme provést zakódování na každém zvlášť. Je zajímavé všimnout si jedné skutečnosti. Totiž audiosignály získané z reálného prostředí nemají rovnoměrně rozloženou energii. Jak vidíme na obrázku 3.3, který je typickým příkladem audiosignálu, zde konkrétně vzorkovaný frekvencí 44100Hz, nejvyšší energie se
14KAPITOLA 3. METODY A ALGORITMY PRO ZPRACOVÁNÍ ZVUKOVÉHO SIGNÁLU +
P CM 0
FILTR
↓ 32
↑ 32
FILTR
1
FILTR
↓ 32
↑ 32
FILTR
31
FILTR
↓ 32
↑ 32
FILTR
Obrázek 3.2: Schéma subpásmového kodéru a dekodéru
nacházejí v rozsahu od 0Hz do 10kHz, v oblasti nad 16kHz už je energie velmi nízká. Je tedy možné například provést překódování těchto tří pásem a pro každé použít jiný počet bitů na vzorek, takový který obsáhne maximální hodnotu v daném pásmu. Tím dojde ke značné kompresi dat bez ztráty informace. V dekodéru pouze doplníme horní bity vzorků hodnotou nejvyššího bitu vzorku v počtu daném rozdílem původního a sníženého počtu bitů na vzorek. Při psychoakustické kompresi využijeme rozdělení signálu do frekvenčních pásem tím, že do každého pásma můžeme umístit jiné množství šumu a optimalizovat tím jeho rozložení aby nebyl vnímatelný a přitom došlo k datové kompresi. Další informace lze získat v [2] nebo [9].
3.5
Polyfázová kvadraturní banka filtrů (PQMF)
Se znalostí principů subpásmového kódování si uvedeme konkrétní metodu, která je využita v kódování formátu MP3. Jedná se o využití polyfázové kvadraturní banky filtrů (PQMF banka filtrů), kterou tvoří 32 pseudo-kvadraturních zrcadlových filtrů (PQMF filtry). Tento přístup vychází z návrhu filtrů pro perfektní rekonstrukci signálu, takzvaného kvadraturního zrcadlového filtru (Quadrature Mirror Filter) a konjugovaného zrcadlového filtru (Conjugate Mirror Filter). PQMF filtry, navržené Rothweilerem v [8], jsou aproximací filtrů pro perfektní rekonstrukci signálu. Pro vybraný počet frekvenčních pásem, do kterého budeme signál dělit, je vytvořen prototyp filtru. Použitelné filry jsou poté vytvořeny modulací prototypu kosínem s odpovídající frekvencí, což ve frekvenční oblasti odpovídá posunu středu propustného pásma filtru v kladném směru frekvenční osy a tím změně propouštěného frekvenčního pásma. Jejich výhodou je, že lze použít tyto filtry paralelně, nikoli kaskádně zapojené, a tím minimalizovat zpoždění banky filtrů. Banka filtrů pro analýzu, tedy rozklad signálu do frekvenčních pásem, je časovou inverzí banky pro syntézu, tedy sloučení signálů. Na obrázku 3.4 vidíme impulsní odezvu prototypu filtru. V implementaci formátu MP3 je použit FIR filtr délky 512 definovaný impulsní odezvou pomocí tabulky bodů[1]. Na obrázku 3.5 vidíme modul frekvenční charakteristiky prvních třech filtrů pro analýzu, které vznikly násobením koeficientů prototypu filtru kosínem 3.5. Vidíme, že frekvenční pásma mezi po sobě následujícími filtry se překrývají na úrovni -3dB a mezi nesousedními
3.5. POLYFÁZOVÁ KVADRATURNÍ BANKA FILTRŮ (PQMF)
15
3500
3000
amplituda fr. spektra
2500
2000
1500
1000
500
0
0
0.5
1
1.5
2 2.5 frekvence [Hz]
3
3.5
4
4.5 4
x 10
Obrázek 3.3: Modul frekvenčního spektra typického audiosignálu
filtry na úrovni méně než -100 dB. Díky fázovým charakteristikám filtru je v sousedních pásmech zajištěno potlačení aliasingu způsobené tímto překryvem, mezi nesousedními pásmy se využívá toho, že úroveň signálu z pásma vzdálenějšího více než F32s od středu propustného pásma pásmové propusti je nižší než kvantizační chyba kodéru.
hk [n] = h[n]cos
1 π (n − 16) 2 32
k+
(3.5)
Asymptotická složitost PQMF filtrace je O(n), ovšem problémem v praxi je velká konstanta. Při implementaci podle definice konvoluce je konstanta k = 512 operací na vzorek. Proto již ve standardu [1] je popsána vylepšená maticově orientovaná implementace 3.6 (zde implementace analýzy, pro syntézu stačí nahradit v M v kosínu r-16 výrazem r+16 a rovnici vynásobit 32), jejíž konstanta k = 80 operací na vzorek. Existují i rychlejší implementace pracující s konstantou k ≈ 20 operací na vzorek. ym [k] =
63 X
M [k, r] ∗
r=0
(C[r + 64p] ∗ xm [r + 64p])
k = 0..31
(3.6)
p=0
M [k, r] = cos
7 X
n 1 π k+ (r − 16) , C[n] = (−1)f loor( 64 ) h[n] 2 32
Použitím PQMF rozdělíme signál do 32 fekvenčních pásem. Všechna pásma mají stejnou frekvenční šířku, která pro nízké frekvence absolutně nevyhovuje principu kritických
16KAPITOLA 3. METODY A ALGORITMY PRO ZPRACOVÁNÍ ZVUKOVÉHO SIGNÁLU
0.04 0.035 0.03
koeficient [−]
0.025 0.02 0.015 0.01 0.005 0 −0.005 0
100
200
300 vzorek [−]
400
500
600
Obrázek 3.4: Impulzní charakteristika prototypu filtru PQMF
pásem, což limituje využití v psychoakustické kompresi. Abychom dosáhli většího frekvenčního rozlišení, a mohli tedy s vyšší přesností injektovat šum do signálu, je potřeba provést další frekvenční dělení signálu. To nám umožní metoda transformačního kódování zvaná modifikovaná kosínová transformace.
3.6
Modifikovaná kosínová transformace
Modifikovaná kosínová transformace vychází z diskrétní kosínové transformace, konkrétně její podoby DCT-IV. Jedná se o typ diskrétní Fourierovy transformace, tedy převod signálu z časové do frekvenční oblasti. Oproti DFT má ovšem výhodu v tom, že výstupní posloupnost z DCT je reálná a nemusíme tedy pracovat s imaginární složkou jako u DFT. Toho je dosaženo tak, že transformovaná posloupnost hodnot signálu délky N je zrcadlena, a je vytvořena posloupnost, která je sudá s dvojnásobnou délkou 2N. Takováto posloupnost ale při transformaci eliminuje sinové koeficienty a její rozvoj je čistě kosínový, tedy reálný. Navíc je také sudou funkcí, proto stačí uchovat pouze N koeficientů pro úplnou rekonstrukci. DCT má ovšem i svoji nevýhodu ve zpracování signálů spojenou s nárůstem objemu dat. Uvědomme si, že filtrujeme časově omezené signály. Vybrání časově omezeného signálu z původního signálu si lze představit jako přenásobení vhodně posunutým čtvercovým oknem. To má ovšem velice pomalé odeznívání ve frekvenční oblasti, a proto dojde k výskytu frekvencí, které se v původním signálu nevyskytují. Musíme proto využít jiné než čtvercové okno. Okno je posloupnost čísel, kterými přenásobíme filtrovaný signál. Používáme okna jako jsou sinové, Hannovo 3.6 okno. Tato okna mají na okrajích nízké koeficienty, takže se ve frekvenční oblasti neprojeví artefakty způsobené ohraničením signálu v čase. Problémem v takovémto přístupu je ale zpětná rekonstrukce signálů přenásobených oknem. Nelze jednoduše při rekonstrukci signál oknem vydělit a tím získat původní signál. Provedením kvantizace zavedeme do signálu malé změny. Použitá okna na okrajích intervalu mají ovšem malé koeficienty, takže dělení malým číslem by způsobilo veliké chyby na okrajích, a toho
3.6. MODIFIKOVANÁ KOSÍNOVÁ TRANSFORMACE
20
17
2
h0[n] h1[n] h2[n]
1
0
0
−20
−1
Útlum [dB]
Útlum [dB]
−40 −60
−2 −3 −4
−80
−5
−100
−6 −120 −7 −5
0 Fs/64 [Hz]
5
10
−1
0 1 2 Fs/64 [Hz]
3
Obrázek 3.5: Modul frekvenční charakteristiky prvních třech filtrů a detail v -3dB
se chceme vyvarovat. Použiváme proto techniku zvanou překrytí a sečtení (Overlap and add). Jedná se o využití metody vyrušení aliasingu v časové oblasti (Time domain aliasing cancellation). Pro maximální potlačení aliasingu využíváme 50% překrývání, tedy že druhá polovina dat v časové oblasti je v dalším kroku použita jako první polovina a druhá polovina jsou nová data. V inverzní fázi při rekonstrukci signálu jsou data vynásobena opět oknem, a poté s daným překryvem jsou sečteny výsledky po sobě jdoucích výstupů, čímž se vyruší aliasing a získáme původní signál. Při použití DCT ovšem ihned vyvstává problém a to je zdvojnásobení počtu dat použitím překryvu, což je absolutně nepřijatelné, jelikož se snažíme o datovou kompresi. Modifikovaná kosínová transformace tento problém řeší. Pro N vstupů poskytuje N/2 výstupů. V inverzní fázi z N/2 vstupů vznikne N výstupů. Zdálo by se tedy, že takovéto řešení není možné, ale s využitím principů překryvu a součtu dostáváme požadované výstupy a jsme tedy schopni rekonstruovat signál při zachování nezměněného datového toku mezi MDCT a IMDCT (inverzní MDCT). Teoretické principy vycházejí z maticových operací, které není potřeba rozebrat k využívání MDCT v praxi. Předpis pro MDCT podle [1] je 3.7 a pro IMDCT 3.8, kde n = 36 pro dlouhé bloky a n = 12 pro krátké bloky, x je vzorek v časové a X ve frekvenční oblasti. n−1 X
π n Xi = xk cos 2k + 1 + (2i + 1) 2n 2 k=0
n −1 2
xi =
X k=0
Xk cos
π n 2i + 1 + (2k + 1) 2n 2
n −1 2
(3.7)
i = 0..n − 1
(3.8)
i = 0..
Délkou zvoleného bloku, tedy počtem časových vzorků zpracovaných v jednom kroku,
18KAPITOLA 3. METODY A ALGORITMY PRO ZPRACOVÁNÍ ZVUKOVÉHO SIGNÁLU
1 sin(n) hann(n)
0.9 0.8
koeficient [−]
0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0
100
200
300 vzorek [−]
400
500
600
Obrázek 3.6: Sinové a Hannovo okno
určujeme časové a frekvenční rozlišení. Dlouhý blok odpovídá zpracování 36 vzorků v časové oblasti, krátký blok 12 vzorkům, ovšem při zpracovávání krátkého bloku zpracujeme tři bloky najednou, čili počet výstupních dat z MDCT se nemění. Časové a frekvenční rozlišení jsou však rozlišení protichůdná, čili čím vyšší frekvenční rozlišení budeme mít, tím horší bude rozlišení časové a naopak. Vyšším frekvenčním rozlišením se snažíme dosáhnout vyšší přesnosti injekce šumu do signálu, vyšším časovým rozlišením správnou časovou lokalitu, tedy že kvantizace nebude příliš časově rozprostřena, což způsobuje jev zvaný pre-echo. Pre-echo vzniká, pokud signál s nízkou energií předchází vysokoenergetickému signálu, například ticho před zvukem bubnu. Pokud by nedošlo k potlačení pre-echa, byl by po kvantizaci slyšitelný dvojitý úder bubnu (double attack). Nastavení správné délky okna je tedy kompromisem mezi frekvenčním a časovým rozlišením. Kodér MP3 se s tímto vypořádá použitím vícero druhů oken v závislosti na hodnotě perceptuální entropie. Perceptuální entropie je odhad potřebného počtu bitů pro uložení signálu. S detailním popisem oken a perceptuální entropie se seznámíme v následující kapitole. Z pohledu implementace MDCT je asymptotická složitost výpočtu podle předpisu rovna O(n2 ), s využitím FFT se dostáváme na přijatelné O(nlogn).
3.7
Huffmanovo kódování
Redukci objemu dat napomáhá i bezeztrátová (lossless) komprese. Jedním z nejpoužívanějších algoritmů je Huffmanovo kódování [5]. Jedná se o prefixový kód s variabilní délkou binárního kódového slova, který je vytvořen na základě četnosti výskytu znaků v datech. Jestliže jsou kódované znaky mezi sebou nezávislé, jedná se o optimální řešení úlohy bezztrátové komprese. Nejčastěji se vyskytující znak je zakódován nejkratší binární posloupností a s klesající četností výskytu znaků se prodlužuje délka kódových slov. Kódová tabulka Huffmanova kódu se vytváří pomocí binárního stromu. Listy tohoto stromu tvoří kódované znaky, které jsou ohodnoceny četností výskytu znaku. Hrany jsou ohodnoceny binárními stavy 0
3.7. HUFFMANOVO KÓDOVÁNÍ znak četnost
m 1
o 3
t 3
19
i 2
n 1
p 3
c 1
u 2
r 3
e 3
x 1
s 1
g 1
’’ 3
Tabulka 3.1: Četnost znaků v textu „motion picture experts group“ znak bin. kód znak bin. kód
m 11111 u 1001
o 1000 r 001
t 011 e 000
i 1010 x 11100
n 11110 s 10111
p 010 g 10110
c 11101 ’’ 110
Tabulka 3.2: Huffmanovy kódy znaků v textu „motion picture experts group“
a 1. Pokud procházíme směrem od kořenu k listu a zapisujeme za sebe ohodnocení hran, kterými jsme prošli, získáváme kódové slovo pro znak v listu. Tvorba Huffmanova stromu probíhá odspoda nahoru, vyberou se uzly s nejnižšími četnostmi, je vytvořen nový uzel, který má četnost rovnou součtu těchto dvou uzlů a jeho potomky se stanou právě tyto dva uzly, jeden je připojen hranou ohodnocenou 1 a druhý 0. Takto se pokračuje, dokud neexistuje pouze jeden uzel, který nemá předka, poté je už Huffmanův strom sestaven a lze vypsat kódová slova do tabulky. Pro upřesnění doplňme, že získaný kód není jediný možný, jestliže existuje více optimálních kódů je možné využít kterýkoliv se stejnými výsledky komprese. Uvedeme jednoduchý příklad, kompresi slovního spojení „motion picture experts group“. V tabulce 3.1 vidíme četnost jednotlivých znaků. Na obrázku 3.7 je sestrojený Huffmanův strom, a pod ním v tabulce 3.2 binární kód pro jednotlivé znaky. Pokud bychom kódovali tento text pomocí 8 bitové ASCII tabulky, potřebovali bychom 208 bitů. Pomocí Huffmanova kódu by nám stačilo 93 bitů. Dosáhli jsme tedy datové komprese 55 procent, pokud neuvažujeme náklady na přenos tabulky. Ve formátu MP3 se využívají domluvené Huffmanovy tabulky, získané statistickou analýzou signálů. 0
1 1 1 0
1 1 m
0 n
1 c
0
0 ”” 0 x
0
1 0
1 1 s
0 g
i
1 u
0 o
1 t
1
0
0 p
1 r
0 e
Obrázek 3.7: Huffmanův strom
Asymptotická složitost výpočtu Huffmanova stromu je O(n), jestliže máme již seřazené četnosti znaků. Pro neseřazené četnosti s využitím například QuickSort algoritmu pro seřazení se nám složitost zhoršuje na O(nlogn). Samotné kódování a dekódování má složitost O(n). V kodéru MP3 se využívá Huffmanova kódu ke kompresi kvantizovaných výstupů MDCT.
20KAPITOLA 3. METODY A ALGORITMY PRO ZPRACOVÁNÍ ZVUKOVÉHO SIGNÁLU
3.8
Cyklický redundantní součet
Přenášená data je potřeba zabezpečit proti chybám přenosu. Zabezpečují se bloky dat, proto se použité kódy označují jako blokové. Jedním z jednoduchých lineárních kódů, který se používá, je cyklický redundantní součet (Cyclic Redundancy Check - CRC). Teto kód je založen na lineární algebře a na dělení mnohočlenů. Blok dat délky k je zabezpečen r bity a přenáší se výsledný počet n = k+r bitů. Myšlenkový postup tvorby přenášeného bloku dat je následující. Je vybrán generující polynom stupně r s binárními koeficienty am , to jest s nejvyšší mocninou ar−1 xr−1 , kde ar−1 je 1. Určí se blok binárních dat, který bude zabezpečen, jehož hodnoty se stanou koeficienty mnohočlenu A(x) stupně k-1, k němu je připojeno r nul jako r nejnižších bitů. Provedeme vydělení tohoto polynomu generujícím polynomem. Výsledkem toho procesu bude zbytek po dělení, který bude stupně nejvýše r-1. Provedeme součet zbytku po dělení s mnohočlenem A(x) rozšířeným o r nul. Tím získáváme přenášenou posloupnost bitů. Na přijímací straně provedeme dělení přijaté posloupnosti generujícím polynomem. Jestliže výsledek nebude nulový, vyskytla se v přijímané posloupnosti chyba, ovšem ani nulový výsledek nezaručí bezchybný přenos. Je možné, že se vyskytne kombinace, kterou CRC neodhalí. Záleží především na stupni generujícího polynomu, čím vyšší stupeň zvolíme, tím nižší je pravděpodobnost chyby při nulovém výsledku dělení, ovšem narůstá nám datová redundance, takže opět čelíme dvěma protichůdným tendencím a je úkolem udělat kompromis mezi spolehlivostí a počtem přenášených dat. Algoritmická realizace podle tohoto postupu by však byla zbytečně hardwarově náročná. Všechny potřebné operace jak ve vysílací tak v přijímací části lze provádět pomocí zpětnovazebního posuvného registru, jehož struktura je určena generujícím polynomem. Ve vysílači se prvních k bitů přímo propouští na výstup a do posuvného registru, po k krocích je v posuvném registru zbytek po dělení délky r, který vložíme na výstup a získáme odesílanou posloupnost n bitů. V přijímací části budeme mít stejný posuvný registr, kam nasuneme postupně všech n bitů zprávy, potom budou mít při bezchybném přenosu všechny registry nastavenu hodnotu 0. Matematické podklady a příklad vytvoření posuvného registru například v [11].
Kapitola 4
Standard MPEG I - Part 3: Audio 4.1
Úvod
Tato kapitola má za úkol seznámit čtenáře s prvním mezinárodním standardem zaměřujícím se na kompresi zvuku ve vysoké kvalitě s využitím principů psychoakustiky. Jedná se o standard ISO/IEC 11172-3: MPEG I - Audio, který vznikl jako součást standardu pro kódování obrazu a zvuku v rámci skupiny Moving Pictures Experts Group (MPEG), pod patronátem Mezinárodní organizace pro normalizaci (ISO). Standard MPEG I - Audio vychází z již existujících algoritmů MUSICAM a ASPEC, jejichž historii stručně vyložíme. Veškeré standardy do té doby adresovaly především kódování řeči s pomocí modelů hlasového ústrojí a kompresi zvuku, která pro zachování CD kvality potřebovala příliš malý a pro přenos nepřijatelný kompresní poměr. Řekneme si něco i o formátech MPEG I - Layer I a Layer II, které jsou jednoduchou verzí psychoakustického kompresního formátu. V této kapitole se ovšem hlavně zaměříme na snad nejznámější hudební formát MPEG I - Layer III, označovaný dnes výhradně MP3 formát, který využívá přístupy uvedené v předchozí kapitole. Ve stručnosti probereme jednotlivé bloky a jejich přínos v celém kompresním řetězci a také formátování bitového toku.
4.2
MUSICAM a ASPEC
Standard MPEG I - Audio definuje tři úrovně kodéru s rostoucí složitostí i efektivitou komprese, označované Layer a číslo udávající úroveň. Layer I a Layer II vycházejí z algoritmu MUSICAM (Masking pattern adapted Universal Subband Integrated Coding And Multiplexing), navrhnutého pro MPEG jako kompresní standard společností Philips a výzkumnou organizací CCETT. Tyto dva formáty využívají polyfázovou banku filtrů k rozdělení signálu do 32 frekvenčních pásem, jednoduchý psychoakustický model, který přímo definuje kvantizaci vzorků ze subpásem, ať už se v jednom bloku kóduje 12 vzorků pro každé subpásmo a tedy celkově 384 vzorků (Layer I), nebo 12x3 vzorky a tedy 1152 vzorků v bloku pro úsporu bitů v hlavičce a scalefactorech (Layer II). Scalefactor je koeficient, který mění měřítko přenášených dat přenásobením (vzhledem k neustálenému překladu tohoto pojmu se v této práci přidržíme termínu scalefactor). Kódování se provádí v časové oblasti. Jejich výhodou je nízká výpočetní náročnost takovéto komprese, musíme si uvědomit, že standard vznikal
21
22
KAPITOLA 4. STANDARD MPEG I - PART 3: AUDIO
na počátku 90. let 20. století a bylo třeba zajistit praktickou využitelnost. Hlavní nevýhoda spočívá v nedostatečném frekvenčním rozlišení. Pouze 32 frekvenčních pásem, které navíc mají stejnou frekvenční šířku, neumožňuje hlavně v oblasti nízkých frekvencí využít jevu frekvenčního maskování. Layer II například našel své uplatnění v digitálním rozhlasovém vysílání (Digital Audio Broadcasting). Mnohem vyspělejším formátem je MPEG I - Layer III, MP3. Vychází z algoritmu ASPEC (Adaptive Spectral Perceptual Entropy Coding) za nimiž stojí AT&T, Thomson a Fraunhoferův institut při univerzitě Hannover. V rámci kompatibility dekodéru s formáty Layer I a II byla drobně pozměněna jeho struktura. Jedná se především o zařazení polyfázové banky filtrů, která v původním návrhu ASPEC chybí a využívá se pouze MDCT. Z důvodu zpětné kompatibility vrstev standardu je tedy využita hybridní banka filtrů, kterou tvoří sériové zapojení polyfázové banky filtrů a MDCT bloků. Využívá se vylepšený psychoakustický model z důvodu lepší detekce psychoakustických vlastností signálu, které v kombinaci s hybridní bankou filtrů zlepšují poslechovou kvalitu. Další komprese je dosaženo s využitím bezeztrátového statického Huffmanova kódování. Jeho nevýhodou v době vzniku standardu byla vysoká výpočetní složitost oproti Layer I a Layer II, ale nad ní převážili mnohem lepší výsledky z hlediska datové komprese při srovnatelné kvalitě zvuku. Formát MP3 byl určen pro distribuci hudby pomocí ISDN, v dnešní době se jedná o nejrozšířenější hudební formát internetu a přenosných přehrávačů hudby.
4.3
Obsah standardu
Standard ISO/IEC 11172-3 se skládá z obecné a technické částí a tzv. doložek (annex), které jsou jak normativní tak informativní. Standard určuje správný formát bitového toku, který by měl každý dekodér umět interpretovat. Definuje i požadavky na dekodér a tabulky, které dekodér používá, v normativní části doložek. Tímto je zajištěna kompatibilita dekodérů s datovými toky a je zajištěna správná reprodukce. V informativní části skupina MPEG prezentuje velmi stručný návod na implementaci kodéru. Nutno poznamenat, že i přes několik proběhlých revizí standardu se v něm stále vyskytují známé chyby, které implementaci kodéru ztěžují. Kodér tedy není součástí povinné části standardu, což vede k tomu, že výrobci kodérů ho mohou vylepšovat, pokud je výstupem stále bitový tok splňující standard. Je možné vylepšovat jak algoritmy použité pro filtrování a tím urychlit činnost kodéru, tak upravovat psychoakustický model a dosahovat lepších kompresí. Formát MP3 je patentován, a programování kodéru pro jiné než studijní účely je striktně omezeno licenčními poplatky. Informace pro tuto kapitolu byly čerpány z [1], [2] a [7].
4.4
Kodér formátu MP3
Na obrázku 4.1 vidíme schéma kodéru formátu MP3. Pokud si ho srovnáme s dekodérem 4.4, vidíme, že kodér je složitější. Toto rozvážení dvojice kodér a dekodér je obzvlášť vhodné pro přehrávání hudebních souborů. Kódování totiž proběhne pouze jednou a proto není problém s jeho složitostí a tedy časovou náročností. Naopak dekódování probíhá při každém spuštění a je potřeba, aby probíhalo v reálném čase na zařízení s minimálními nároky na
4.4. KODÉR FORMÁTU MP3
23
frekvence šířka pásma
32kHz 500Hz
44.1kHz 689Hz
48kHz 750Hz
Tabulka 4.1: Šířka výstupního PQMF subpásma v závislosti na vzorkovací frekvenci hardware. Se znalostí principů využitých v psychoakustické kompresi zvuku můžeme popsat jejich konkrétní podobu v kodéru MP3. PCM vstup
PQMF
MDCT
32
Kvantizace 576
Formatovani
Vystup
Huffman
PA model Obrázek 4.1: Schéma MP3 kodéru
4.4.1
Blok PQMF
Vstupem do kodéru je PCM signál s 16 bity na vzorek a vzorkovací frekvencí 32kHz, 44.1kHz nebo 48kHz. Kodér využívá banku polyfázových filtrů s 32 PQMF filtry definovanými podle 3.5 se shodnou šířkou propouštěného subpásma. Šířka subpásma závisí na vzorkovací frekvenci signálu a pro přípustné frekvence je definována v tabulce 4.1. Využívá se kritické vzorkování, vstupní signál se posouvá v jednotlivých krocích o 32 vzorků, výstupem je tedy stejný počet subpásmových vzorků jako byl počet vstupních vzorků. PQMF banka filtrů způsobuje při filtraci zpoždění (jedná se o FIR filtr), které odpovídá polovině její délky, tedy 256 vzorkům. Na výstupu každého subpásma PQMF bloku je připojen buffer schopný podržet 36 výstupních 16ti bitových hodnot. Dohromady tedy do další fáze předáváme 32*36 = 1152 vzorků.
4.4.2
Blok MDCT
Na výstup každého subpásma vytvořeného PQMF je připojena jednotka MDCT, která konvertuje buffer 36 uložených hodnot z časové do frekvenční oblasti pomocí modifikované diskrétní kosínové transformace. Ještě před samotnou transformací je buffer se vzorky přenásoben sinovým oknem v závislosti na typu použitého bloku. Kodér MP3 používá adaptivní segmentaci signálu na základě perceptuální entropie a dochází tedy k přepínání délky okna. Použité druhy oken jsou normální, krátké a přechodová start a stop, rovnice lze najít v [1], pro názornost se podívejme na 4.2, který zobrazuje sekvenci zpracování 5 cyklů kodéru, přepnutí z normálního na krátké okno a zpět. Normální okno a přechodová okna se používají na dlouhé bloky délky 36 vzorků, krátké okno na 3 krátké bloky 12 vzorků. V jedné granuli, tedy v jednom výstupu cyklu kodéru, se kóduje buď jedno okno délky 36 vzorků nebo 3
24
KAPITOLA 4. STANDARD MPEG I - PART 3: AUDIO frekvence normální okno krátké okno
32kHz 36ms 12ms
44.1kHz 26ms 8.7ms
48kHz 24ms 8ms
Tabulka 4.2: Délka okna MDCT v závislosti na použitém oknu a vzorkovací frekvenci frekvence šířka pásma
32kHz 27.7Hz
44.1kHz 38.3Hz
48kHz 41.7Hz
Tabulka 4.3: Šířka pásma, určená koeficientem MDCT v závislosti na vzorkovací frekvenci okna délky 12 vzorků. Důvodem k využití více druhů oken je snaha o co nejlepší lokalizaci injektovaného šumu v časové oblasti a zabránění vzniku pre-echa. Přepnutím na krátké okno zmenšíme v časové oblasti délku trvání zpracovávaného signálu na třetinu 4.2 a tím potlačíme pre-echo, neboť bude umístěno do oblasti zamaskované zpětným maskováním. Formát normální start krátké stop
1
koeficient [−]
0.8
0.6
0.4
0.2
0 0
20
40 60 subpásmový vzorek [−]
80
100
Obrázek 4.2: Příklad využití oken v MDCT, sekvence normální-start-krátké-stop-normální
MP3 podporuje využití smíšených bloků oken, tedy že pro nejnižší dvě PQMF subpásma ze 32 se použijí vždy dlouhé bloky a pro ostatní závisí rozhodnutí na psychoakustickém modelu. Je to z důvodu lepší frekvenční lokalizace v oblasti nízkých frekvencí, které je lidské ucho schopno jemněji rozlišit (viz princip kritických pásem). Blok MDCT využívá techniky překrývání (overlap-and-add) s 50% překryvem, tedy pro po sobě jdoucí transformace je vždy využito 18 nejnovějších vzorků z bufferu použitého v minulé transformaci a 18 nových vzorků vzešlých z PQMF. Výstupem MDCT fáze je 576 reálných koeficientů ve frekvenční oblasti, poloviční počet oproti počtu vstupů, každý odpovídající frekvenční šířce závislé na vzorkovací frekvenci 4.3. Vzhledem k využití překrývání tedy opět zůstává kodér kriticky vzorkovaný a počet vzorků je stejný jako počet vzorků původního PCM signálu. V případě použití oken délky 36 vzorků se využívá blok
4.4. KODÉR FORMÁTU MP3 i c
1 -0.6
2 -0.535
3 -0.33
25
4 -0.185
5 -0.095
6 -0.041
7 -0.0142
8 -0.0037
Tabulka 4.4: Koeficient c pro vypočtení koeficientů ca a cs pro redukci aliasingu pro redukci aliasingu, tzv. butterfly, neboli motýlek. Zamezuje vzniku aliasingu následkem budoucí kvantizace, je definován pomocí úseku pseudokódu v C: (* aliasing butterfly *) // sb .. číslo subpásma // xr .. výstupní vzorky MDCT (576) indexované od nejnižší frekvence // xar .. výstupní vzorky motýlka, ve skutečnosti kvantované // ca, cs .. koeficienty motýlka, viz tabulka 4.4 for (sb = 1; sb < 32; sb++) for (i = 0; i < 8; i++){ xar[18*sb-i-1] = xr[18*sb-1-i]*cs[i] - xr[18*sb+i]*ca[i]; xar[18*sb+i] = xr[18*sb+i]*cs[i] + xr[18*sb-1-i]*ca[i]; } , koeficienty csi a cai lze nalézt podle rovnice 4.1, koeficient c je v tabulce 4.4. Vzniklých 576 vzorků je v další fázi už přímo podrobeno kvantizaci. csi = q
4.4.3
1 1 + c2i
, cai = q
ci
(4.1)
1 + c2i
Psychoakustický model
Formát MP3 využívá psychoakustický model (PA model) založený na bázi Psychoakustického modelu 2 popsaného ve standardu. Standard rovněž obsahuje úpravy, které jsou třeba udělat pro kompatibilitu s formátem MP3. Na vstupu PA modelu je signál PCM, který také vstupuje do bloku PQMF. Musíme ovšem dosáhnout správné časové synchronizace. PQMF způsobuje časové zpoždění 256 vzorků, dalším faktorem je délka okna. PA model formátu MP3 využívá FFT o délce 1024 vzorků a dále 3xFFT o délce 256 vzorků. Ty je potřeba správně vystředit na 1152, resp. 384 časových vzorků, jimž odpovídá vstupní buffer MDCT o délce 36 vzorků, resp. 12 vzorků. Před samotnou FFT je třeba vynásobit signál Hannovým oknem kvůli potlačení vlivu ohraničení signálu v časové oblasti. Provedeme 1024 bodou transformaci pro dlouhé bloky a uložíme si zvlášť modul rω a fázi fω jednotlivých frekvenčních koeficientů ω = 0..511. Nyní z předchozích dvou hodnot modulu a fáze vypočítáme predikované hodnoty rˆω a fˆω jako rozdíl dvojnásobku minulé a předminulé hodnoty. Podobně vypočítáme tři 256 bodové FFT pro krátké bloky a spočteme pro ně predikované hodnoty. Nyní vypočítáme nepředvídatelnost (unpredictability measure) cω . Formát MP3 počítá nepředvídatelnost pouze do 206. frekvenčního koeficientu. Prvních šest koeficientů je vypočteno z transformace pro dlouhé bloky, dalších 200 z druhé transformace pro krátké bloky
26
KAPITOLA 4. STANDARD MPEG I - PART 3: AUDIO
tak, že místo ω se využije frekvenční koeficient (ω + 2)/4. Zbylé hodnoty jsou nastaveny na 0,4. Rovnice pro výpočet nepředvídatelnosti je 4.2. Nepředvídatelnost nám říká, jak moc je signál předvídatelný z předchozích dvou výpočtů FFT. Dále budeme využívat faktu, že tonální komponenty signálu jsou dobře předvídatelné narozdíl od šumových komponent. Nepředvídatelnost tedy bude nulová pro plně předpovězený signál.
rω cos(fω ) − rˆω cos(fˆω )
cω =
2
2 0,5
+ rω sin(fω ) − rˆω sin(fˆω )
(4.2)
rω + |ˆ rω |
Další výpočet se provádí v takzvaných výpočetních oddílech (calculation partitions). Jedná se vždy o jeden nebo několik frekvenčních rozsahů daných šířkou koeficientu FFT, pro které budeme počítat zároveň. Přesné rozdělení lze dohledat v tabulkách C.7 v [1]. Zajímavostí je, že tyto tabulky dosahují pouze do frekvence zhruba 20 kHz, a pro vzorkovací frekvence napříkald 44100 Hz nepokrývají celé frekvenční spektrum. Skutečně standard se těmito vysokofrekvenčními pásmy nezabývá a je na implementaci jak si s nimi poradí. Vzhledem k tomu, že lidské ucho je právě 20 kHz shora limitováno, není problém tyto frekvence vůbec nezpracovávat. Vypočítáme tedy ve výpočetních oddílech energii a energii váženou nepředvídatelností. Energie se pro jednotlivé v jednotlivýc oddílech vypočítá jako 4.3, kde b je číslo oddílu. Váženou nepředvídatelnost počítáme podle 4.4, rozsahy součtů pro oddíly viz. tabulky. X eb(b) = r(ω)2 (4.3) cb(b) =
X
cω (ω)r(ω)2
(4.4)
Pro další výpočet budeme potřebovat rozprostřovací funkci (spreading function). Je to funkce, jejíž aplikací způsobíme rozprostření bodové hodnoty do obou stran podle dané proměnné. Formát MP3 používá rozprostřovací funkci vytvořenou na základě Barkové stupnice, tedy dochází k rozprostření energie a nepředvídatelnosti i do okolních výpočetních oddílů. Funkce nabývá hodnot od nuly do jedné a rozprostírá hodnoty do sousedních oddílů, v dalších už se blíží k nule. Algoritmický postup výpočtu funkce lze najít ve standardu. Použití funkce je konvoluce s energií 4.5 a nepředvídatelností 4.6, kde ∗ označuje konvoluci. ecbb(b) = eb ∗ sprdngf
(4.5)
ctb(b) = cb ∗ sprdngf
(4.6)
Dále se vypočítává index tonality. Nabývá hodnot od nuly do jedné. Narozdíl od PA Modelu 1, který striktně odlišuje tonální a šumovou složku, PA Model MP3 označuje jednotlivé složky koeficienty od 0 pro čistě šumovou do 1 pro čistě tonální složku. Toto rozdělení je důležité pro výpočet frekvenčního maskování, neboť šum maskuje silněji než tón. Tonalita se vypočítá na základě nepředvídatelnosti s vyrušením vlivu energie signálu 4.7.
tbb(b) = −0, 299 − 0, 43loge
ctb(b) ecbb(b)
(4.7)
Vypočetli jsme tonalitu a z ní nyní můžeme odvodit odstup signálu od šumu SNR ve všech výpočetních oddílech. Formát MP3 stanovuje maskovací potenciál šumu na 5 dB pod
4.4. KODÉR FORMÁTU MP3
27
amplitudu frekvenční složky šumu a potenciál tónu na 29 dB pod amplitudu frekvenční složky tónu. SNR ještě porovnává vypočtenou hodnotu s minimálním tabulkovým prahem a vybírá vyšší z obou hodnot 4.8, kde minval(b) je minimální tabulkový práh. SN R(b) = max(minval(b), 29 ∗ tbb(b) + 5 ∗ (1 − tbb(b)))
(4.8)
Nyní už vypočítáváme vlastní práh pro jednotlivé oddíly. Práh 4.9 je vypočten na základě rozprostřené energie a SNR, kde norm(b) je tabulkový normalizační koeficient. Tento práh je ještě porovnán s dvojnásobkem předchozího prahu a šestnáctinásobkem předminulého prahu kvůli zabránění výskytu pre-echa a jako práh nbb je zvoleno minimum. Výsledný práh je výsledkem maxima vypočteného prahu a prahu slyšitelnosti (qthr(b)) získaného z tabulek 4.10. nbb(b) = ecbb(b)norm(b)10SN R(b)/10 (4.9) thr(b) = max(qthr(b), nbb(b))
(4.10)
Po výpočtu prahu vypočítáme perceptuální entropii 4.11. Jedná se o aproximaci počtu bitů potřebného k zakódování signálu s daným prahem a energií, kde bw(k) je počet frekvenčních koeficientů v k-tém výpočetním oddíle. Na základě percetuální entropie je určen typ bloku, tedy délka okna , které bude využito v MDCT bloku. Formát MP3 přechází na krátké bloky v případě, že hodnota perceptuální entropie přesáhne 1800 bitů, podle stavového diagramu 4.3, kde „attack“ znamená překročení prahu perceptuální entropie a „no attack“, že entropie nedosáhla 1800 bitů. Důležité je, že v případě přesáhnutí prahové hodnoty perceptuální entropie se změní i typ předchozího bloku z normálního na start, čímž dojde k sepnutí krátkého bloku přesně v čase potřeby a nikoliv o jeden blok později. pe = −
X
thr(k) bw(k)log eb(k) + 1
no attack
normalni
no attack
attack
start
attack stop
no attack
kratke attack
Obrázek 4.3: Stavový diagram přepínání oken
(4.11)
28
KAPITOLA 4. STANDARD MPEG I - PART 3: AUDIO
Nyní už zbývá jen dopočítat poměr zkreslení (ratio). Postup je v podstatě stejný pro dlouhé i krátké bloky, my si přiblížíme výpočet pro dlouhý blok z důvodu zachování přehlednosti. Hlavním úkolem je nyní převést hodnoty energie z výpočetních oddílů, které jsme dosud používali, do skupin scalefactorů (scalefactor bands). Každá tato skupiny obsahuje jeden nebo několik oddílů, kolik přesně specifikuje tabulka C.8 [1]. Vypočítáme energii 4.12 a práh 4.13 v každé skupině, konstanty w1, w2, a rozsahy bu a bo jsou též k nalezení v tabulce C.8 Poté pro každou skupinu získáme poměr zkreslení jako jejich podíl 4.14. Tento poměr zkreslení spolu s typem bloku a perceptuální entropií je výstupem PA modelu pro kvantizér. en(sb) = w1(sb)eb(bu) +
bo−1 X
eb(b) + w2(sb)eb(bo)
(4.12)
thr(b) + w2(sb)thr(bo)
(4.13)
b=bu+1
thrn(sb) = w1(sb)thr(bu) +
bo−1 X b=bu+1
ratio(sb) =
4.4.4
thrn(sb) en(sb)
(4.14)
Kvantizace
Kvantizace probíhá postupně ve třech vnořených smyčkách. První z nich je hlavní smyčka kodéru, která pro každou granuli provede vynulování iteračních proměnných a pokud nejsou všechny vstupy nulové, zavolá druhou, tzv. vnější smyčku. Hlavní smyčka též zodpovídá za výpočet počtu nevyužitých bitů. Vnější smyčka nejprve zavolá třetí, tzv. vnitřní smyčku. Provádí též výpočet zkreslení pro všechny skupiny scalefactorů (scalefactor bands). Výpočet se provádí na základě rovnice 4.15, kde xf sf je zkreslení, sb značí jednotlivé skupiny se stejným scalefactorem, lbl značí první koeficient spadající do příslušné skupiny a bw počet koeficientů ve skupině, xr označuje koeficient z MDCT, ix je kvantovaný koeficient, qquant je kvantizační koeficient a quantanf je systémová konstanta. Vypočtené zkreslení se porovnává s povoleným zkreslením xmin, která vznikla na základě přepočtu podle energie signálu z parametru ratio, což je poměr vypočtený v psychoakustickém modelu. Vnější smyčka ukládá scalefatory po pozdější použití. V případě detekce přesažení povoleného zkreslení některé skupiny kvantovaných koeficientů provádí zvětšení scalefactorů. lbl(sb)+bw(sb)−1
xf sf (sb) =
X i=lbl(sb)
|xr(i)| − ix(i)4/3 ∗
√ 4
2qquant+quantanf
bw(sb)
2
(4.15)
Vnější smyčka má několik ukončujících podmínek. Ukončí se, pokud již jsou všechny skupiny scalefactorů zesíleny, pokud už by byl požadován scalefactor, který není možné přenést (formát MP3 umožňuje přenést maximálně 4 bity resp. 3 bity jako scalefactor v závislosti na použitém okně a skupině) nebo pokud všechny skupiny obsahují menší než povolené zkreslení. Je také možno ukončit kvantizaci, pokud výpočet trvá příliš dlouho, neboli omezit výpočet časovým limitem. Vnitřní smyčka provádí vlastní kvantizaci. Kvantizace provedená na frekvenčních koeficientech vypočtených v MDCT je nelineární, koeficient je umocněn na 34 . Je to z důvodu
4.4. KODÉR FORMÁTU MP3
29
rozprostření šumu rovnoměrně do libovolné amplitudy koeficientu, při lineárním rozdělení totiž koeficienty s menší hodnotou obsahují relativně vyšší chybu. Kvantizace vzorků se provádí podle 4.16, kde ix je kvantovaný vzorek, xr je frekvenční koeficient z MDCT, qquant je kvantizační koeficient, quantanf je systémová konstanta a nint() zaokrouhlí výsledek na nejbližší celé číslo. Jestliže se maximální takto vypočtená hodnota nevejde do žádné z Huffmanových tabulek, zvětší se krok kvantizéru. Provede se výběr Huffmanovy tabulky, která nejlépe vyhovuje požadavkům signálu a přináší nejlepší kompresi a kvantizované vzorky se zakódují(viz. níže). Po zakódování je proveden výpočet počtu použitých bitů. Jestliže počet bitů je vyšší než dostupný počet, zvětší se kvantizační krok a provede se znovu kvantizace. Jestliže počet bitů vyhovuje, vnitřní smyčka je ukončena. ix(i) = nint
√ 4
|xr(i)| 2qquant+quantanf
0,75
!
!
− 0, 0946
(4.16)
V rámci kvantizace se ještě v krátkosti zmiňme o využití nepoužitých bitů při kvantizaci. Tyto bity formát MP3 dále používá. Narozdíl od I a II vrstvy standardu formát MP3 v kvantizéru využívá takzvaný zásobník bitů (bit reservoir). Do tohoto zásobníku jsou přidány nevyužité bity z jednotlivých MP3 rámců. Jestliže se vyskytne v signálu oblast, která potřebuje více bitů nežli nabízí MP3 rámec, potom je možné využít bity uložené v zásobníku bitů. To souvisí s ukazatelem na data v MP3 rámci a také s tím, že kódovaná data nejsou prostorově omezena vnitřkem rámce, ale mohou být uložena dříve nežli hlavička příslušného rámce. O tom více v odstavci o bitovém toku níže. Samozřejmě není možné mít v zásobníku bitů neomezený počet bitů. Jsme limitování velikostí vstupního bufferu a počtem bitů využitých pro ukazatel na data. Vstupní buffer je takový, že pro maximální vzorkovací frekvenci, tedy 48 kHz, kdy v jednom rámci je 1152 hodnot (dvojice 576 kvantizovaných vzorků), je potřeba za 1 sekundu přenést 41,6 rámců, tedy na jeden rámec připadá maximálně (při datovém toku 320 kbps) 7680 bitů. Vzhledem k tomu mají MP3 soubory při kvalitě 320 kbps všechna data vždy v příslušném MP3 rámci, neboť nemohou využít bitový zásobník. Jeden rámec tedy ve svých dvou granulích nemůže využít více než 7680 bitů. Druhé omezení je velikost ukazatele. Ten odkazuje na celé byte a je devítibitový, přeskakuje hlavičky a postranní informace, může tedy ukazovat maximálně 4096 bitů před začátek rámce příslušného ukazateli. Ukazatel může ukazovat pouze na minulá data, není možné aby odkazoval dále než na první využitelný byte vlastního rámce. Veškeré nevyužité bity v rámcích které už není možné z důvodu těchto omezení zaplnit se vyplní bitovým stuffingem, tedy nadbytečnými daty v případě, že se využívá konstantní bitrate.
4.4.5
Huffmanovo kódování
Formát MP3 využívá bezeztrátovou kompresi na bázi Huffmanova kódu. Huffmanovo kódování probíhá přímo v kvantizéru, neboť teprve po tomto kódování známe velikost zakódovaných dat a můžeme určit, jestli je potřeba další kvantizace nebo nikoliv. Frekvenční spektrum signálu získaného kvantizací vzorků z MDCT se skládá z několika složek. První z nich se nazývá „bigvalues“ a skrývá se pod ní oblast s nejvyššími hodnotami koeficientů, začínajících od stejnosměrné složky. Druhá část se skládá z hodnot, které v absolutní hodnotě nepřesahují jedničku. Poslední částí je oblast nul, které nekódujeme, počet nul dopočítáme
30
KAPITOLA 4. STANDARD MPEG I - PART 3: AUDIO
z počtu předchozích dvou složek. Hranice mezi těmito třemi složkami se vypočítají průchodem koeficientů frekvenčního spektra od nejvyšších po nejnižší frekvence. Nejdříve se ukládá oblast „bigvalues“. Počet těchto koeficientů je sudý. Dále ji rozdělíme na tři části, každou z nich zakódujeme vlastní Huffmanovou tabulkou. Určení hranice mezi těmito třemi částmi je ponecháno na implementaci, ve standardu je doporučeno pro jednoduchost použít 1/3 skupin scalefactorů (scalefactor bands) pro první část, 1/4 skupin pro druhou část a zbytek pro třetí část. Pro každou z těchto částí je možné vybrat jednu ze 32 Huffmanových tabulek v závislosti na maximální hodnotě prvků v jednotlivých částech. Prvky se kódují vždy po dvojicích v absolutní hodnotě a poté jednobitové znaménko, je-li třeba. Tabulky jsou omezeny maximální hodnotou 15, je ovšem možné použít tabulku obsahující namísto čísla 15 takzvaný únikový znak (escape character) a definovaný počet bitů, maximálně 13, dále určí hodnotu prvku. Maximální uložitelná hodnota je tedy 8192 + 14 = 8206. Druhou částí je souvislé pásmo hodnot s absolutní hodnotou nepřevyšující jedničku. Pro toto pásmo jsou ve standardu definovány dvě tabulky. Délka této posloupnosti musí být násobkem 4, neboť se kódují vždy 4 prvky současně. Kódujeme absolutní hodnoty prvků , pokud nejsou tyto nulové, zapíšeme do bitového toku za kódové slovo ještě znaménka nenulových hodnot, nulu pro kladné a jedničku pro záporné číslo. Jestliže po zakódování zbyly nějaké nulové koeficienty, jejich počet se doplní v dekodéru jako rozdíl 576 a počtu přijatých koeficientů.
4.4.6
Cyklický redundantní součet
Cyklický redundantní součet se využije v případě, že v hlavičce je nastaven příznak protection_bit na nulu. Ve formátu MP3 se využívá CRC-16, tedy 16-bitové zabezpečení s generujícím polynomem 4.17. Kontrolní součet se ukládá v bitovém toku přímo za hlavičku. Oproti standardnímu CRC poznamenejme, že posuvný registr začíná pracovat se všemi hodnotami nastavenými na jedničku místo na nulu. V dekodéru se provádí znovu kontrolní součet a porovnává se výsledkek s přenesenou hodnotou, v případě shody je rámec označen jako správně přenesený. Zabezpečeny jsou bity 16..31 z hlavičky MP3 rámce, a postranní informace (audio_data) a to bity 0..135 v jednokanálovém módu a 0..255 v jiném módu. Jestliže je pomocí CRC odhalena chyba, potom je chybný blok buď utlumen, nebo se využije blok předchozí a přehraje se znovu, což je z poslechového hlediska schůdnější než přehrání chybného bloku, kdy hrozí možnost přehrání absolutně nahodilých dat. G(X) = X 16 + X 15 + X 2 + 1
4.5
(4.17)
Dekodér Vstup
Nacteni
Huffman Rekvantizace
576
IMDCT
32
PQMF
Vystup PCM
synteza
Obrázek 4.4: Schéma MP3 dekodéru Dekodér formátu MP3 4.4 je mnohem jednodušší a je v podstatě inverzní verzí jednotlivých bloků kodéru, proto si ho popíšeme pouze ve stručnosti. Nejprve je potřeba dekódovat
4.6. BITOVÝ TOK
31
MP3 rámec a identifikovat v něm všechny parametry nutné k rekvantizaci a samozřejmě data zakódovaná Huffmanovým kódem. Ty se nejprve dekódují a vznikne nám posloupnost hodnot kvantovaných frekvenčních koeficientů. Tyto rekvantizujeme a dostáváme hodnoty ve správném měřítku. Pokud se jedná o dlouhé bloky, použijeme na ně opět blok redukce aliasingu, který jsme již popsali v podkapitole o MDCT. Všechny hodnoty zpracujeme v inverzní MDCT, která převede koeficienty z frekvenční do časové oblasti. Vzniklé hodnoty přenásobíme stejnými okny, která jsme využili v MDCT bloku. Využijeme metodu 50% překrývání vzorků a sčítání, která potlačí aliasing vzniklý v časové oblasti. Výstupem je 36 vzorků pro každé ze 32 subpásem. Každý vzorek doplníme 31 nulami, takže nám vznikne pro každé subpásmo 1152 časových vzorků. Každé subpásmo znovu filtrujeme PQMF bankou filtrů, tentokrát využijeme filtry pro syntézu, kde jediný rozdíl oproti analytické části je vynásobení prototypu filtru 32 kvůli vyrovnání energie signálu přidáním 31 nul a opačná fáze kosínu kterým modulujeme prototyp. Provedeme aditivní syntézu vzniklých 32 signálů, tedy prvky signálů se stejným časovým indexem sečteme a dostáváme 1152 vzorků PCM signálu, který je možné přehrát pomocí standardního PCM přehrávače.
4.6
Bitový tok
Bitový tok formátu MP3 je tvořen posloupností rámců (frame). Definice rámce vychází z představy I. a II. vrstvy standardu, kde rámec je definován jako samostatně dekódovatelná jednotka bitového toku. Tato definice ovšem pro MP3 nevyhovuje, neboť díky využití zásobníku bitů se nemusí data příslušející rámci nacházet uvnitř tohoto rámce a samotný rámec by tak nebyl dekódovatelný. Definice rámce MP3 říká, že se jedná o část kódu, kterou lze dekódovat s využitím předchozích informací. Tato definice nepatří mezi nejšťastnější, a samotný standard z ní vybočuje, když dále jako rámec prezentuje odlišnou strukturu. Poznamenejme, že rámec obsahuje vždy celočíselný počet bytů, což usnadňuje hledání počátku rámce. Pod pojmem rámec si tedy představme datovou strukturu složenou ze dvou až čtyř položek. První z nich je hlavička rámce, poté následuje nepovinná kontrola chyb, dále navazují audio data a poslední jsou opět nepovinná doplňková data. Jeden MP3 rámec obsahuje dvě granule. Granule je kódovací jednotka kodéru, obsahuje 576 kvantizovaných frekvenčních koeficientů a je výstupem jednoho programového cyklu kodéru. To znamená, že rámec obsahuje 1152 kvantizovaných a kódovaných hodnot koeficientů MDCT. Velmi dobře je struktura bitového toku popsána ve standardu [1].
4.6.1
Hlavička
Hlavička (header) je čtyřbajtová posloupnost obsahující informace o vnitřní struktuře MP3 rámce. Prvních dvanáct bitů nastavených na ’1’ označuje synchronizační slovo (syncword), které určuje počátek rámce. Další bit určuje ID a je nastaven na ’1’ pro standard ISO/IEC 11172-3, bývá většinou vyhledáván v rámci lepší detekce synchronizačního slova spolu s ním. Další dva bity určují vrstvu standardu, která je využita v rámci, pro vrstvu III a tedy MP3 formát jsou tyto bity nastaveny na ’01’. Ochranný bit (protection bit) určuje, zda je využit kontrolní součet CRC a tím pádem jestli MP3 rámec obsahuje část kontroly chyb. Při kontrole chyb je ochranný bit nastaven na ’0’. Čtyřbitový bitrate index označuje šířku bitového toku v rámci. Pro 320kbps je nastaven na ’1110’. Vzorkovací frekvence je uložena
32
KAPITOLA 4. STANDARD MPEG I - PART 3: AUDIO
příznaky příklad
syncword privátní bit 111111111111 0
ID mód 1 00
vrstva mód ext. 01 00
ochrana copyright 1 1
bitrate original 1110 0
vzork. fr. zvýraznění 00 00
výplň 1
Tabulka 4.5: Hlavička MP3 rámce a příklad dvěma bity, pro 44100 Hz jsou nastaveny na ’00’. Bit výplně (padding bit) určuje, zda je do bitového toku vložen jeden byte jako stuffing. Vyrovnává odchylky v bitrate a používá se primárně při vzorkování 44100 Hz. Pokud je nastaven na ’1’, je vložen byte stuffing. Privátní bit slouží k uložení dodatečných informací pro programátory kodéru, standard pro tento bit deklaruje, že nebude nikdy v rámci něj využit. Další dva bity označují mód, to znamená jestli se jedná o mono či stereo (dva typy), případně nezávislé kanály (využitelné například při dabingu). Pro stereo jsou tyto bity nastaveny na ’00’. Další dva bity, rozšíření módu, definují který typ kódovací techniky pro provázané stereo bude použit, hodnota ’00’ určuje, že je využito standardní stereo. Copyright bit určuje, jestli se na daný MP3 rámec vztahují autorská práva, hodnota ’1’ znamená, že jsou data autorsky chráněna. Bit original/copy určuje, jestli je MP3 rámec originál nebo kopie, ’1’ znamená originál. Posledními dvěma bity hlavičky jsou bity zvýraznění (emphasis), které zvýrazní vysoké frekvence. Tento příznak se téměř nepoužívá a je proto nastaven na ’00’. V tabulce 4.5 vidíme názorně jednotlivé příznaky v hlavičce MP3 formátu a konkrétní možnou podobu hlavičky sestavenou z příkladů uvedených v tomto odstavci.
4.6.2
Kontrola chyb
Dvoubajtová část MP3 rámce, která se objevuje v závislosti na ochranném bitu. Obsahuje šestnáctibitový zbytek po dělení vzniklý algoritmem CRC16.
4.6.3
Audio data
Tato část obsahuje informace o signálu, který přenášíme. Skládá se z postranních informací (side_information) a hlavních dat (main_data). Postranní informace začínají devítibitovým ukazatelem na hlavní data (main_data_begin). Ten může odkazovat i do předchozích rámců a označuje začátek hlavních dat příslušných rámci. Ve stručnosti zmiňme další data, která obsahují postranní informace. Jedná se především o globální zesílení (global_gain) určující správnou rekvantizaci vzorků. Obsahuje též rozdělení zakódovaných kvantizovaných hodnot do skupin podle použité Huffmanovy tabulky a samotnou informaci, která tabulka pro kterou skupinu byla použita, použítý typ okna v MDCT bloku a také počet bitů použitých k zakódování scalefactorů v hlavních datech. Pro krátké bloky navíc obsahuje také subblokové zesílení (subblock_gain), což je obdoba globálního zesílení, ale každé krátké okno má svou vlastní hodnotu subblokového zesílení. Hlavní data obsahují scalefactory vztahující se ke kódovaným kvantizovaným hodnotám v počtu bitů definovaných v postranních informacích. Dále obsahují samotné kvantizované hodnoty zakódované Huffmanovým kódem a jejich znaménka. Zakódované hodnoty jsou
4.7. SHRNUTÍ
33
rozděleny do čtyř skupin pomocí hodnot z postranních informací, pro každou skupinu je v postranních informacích definováno kterou tabulkou byla zakódována, což zajistí dekódovatelnost.
4.6.4
Doplňková data
Jedná se o část na konci MP3 rámce, která je plně uživatelsky definovatelná. V bitovém toku je určená jako začínající za poslední Huffmanovým kódovým slovem a končící před bytem, na který odkazuje ukazatel na začátek hlavních dat z dalšího rámce.
4.7
Shrnutí
V této kapitole byl stručně vyložen standard MP3. Samozřejmě existuje mnoho detailů, které v rámci přehlednosti a srozumitelnosti textu byly vypuštěny, jmenujme například informace o přehrávání dvoukanálového zvuku, detailní popis bitového toku a podobně. Autor se domnívá, že podstatné informace byly uvedeny a že čtenář, který si prostudoval tuto kapitolu, se jednoduše zorientuje přímo ve standardu a literatuře při dohledávání dalších podrobností.
34
KAPITOLA 4. STANDARD MPEG I - PART 3: AUDIO
Kapitola 5
Experimenty s kodérem v Matlabu 5.1
Úvod
Tato kapitola využívá poznatky předchozích kapitol, s jejichž pomocí v matematickém software Matlab ve verzi R2009b vznikl funkční psychoakustický kodér založený na principu MP3 kodéru. V první části této kapitoly si přiblížíme jednotlivé funkční bloky tohoto kodéru, zaměříme se na rozdíl oproti MP3 kodéru a způsob uložení dat. Druhá část se potom zabývá experimenty, které se podařilo s tímto kodérem provést, jedná se jak o testování funkčnosti bloků, tak o experimenty s psychoakustickou kompresí různých typů signálů, mimo jiné i celé hudební nahrávky.
5.2 5.2.1
Kodér v Matlabu Matlab
Dříve než se pustíme do samotného popisu kodéru, je třeba si vyjasnit, proč byl zvolen právě matematický software Matlab, jaké jsou jeho přínosy pro práci a jaké jsou jeho nevýhody. Mezi přínosy patří jednoduchá práce s daty, proměnné není třeba deklarovat, implicitním datovým typem je typ s plovoucí desetinnou čárkou double, lze provést přetypování i na celočíselné typy. Syntaxe a sémantika jazyka se podobá programovacímu jazyku C, lze využít již předpřipravených funkcí, které významně usnadňují práci, a v neposlední řadě lze velmi jednoduše data zobrazit pomocí různých druhů grafů, což pomáhá prezentovat dosažené výsledky. Většina grafů v této práci je přímým výstupem z Matlabu. Nyní se zaměřme na nevýhody. Hlavní z nich je bohužel již v samotném návrhu tohoto software, neboť v případě napsaného kódu v Matlabu se nejedná o kompilovaný ale interpretovaný překlad. Matlab je vysoce optimalizovaný z pohledu provádění maticových operací jak již napovídá název, bohužel provádění typických smyček v kódu je velice pomalé. I přes mnohačetné optimalizace je tedy běh kodéru pomalý oproti komerčně užívaným kodérům napsaným například právě v programovacím jazyce C. I přes tyto nevýhody ovšem převažují výhody Matlabu, proto bylo rozhodnuto vytvořit kodér právě v tomto matematickém software. Veškeré zdrojové kódy kodéru, včetně zdrojových kódů dekodéru, lze najít na přiloženém CD ve složce matlab.
35
36
5.2.2
KAPITOLA 5. EXPERIMENTY S KODÉREM V MATLABU
Popis kodéru
PCM vstup
Vystup
PQMF
32
MDCT
576
Kvantizace
576
Ulozeni
Huffman
PA model Obrázek 5.1: Schéma navrženého kodéru Na obrázku 5.1 vidíme schéma navrženého kodéru. Tento obrázek se příliš neliší od kodéru formátu MP3 4.1. Navržený kodér skutečně přímo vychází z kodéru formátu MP3, jednotlivé kódy lze dohledat na přiloženém CD ve složce matlab. Náš kodér si rozdělíme na dvě části. Front-end, který se stará o mapování signálu z časové do frekvenční oblasti a výpočet psychoakustických parametrů signálu, a back-end, který provádí kvantizaci a uložení do souboru. Jako front-end navrženého kodéru jsme použili PQMF blok a MDCT blok pro časově frekvenční mapování a Psychoakustický model 2 pro výpočet parametrů MDCT a povoleného zkreslení. Tato část byla naprogramována podle postupů ovedených v informativní části standardu [1]. Kódy jednotlivých částí se nacházejí v příznačně pojmenovaných souborech, PQMF blok je uložen v souboru PQMF.m, MDCT blok v MDCT.m a Psychoakustický model 2 v souboru Psychomodel.m. Další informace o této části lze získat v předchozí kapitole. Zajímavější pro nás nyní bude popis back-endu kodéru, neboť ten je sice též vytvořen na základě standardu, ale jedná se o zjednodušenou verzi. Zjednodušení se týká způsobu kvantizace a uložení vzorků, a je odůvodněno rozsahem této práce. Toto zjednodušení nemá vliv na předvedené psychoakustické principy, ovšem dochází k nižšímu dosaženému kompresnímu poměru, řádově o 10%, což lze dovodit z další možné komprese provedené komerčními bezeztrátovými kompresními software. Vzhledem k tomu, že se jedná o experimentální kodér, byla provedena drobná úprava průběhu zpracování, nedochází k proudovému zpracování, ale k sériovému. Tento fakt nemá žádný vliv na výsledky. Sériové zpracování můžeme použít, neboť nejsme omezeni paměťovými nároky výpočtu jako v komerčních zařízeních. Kodér též pro udržení srozumitelnosti zpracovává jednokanálový signál. Nyní se důkladněji seznámíme s jednotlivými funkčními bloky back-endu našeho kodéru. Kód kvantizéru je uložen v souboru QUANTIZER.m. Jeho vstupními parametry jsou frekvenční koeficienty vzniklé v MDCT bloku a výstupy psychoakustického modelu, jmenovitě typ bloku a povolené poměry zkreslení. Kvantizér pracuje ve dvou vnořených smyčkách. Vnější smyčka iteruje postupně po 576 frekvenčních koeficientech, to jest po granulích. Vnitřní smyčka provádí samotnou kvatizaci. Kvantizace probíhá obdobným způsobem jako v kodéru MP3, s tím rozdílem, že scalefactory zde mají poněkud zjednodušený význam. Kvantizace je nelineární z důvodu zachování poměrů odstupu šumu od signálu nezávisle na hodnotě frekvenčních koeficientů. Kvantizér postupně pro všechny pásma scalefactorů zvyšuje hodnoty scalefactorů o jedničku, dokud nedosáhne poslední hodnoty zkreslení menší než je povolené zkreslení. Zkreslení je vypočteno podle stejného vzorce jako v MP3 kodéru
5.2. KODÉR V MATLABU délky kódových slov
37 kódová slova
zakódovaná data
Tabulka 5.1: Formát souboru zakódovaného v Huffmanově kódu 4.15. Hodnota scalefactoru v tomto kvantizéru udává, kolik bitů, počítáno od nejnižšího bitu, bylo z koeficientů oříznuto. Tento počet bitů je tedy nastaven u všech koeficientů v rámci jedné skupiny na nuly, a není ho nutné přenášet pokud přeneseme hodnotu samotného scalefactoru. Specifikace kodéru MP3 se nezabývá frekvenčními koeficienty, které odpovídají frekvencím vyšším než je zhruba 16 kHz. Pro tyto koeficienty je v našem kodéru nastaven scalefactor o pět bitů vyšší než pro poslední koeficient kterému je ještě scalefactor vypočítán. Z dosažených výsledků je patrné, že tyto koeficienty nabývají v měřítku dB hodnot menších než práh slyšitelnosti, vhodnější volbou může být jejich prosté vynulování. Nyní se zaměříme na uložení dat. O uložení se v navrženém kodéru stará blok definovaný v souboru SAVER.m. Ačkoliv kodér zpracovává data sériově a bylo by možné uložit jednotlivé datové prvky po sobě, tedy nejprve typy bloků, poté scalefactory a nakonec kvantizované koeficienty MDCT, ukládáme data v podobě blížší standardu [1]. Blok pro uložení dat ukládá data po granulích, tak jak jsou kvantizována. Jeden uložený blok dat obsahuje nejprve 2 bity, které označují typ bloku MDCT. Na základě vyhodnocení těchto dvou bitů se následující postup provede buď jedenkrát pro normální, start a stop blok, nebo třikrát pro krátký blok. Načtou se čtyři bity, identifikující kompresi scalefactorů, jak je udána ve standardu pomocí příznaku scalefactor_compress. Z těchto čtyř bitů se určí, kolikabitové jsou jednotlivé scalefactory a uloží se v tomto počtu bitů. Nyní už se uloží v závislosti na typu bloku 576 nebo 192 kvantizovaných frekvenčních koeficientů, počet bitů záleží na již uložených scalefactorech. Tímto způsobem zakódování je zajištěna jednoznačná dekódovatelnost dat. Takto zakódovaná data se ukládají do souboru definovaného parametrem bloku. Uložením přímo do souboru je poté jednodušší porovnat velikost takto uloženého souboru se souborem, který dále používá Huffmanovo kódování. Huffmanovo kódování využijeme jako způsob bezeztrátové komprese dat. V MP3 kodéru se Huffmanovo kódování používá v každém rámci dat, navíc se využívá několika tabulek v závislosti na frekvenčních charakteristikách signálu. V našem experimentálním kodéru provádíme Huffmanovo kódování souboru, ve kterém jsou uložena kvantizovaná data. Jako jeden symbol budeme uvažovat byte souboru. Huffmanovu tabulku vytvoříme dynamicky na základě pravděpodobnostního rozdělení znaků. Navíc budeme potřebovat symbol, který označí ukončení dat v zakódovaném souboru, neboť v praxi není délka zakódovaného souboru celistvým počtem bytů, dochází k doplnění posledního bytu nulami a tím ke zmatení při dekódování. Jestliže při dekódování tedy narazíme na ukončovací symbol, dalši bity již nedekódujeme. Máme tedy 257 přípustných symbolů. Formát zakódovaného souboru lze popsat tabulkou 5.1. Nejprve zakódujeme ve 257 bytech délky jednotlivých kódových slov, každé kódové slovo má délku nižší než je 256. Posléze se v souboru nacházejí samotná kódová slova, v již známém počtu bitů. Nakonec jsou v souboru zakódovaná data a za nimi ukončující symbol. Kódová slova a zakódovaná data se do souboru ukládají v invertovaném pořadí bitů kvůli postupu práce Matlabu při čtení ze souboru. Abychom odůvodnili využití Huffmanova kódování, je zapotřebí znát pravděpodobnostní rozdělení výskytů jednotlivých symbolů v datech, čímž zjistíme, zda-li má vůbec smysl ho využívat. Pokud by se jednalo o rovnoměrné
38
KAPITOLA 5. EXPERIMENTY S KODÉREM V MATLABU
rozdělení, nepřineslo by nám takové kódování žádný užitek. Na obrázku 5.2 vidíme pravděpodobnostní rozdělení zakódovaných experimentálních hudebních dat ze souboru hudba.wav. Je vidět, že rozložení je značně rozvážené, více než 62% dat představuje pouze 3 hodnoty symbolů, to jest 1% z celkového počtu symbolů, a to díky kvantizaci a nerovnoměrnému rozložení energie ve zvukových signálech obecně 3.3. V takovémto případě je Huffmanovo kódování opodstatněné. Využitím tohoto druhu komprese jsme dosáhli kompresního poměru až 1:2 oproti původnímu uloženému souboru. V navrženém kodéru se o Huffmanovo kódování stará blok uložený v souboru HuffmanCoder.m. Samozřejmě pro zjištění funkčnosti kodéru 6
6
x 10
5
frekvence [−]
4
3
2
1
0 0
50
100
150 znak [−]
200
250
300
Obrázek 5.2: Frekvence výskytu znaků ve výstupním souboru kodéru je potřeba vytvořit též dekódovací část. Zdrojové kódy se též nacházejí ve složce matlab přiloženého CD, jedná se o inverze bloků kódéru provedené v opačném pořadí. Jsou implementovány bloky pro dekódování ze souboru zakódovaného Huffmanovým kódem, načtení dat, inverzní MDCT a PQMF syntézu, čímž vytvoříme opět signál ve formátu PCM. Z představených bloků je vytvořen celý řetězec pro zpracování PCM signálu. Ten je uložen v souboru EXP5.m, je spustitelný přímo svým názvem z konzole Matlabu, jestliže přepneme pracovní složku na složku s kódem. Tento kód provede zakódování do psychoakustického formátu a poté i zpětný převod do PCM. Kodér a dekodér jsou sloučeny v jednom souboru z prostého důvodu, totiž aby veškerá výstupní data bloků po provedení kódu byla přímo uchována ve workspace pro další práci. Zakódovaná, ale i opět dekódovaná data jsou uložena na disk do složky output, nacházíme-li se v pracovním adresáři projektu v Matlabu. Zvukové soubory jsou zpětně dekódovány do formátu PCM a jsou na PC přehratelné. Výsledná dekódovaná data ve workspace Matlabu najdeme vždy ve vektoru IPQMFOUT, jejich přehrání můžeme zařídit pomocí příkazu soundsc.
5.3
Průběh experimentů
Představili jsme si kódovací řetězec, a nyní budou popsány některé experimenty, které s jeho pomocí byly provedeny. Experimenty budou udržovat jednotnou strukturu, každý
5.4. ZJIŠTĚNÍ CHYBY VZNIKLÉ PQMF FILTRACÍ
39
experiment bude umístěn ve své vlastní podkapitole. Každá podkapitola, která ponese název experimentu, se bude dělit na další části, které osvětlí samotný průběh experimentu. První částí budou cíle experimentu, to znamená co experiment zkouší, co ověřuje, jaké jsou očekávané výsledky. Druhou částí bude postup, jakým k naznačeným cílům dojdeme. Bude též odkazovat na kód, kterým experiment spustíme, zadáním názvu souboru bez přípony do konzole Matlabu. Tento kód bude uložen na přiloženém CD ve složce matlab. Bohužel toto řešení není příliš přehledné, ovšem umožní spustit kód bez dalšího nastavování prostředí Matlab. Před spuštěním je nutné složku s kódy nahrát na médium umožňující zápis, tedy na pevný disk, flash paměť atd. Třetí část bude prezentovat výsledky experimentu, hodnoty, tabulky nebo grafy, které jsme získali uvedeným postupem. Poslední částí každého experimentu bude zhodnocení, ve kterém porovnáme obdržené výsledky s předpokládanými a shrneme přínos experimentu. Jako testovací data budeme používat tři soubory ze složky matlab\signaly. Prvním z nich je čistý tón o frekvenci 1 kHz a amplitudě rovné čtvrtině 16b rozsahu, uložený v souboru sin.wav. Druhým testovaným souborem je mikrofonem nahraný zvuk činelu hi-hat bicí soupravy, který prezentuje šumový signál, uložený je v souboru cinel.wav. Posledním testovaným signálem je jednokanálový hudební záznam písně „Slepá víra“ z CD hudební skupiny „Rádobi“, který je použit s jejich souhlasem. Je uložen v souboru hudba.wav. K porovnání bezeztrátové komprese dosažené Huffmanovým kódem a bezeztrátové komprese, kterou bychom dosáhli nejmodernějším kompresním software, byl použit komerční software WinRAR [12].
5.4 5.4.1
Zjištění chyby vzniklé PQMF filtrací Cíle
Jak jsme se již dozvěděli, PQMF filtrace není dokonalá, to znamená že již ze své podstaty při jejím průběhu vznikají chyby nenumerického rázu. Jedná se o aproximaci dokonalých kvadraturních filtrů, které dělí vstupní PCM signál do 32 frekvenčních subpásem. Cílem tohoto experimentu je na testovaných datech hudba.wav zjistit velikost průměrné a maximální chyby a rozložení chyb po analýze a syntéze signálu pomocí PQMF, bez jakékoliv úpravy signálu.
5.4.2
Postup
Tento experiment provedeme spuštěním kódu EXP1.m. Nejprve načteme data ze souboru, poté provedeme filtraci pomocí PQMF bloku pro analýzu a následně provedeme pomocí bloku PQMF pro syntézu sloučení jednotlivých subpásem opět do jednoho signálu. Výsledky časově zarovnáme kvůli zpoždění PQMF banky filtrů, a poté od sebe odečteme původní signál a signál získaný filtrací, čímž nám vznikne rozdílový signál. Spočítáme průměrnou a maximální hodnotu z absolutních hodnot tohoto signálu, které nám vyjádří průměrnou a maximální chybu. Zjistíme procentuální podíl jednotlivých hodnot chyby v signálu.
5.4.3
Výsledky
Vzhledem k počtu vzorků je graf chyby nevhodnou reprezentací výsledků a proto si vystačíme s popsáním hodnotami. Průměrná chyba PQMF filtrace použité v kodéru pro
40
KAPITOLA 5. EXPERIMENTY S KODÉREM V MATLABU
dělení signálu do frekvenčních subpásem je chp ≈ 0, 457. Maximální chyba chmax = 3, 7. Více než 62% časových vzorků nebylo zatíženo chybou a více než 36% vzorků bylo zatíženo chybou pouze v nejnižším bitu.
5.4.4
Zhodnocení
Průměrná chyba skutečně dosahuje malých hodnot. Hodnota 0, 457 je menší, nežli je polovina kvantizační jednotky kodéru, proto takováto chyba neovlivní kvalitu zpracovávaných dat. Bohužel maximální chyba dosahuje desetinásobné hodnoty, což vede k degradaci zvukové kvality, konkrétně se jedná o zmenšení odstupu signálu od šumu až o 12 dB. Zhodnotíme-li procentuální podíl výskytu chyb, zjistíme že u téměř dvou třetin vzorků k chybě nedochází, a u třetiny vzorků je chyba maximálně v nejnižším bitu, což odpovídá snížení odstupu signálu od šumu o 6 dB. Použití PQMF filtrace tedy nezpůsobí katastrofální následky pro zpracováváný signál, přesto jsou jeho nevýhody patrné a bylo by výhodnější využít místo ní jinou, dokonalou metodu pro dělení frekvenčních složek do subpásem.
5.5 5.5.1
Zjištění chyby vzniklé transformací MDCT Cíle
Narozdíl od PQMF filtrace je MDCT, vycházející z diskrétní Fourierovy transformace, dokonalou metodou pro transformaci z časové do frekvenční oblasti. Vzhledem k tomu by chyba vzniklá touto transformací měla být pouze numerického rázu, tedy řádově nižší než je kvantizační chyba a nemělo by docházet k degradaci zvukové kvality. Cíle tohoto experimentu jsou podobné jako předchozího, tudíž na testovaných datech hudba.wav zjistit velikost průměrné a maximální chyby po transformaci MDCT, bez jakékoliv úpravy signálu.
5.5.2
Postup
Tento experiment provedeme spuštěním kódu EXP2.m. Nejprve načteme data ze souboru, poté provedeme filtraci pomocí PQMF bloku pro analýzu a modifikovanou diskrétní kosínovou transformaci blokem MDCT. Poté pomocí bloku pro inverzní MDCT provedeme převod signálu zpět z frekvenční do časové oblasti, do 32 subpásem. Tento výstup posléze porovnáme s výstupem PQMF bloku vzájemným odečtením. Průměrnou a maximální chybu spočítáme z absolutních hodnot rozdílu.
5.5.3
Výsledky
Průměrná chyba způsobená převodem signálu z časové do frekvenční oblasti a zpět pomocí MDCT transformace je řádově chp ≈ 10−12 , maximální chyba je řádově chmax ≈ 10−10 .
5.5.4
Zhodnocení
V případě MDCT transformace bylo ověřeno, že nedochází ke zkreslení signálu převodem z časové do frekvenční oblasti. Dosažené hodnoty chyby jsou způsobeny numerickou přesností
5.6. VLIV DÉLKY BLOKU MDCT NA VÝSKYT JEVU PRE-ECHO
41
výpočtu. Jak již bylo zmíněno dříve, původní kodér z nějž vycházíme, tedy ASPEC, byl navržen pouze s jednoúrovňovým převodem z časové do frekvenční oblasti s použitím MDCT. PQMF banka filtrů je použita pouze z důvodu zpětné kompatibility jednotlivých vrstev formátu MPEG I a do koncepce kodéru vrstvy Layer III nepřináší žádná pozitiva, spíše naopak.
5.6 5.6.1
Vliv délky bloku MDCT na výskyt jevu pre-echo Cíle
Tento experiment se zabývá jevem zvaným pre-echo, který byl již popsán v kapitole o psychoakustice. Jedná se o problém rozptýlení zkreslení signálu do oblasti před výskytem energeticky bohatší části signálu, který vzniká z důvodu kvantizace frekvenčních koeficientů MDCT, kdy už nejsme schopni dokonale tuto transformaci invertovat. Toto zkreslení je nutné v rámci zachování zvukové kvality potlačit. Využívá se fenoménu časového maskování, a toto zkreslení se snažíme umístit právě do části signálu, která je maskovaná. MP3 kodér a zrovna tak navržený kodér se vypořádávají s tímto problémem za pomoci variabilní délky bloku v MDCT bloku. Tento experiment má za cíl vyzkoušet na testovacím signálu cinel.wav rozpoznání problematického úseku pomocí psychoakustické entropie, což způsobí změnu délky použitého bloku. Výsledný signál prošlý řetězcem pro zpracování posléze porovnáme s takovým signálem, který byl zpracován při vyřazení detekce pre-echa v psychoakustickém bloku, tedy s použitím pouze dlouhého bloku reprezentovaného použitím normálního okna v MDCT. Podle očekávání by mělo dojít k většímu rozptýlení zkreslení v časové oblasti v případě nevyužití variabilní délky bloku.
5.6.2
Postup
Tento experiment provedeme spuštěním kódu EXP3.m. Celý postup zopakujeme dvakrát, nejprve pro variabilní délku okna MDCT, podruhé pro konstantní délku bloku, kdy použijeme normální okno. Nejprve načteme data ze souboru, poté provedeme filtraci pomocí PQMF bloku pro analýzu a modifikovanou diskrétní kosínovou transformaci blokem MDCT. Psychoakustický blok provede výpočet povolených zkreslení, psychoakustické entropie a délek bloků. V prvním běhu nám psychoakustický blok správně nastaví parametry komprese a použitá okna. V druhém běhu provedeme nastavení změnou výstupů psychoakustického bloku, datových vektorů typBloku, kde nastavíme samé nuly a distortion, kde pro položky, které byly dříve krátkými okny, zkopírujeme koeficienty z vedlejších dlouhých oken. Provedeme kvantizaci vzorků. Poté pomocí bloku pro inverzní MDCT provedeme převod signálu zpět z frekvenční do časové oblasti. Sloučení do jediného PCM signálu provedeme blokem pro PQMF syntézu. Nejprve v grafu vyznačíme změny použitého bloku časově srovnané s původním signálem, poté porovnáme výstupy obou zpracování signálu.
5.6.3
Výsledky
Navržený kodér provedl na testovacím signálu správně adaptivní segmentaci a nalezl počátek vysokoenergetické části. Na obrázku 5.3 vidíme vypočtenou perceptuální entropii
42
KAPITOLA 5. EXPERIMENTY S KODÉREM V MATLABU
dat, přesněji její dvojnásobek pro lepší znázornění, časově srovnanou společně s originálním signálem. Na obrázku 5.4 vidíme tři průběhy signálu. Vlevo vidíme originální signál načtený 3
amplituda/2*PE [−]
2
x 10
4
signál PE
1
0
−1
−2
0.5
1
1.5 2 vzorek [−]
2.5
3 4
x 10
Obrázek 5.3: Signál a jeho psychoakustická entropie
ze souboru. Uprostřed je signál zpracovaný kompresním řetězcem při použití variabilní délky okna. V něm dochází k rozptýlení energie pouze méně než 192 vzorků před vysokoenergetickou složku signálu. Napravo se nachází signál zpracovaný řetězcem při použití konstantní délky okna. Na pravém obrázku je vidět dlouhý a silnější rozptyl energie v časové oblasti, až 576 vzorků, při poslechu tohoto signálu bylo pre-echo také slyšitelné.
5.6.4
Zhodnocení
Experiment potvrdil rozptýlení energie signálu v časové oblasti do prostoru před samotný výskyt vysokoenergetické složky, pro normální okno byl rozptyl větší než pro krátké okno. Krátké okno pro vzorkovací frekvenci 44100 Hz má délku trvání 4 ms, normální okno 12 ms. Použití krátkého okna je tedy vhodnější při náhlých změnách v signálu. Během experimentu jsme ještě zkoušeli měnit koeficienty zkreslení a sledovali jsme změny energie v oblasti preecho defektu. S rostoucí kvantizací se energie zvyšovala. Z toho lze vyvodit, že k výskytu pre-echa je signál náchylnější tím víc, čím větší kvantizace signálu je použita.
5.7 5.7.1
Psychoakustická komprese tónu Cíle
Tento experiment se zaměřuje na kompresi tónu. Jako tón byla použita funkce sinus o frekvenci 1 kHz při amplitudě 16192 generovaná po dobu deseti sekund a vzorkovaná frekvencí 44100 Hz a kvantovaná na 16 bitů. Takto vzniklý signál je uložen v souboru sin.wav. Cílem tohoto experimentu je určit kompresní poměr uložení tónu, kde by měl být
5.7. PSYCHOAKUSTICKÁ KOMPRESE TÓNU
4
x 10
x 10
43
4
x 10
3
3
2
2
2
1
1
1
0
0
0
−1
−1
−1
−2
−2
−2
amplituda [−]
3
−3 2.1
−3 2.2
2.3
2.4 4
x 10
4
−3 2.3
2.4
vzorek [−]
2.5 4
x 10
2.3
2.4
2.5 x 10
4
Obrázek 5.4: Vznik pre-echa v závislosti na použitých délkách oken MDCT
potenciál kodéru obrovský. Uložení ve formátu PCM vyžaduje 862 kB. Tento signál je vysoce predikovatelný, má nízkou energii navíc soustředěnou v okolí jedné frekvenční hodnoty.
5.7.2
Postup
Experiment spustíme pomocí kódu uloženého v EXP4.m. Tento kód je kopií celého řetězce pro zpracování signálu, kodéru i dekodéru, který je uložen v souboru EXP5.m. Provedeme psychoakustickou kompresi, a určíme počet bytů potřebných k uložení souboru, který je kódován v Huffmanově kódu. Pokusíme se o další komprese s použitím komerčního kompresního software.
5.7.3
Výsledky
Soubor zakódovaný Huffmanovým kódem měl velikost 79 kB. U čistého tónu bylo tedy dosaženo v kodéru komprese 1:11 oproti původnímu PCM signálu. S použitím komerčního software pro kompresi dat bylo možné zakódovaný soubor ještě bezeztrátově komprimovat na velikost 10kB. To by znamenalo kompresní poměr 1:86 bez ztráty poslechové kvality.
5.7.4
Zhodnocení
Ačkoliv se komprese v poměru 1:11 může zdát jako vysoká hodnota, s použitím dalšího software byla prokázána možnost mnohem lepších kompresních poměrů, a to až 1:86. Komprese výsledného souboru Huffmanovým kódem, jak byla navržena pro jednoduchost prezentovaného kodéru, snižuje také potenciál redukce objemu. Mnohem výhodnější je využití Huffmanova kódu přímo na kvantizované frekvenční koeficienty MDCT, které využívá
44
KAPITOLA 5. EXPERIMENTY S KODÉREM V MATLABU
MP3 formát, a dopočítávání nulových položek pomocí příznaku počtu koncových nul. Bylo prokázáno, že v jednodušších partiích signálu se ukáže potenciál subpásmového kódování.
5.8 5.8.1
Psychoakustická komprese hudebního souboru Cíle
V tomto experimentu se pokusíme zakódovat hudební soubor hudba.wav. Tento soubor je jednokanálový signál ve formátu PCM, vzorkovaný frekvencní 44100 Hz, který má 16 bitové vzorky a jeho velikost je 15207 kB. Cílem je určit dosaženou kompresi, a ze subjektivního hlediska ohodnotit kvalitu výsledného signálu.
5.8.2
Postup
Tento experiment spustíme pomocí kódu EXP5.m. Tato úloha využívá veškerý naprogramovaný kód v Matlabu, který byl již popsán na počátku kapitoly. Určíme velikost souboru, který je zakódován Huffmanovým kódem a porovnáme ho s velikostí původního souboru v PCM formátu. Subjektivně provedeme poslech jak původní, tak dekódované psychoakusticky komprimované zvukové stopy, a pokusíme se zhodnotit výslednou kvalitu komprese z poslechového hlediska.
5.8.3
Výsledky
Velikost zakódovaného souboru byla 4654 kB. Dekódovaný signál byl uložen do souboru hudbaNEW.wav. Obě zvukové stopy byly přehrány na standartní počítačové reprosoustavě a byla porovnána kvalita zvuku.
5.8.4
Zhodnocení
Kodér provedl kompresi v poměru 1:3.3. S pomocí komerčních software pro kompresi dat bylo dosaženo velikosti souboru 3990 kB, což odpovídá kompresi téměř 1:4, v přepočtu k původnímu PCM signálu můžeme mluvit o průměrných 4 bitech na vzorek. V souladu s předchozím experimentem tento výsledek naznačuje, že by mohlo dojít k lepšímu využití Huffmanova kódu. Z hlediska poslechové kvality subjektivně nebyl zjištěn rozdíl mezi původním a psychoakusticky komprimovaným signálem. Pro porovnání byl ještě vygenerován soubor v PCM formátu hudbaQ.wav, v němž byly využity pouze 4 horní bity z každého vzorku původního signálu, ostatní byly nastaveny na nulu. Takovýto soubor by bylo možné uložit v rovnocenném počtu byte s psychoakusticky zakódovaným souborem. Tento signál má odstup od šumu zhruba 24 dB, a výrazný pokles zvukové kvality je jasně patrný.
5.9
Zhodnocení experimentů
První dvojice experimentů prokázala, že samotné zpracování signálu bez psychoakusticky implementované komprese je provedeno s minimální chybou. Psychoakustický model správně
5.9. ZHODNOCENÍ EXPERIMENTŮ
45
detekuje výskyt pre-echa v signálu. Komprese tónu podle očekávání dosáhla vysokých hodnot, neboť většina přenášených frekvenčních koeficientů byla nulová. Poslední experiment s kompresí hudebního souboru prokázala, že psychoakustické kompresní algoritmy mají svůj smysl při uložení hudebních souborů, neboť i přes kompresi téměř 1:4 nedošlo k poslechové degradaci signálu.
46
KAPITOLA 5. EXPERIMENTY S KODÉREM V MATLABU
Kapitola 6
Závěr Tato práce se zabývala tématem psychoakustické komprese zvuku a kladla si několik cílů. Prvním z nich bylo seznámení s principy psychoakustické komprese. V kapitole s názvem Psychoakustika jsme popsali jevy, které využívají nedokonalostí lidského ucha a jichž můžeme využít k detekci psychoakusticky redundantních částí zvukových signálů. Především jsme se zaměřili na nejvyužívanější principy v oblasti psychoakustiky, kterými jsou práh slyšitelnosti a časové a frekvenční maskování. Abychom mohli porozumět funkcionalitě specifikace MPEG-Layer III, ISO-11172-3, byly v kapitole Metody a algoritmy pro zpracování zvukového signálu vyloženy vlastnosti jednotlivých bloků, které při psychoakustické kompresi využíváme. Jedná se o bloky pro mapování signálu z časové do frekvenční oblasti, ať už v podobě polyfázových kvadraturních zrcadlových filtrů či modifikované diskrétní kosínové transformace. Ve třetí kapitole jsme ještě nahlédli do způsobu bezeztrátové komprese pomocí Huffmanova kódování a zabezpečení přenosu proti chybám ve formě cyklických redundantních součtů. Čtvrtá kapitola s výstižným názvem Standard MPEG I - Part 3: Audio nás uvedla do tohoto v praxi využívaného kompresního formátu, familierně označovaného formát MP3, který v dnešní době stále ještě kraluje na poli hudebních kompresních formátů. Seznámili jsme se s celým kódovacím řetězcem a popsali, jak jednotlivé bloky navzájem spolupracují při kódování z PCM formátu hudebního souboru do formátu dle standardu ISO-11172-3. Konečně, kapitola s názvem Experimenty s kodérem v Matlabu nás v úvodu provedla specifikací kompresního řetězce vycházejícího ze standardu ISO-11172-3, který byl pro účely této práce vytvořen v matematickém software Matlab. Jeho naprogramování umožnilo provedení některých experimentů s psychoakustickou kompresí v druhé části páté kapitoly. Mimo jiné byly provedeny experimenty s detekcí jevu, který se nazývá pre-echo a degraduje poslechovou kvalitu zvukového signálu, kompresí čistého tónu v podobě sinové vlny a celého hudebního souboru. Výsledky experimentů přitakávají využití psychoakustické komprese jako vhodného postupu při kompresi hudebních zvukových nahrávek. Na základě této práce je možné s modelem kodéru v Matlabu navrhovat a provádět další experimenty týkající se psychoakustické komprese zvukových signálů. Cíle nastíněné v úvodu práce byly i přes obtíže především při implementaci kompresního řetězce v Matlabu splněny a podařilo se provést i zajímavé experimenty. Problémy způsobily především některé dosud neopravené, přesto však na webových fórech známé chyby specifikace MPEG-I.
47
48
KAPITOLA 6. ZÁVĚR
Pro čtenáře, který se základně orientuje v oblasti elektrotechniky, tato práce přináší pohled na způsob komprese využívané v psychoakustických algoritmech a na základě znalostí z této práce získaných může takovýto čtenář vytvořit funkční psychoakustický kompresní software. Z nastíněných experimentů se lze inspirovat k vytvoření komplexní laboratorní úlohy s použitím v této práci vytvořeného kódu.
Literatura [1] ISO/IEC 11172-3: Information technology - Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s, Part 3 - Audio. American National Standards Institute, New York, USA, 1993. [2] M. Bosi. Introduction to Digital Audio Coding and Standards. Springer, United States, 1st edition, 2003. [3] H. Fastl. Psychoacustics: Facts and Models. Springer, United States, 2nd edition, 1999. [4] V. Havlíček. Elektrické obvody 2. Česká technika, Praha, 2008. [5] D. A. Huffman. A Method for the Construction of Minimum-Redundancy Codes. In Proceedings of the I.R.E., pages 1098–1101, September 1952. [6] M. Šnorek. Periferní zařízení. Česká technika, Praha, 2008. [7] D. Pan. A Tutorial On MPEG Audio Compression. IEEE Multimedia, pages 60–74, Summer 2005. [8] J. Rothweiler. Polyphase Quadrature Filters - A New Subband Coding Technique. In International Conference IEEE ASSP, pages 1280–1283, Boston, 1983. [9] J. Stifter. Efektivní metody kódování zvukových signálů. In Proceedings of the 3rd conference of czech student AES section on audio technologies and processing, pages 104–109, Brno, 2002. Vysoké učení technické. [10] M. Unser. Sampling—50 Years after Shannon. Proceedings of the IEEE, 88(4):569–587, April 2000. [11] J. Vodrážka. Principy telekomunikačních systémů. Česká technika, Praha, 2006. [12] Winrar. [online] Dostupné z: http://www.win-rar.com/, stav z 16. 5. 2010. [13] Wikipedia, otevřená encyklopedie. [online] Dostupné z: http://cs.wikipedia.org, stav z 1. 5. 2010. [14] Neuroreille. [online] Dostupné z: http://www.neuroreille.com/, stav z 8. 5. 2010.
49
50
LITERATURA
Příloha A
Seznam použitých zkratek CRC Cyklický redundantní součet DFT Diskrétní Fourierova transformace FIR Filtr s konečnou impulzní odezvou FFT Rychlá Fourierova transformace IMDCT Inverzní modifikovaná kosínová transformace ISDN Digitální síť integrovaných služeb ISO International Organization for Standardization MDCT Modifikovaná diskrétní kosínová transformace MP3 Přípona souboru splňujícího standard ISO 11172-3 MPEG I - Layer III MP3 formát Přenesený název standardu ISO 11172-3 MPEG I - Layer III MPEG Moving Pictures Experts Group PA model Psychoakustický model PCM Pulzně kódová modulace PQMF Polyfázový kvadraturní zrcadlový filtr SNR Odstup signálu od šumu
51
52
PŘÍLOHA A. SEZNAM POUŽITÝCH ZKRATEK
Příloha B
Obsah přiloženého CD CD: | README.txt % informace o obsahu CD | +—latex | latex.zip % zdrojový kód textu BP | +—matlab | | EXP1.m % zdrojový kód pro 1. experiment | | EXP2.m % zdrojový kód pro 2. experiment | | EXP3.m % zdrojový kód pro 3. experiment | | EXP4.m % zdrojový kód pro 4. experiment | | EXP5.m % zdrojový kód pro 5. experiment | | HPrototype.m % prototyp PQMF filtru | | HuffmanCoder.m % kodér do Huffmanova kódu | | HuffmanDecoder.m % dekodér z Huffmanova kódu | | IMDCT.m % inverzní MDCT | | LOADER.m % načtení komprimovaných dat ze souboru | | MDCT.m % modifikovaná diskrétní kosínová transformace | | PQMF.m % PQMF analýza | | PQMFSYN.m % PQMF syntéza | | Psychomodel.m % psychoakustický model 2 | | QUANTIZER.m % kvantizér | | SAVER.m % uložení komprimovaných dat do souboru | | TabulkyPAModeluL3.m % tabulky pro použití v psychoakustickém modelu | | TabulkyQuantizer.m % tabulky pro použití v kvantizéru | | | +—output | | hudba.rs3 % soubor s kvantizovaným hudebním audiosignálem | | hudba.rs3h % soubor k kv. audios. v Huffmanově kódu | | hudbaD.rs3 % dekódovaný soubor z Huffmanova kódu | | hudbaNEW.wav % dekódovaný hudební kvantizovaný audiosignál | | hudbaQ.wav % hudební audiosignál s 4 bity na vzorek
53
54
| | sin.rs3 | | sin.rs3h | | sinD.rs3 | | sinNEW.wav | | | \ —signaly | cinel.wav | hudba.wav | sin.wav | \ —text \ svobora4BP.pdf
PŘÍLOHA B. OBSAH PŘILOŽENÉHO CD
% soubor s kvantizovaným audiosignálem tónu % soubor s kv. audios. tónu v Huffmanově kódu % dekódovaný soubor z Huffmanova kódu % dekódovaný kvantizovaný audiosignál tónu
% audiosignál činelu % hudební audiosignál % signál tónu
% text práce