ALGORITEM STISKANJA PRI MP3

Poizvedi, kako stiskamo MP3 datoteke in kakšen algoritem stiskanja je pri tem uporabljen.

Algoritem stiskanja pri formatu MP3 je izgubni, kar pomeni, da se nekaj podatkov pri procesu striskanja izgubi. Tako dobimo datoteko, ki je 10x manjša od prvotne datoteke. Pri tem algoritmu se bomo osredotočili predvsem na FFT (Fast Fourier Transform) in MDCT (Modified discrete cosine transform).

1. DIGITALNO ZAPISOVANJE ZVOKA

Pri formatu MP3 se zvok najprej pretvori v digitalno obliko s PULZNO KODNO MODULACIJO (PCM – pulse coded modulation), kjer enosavno zapišemo vzorčene kvantizirane vrednosti. Pretvorba poteka v treh korakih:

1. VZORČENJE

Vzorčimo zvok oz. beležimo napetost signala v neki točki (bolj na gosto vzorčimo, boljše je – tako je izguba kvalitete manjša).

Frekvenca vzorčenja (kako gosto vzorčimo zvok) mora biti po Nyquistovem teoremu vsaj dvakrat večja od najvišje frekvence vzorčnega signala. Pri MP3 je frekvenca ponavadi enaka 44,1 KHz.

Slika 1: začetni signal, ki ga vzorčimo

Slika 2: vzorčenje

Slika 3: kvantizacija

2. KVANTIZACIJA

Zaokrožimo vrednosti, ki smo jih vzorčili, na najbližje spodnje celo število.

3. KODIRANJE

Vrednosti, ki jih dobimo s kvantizacijo zapišemo v digitalni obliki. Na primeru, ki ga prikazuje slika, smo vse vrednosti kodirali s tremi biti.

Slika 4: kodiranje

(Rugelj, b.d.).

PREVERI SVOJE ZNANJE

2. STISKANJE PCM SIGNALA

Stiskanje signala poteka v štirih večjih korakih oziroma delih. Signal gre najprej skozi večfazni filter in psihoakustični model, nato sledi kodiranje in kvantizacija, na koncu pa še oblikovanje zvočnih okvirov oziroma oblikovanje kodiranega zvočnega signala.

Shemo stiskanja si lahko ogledaš spodaj, kjer so zraven še na kratko opisani vsi koraki procesa.

PREVERI SVOJE ZNANJE

Dopolni shemo kodiranja zvoka tako, da povlečeš besede ali besedne zveze v prazne okvirčke.

2.1 FFT (Fast Fourier Transform) 

FFT (Fast Fourier Transform) je algoritem, ki pretvori signal v posamezne komponente in s tem zagotovi frekvenčne informacije o signalu. To je algoritem za izvajanje DFT (Discrete Fourier Transformation). Njegova glavna naloga je predvsem, da izloči nepotrebne ali pa nezaželene podatke iz vzorca signala (Fast Fourier Transformation FFT – Basics, b.d.).

Signal vzorčimo neko določeno časovno obdobje, nato pa ga razdelimo na njegove frekvenčne komponente. Te komponente so enojna sinusna nihanja na različnih frekvencah, vsaka s svojo amplitudo in fazo (torej pogledamo, koliko različnih frekvenc vsebuje nek signal v nekem časovnem obdobju) (Fast Fourier Transformation FFT – Basics, b.d.).

FFT je algoritem, ki izračuna koeficiente/vrednosti diskretne Fourierjeve transformacije, vendar veliko hitreje kot DFT. Njegova glavna naloga je predvsem, da izloči nepotrebne ali pa nezaželene podatke iz vzorca signala (Guckert, 2012).

Prvi korak je, da normalizira (vzorce prilagodi na neke srednje vrednosti) vhodne zvočne vzorce  po enačbi: , kjer je N FFT dolžina vzorca (pri MP3 je 1024 = 2^10), b pa je število bitov v vzorcu (Guckert, 2012).

Drugi korak pa je določitev praga maskiranja vzorca (raven pritiska, ki ga izvedemo na vzorcu, da postane slišen ob prisotnosti nekega hrupa) (Guckert, 2012).

2.1 MDCT (Modified discrete cosine transform)

MDCT je transformacija, ki temelji na transformaciji DCT (Discrete cosine transform) z dodatno lastnostjo prekrivanja. To pomeni, da se ta izgubni algoritem stiskanja izvaja na zaporednih blokih večjega nabora podatkov, pri čemer se sosednji bloki prekrivajo tako, da zadnja polovica enega bloka sovpada s prvo polovico drugega bloka. Glavna naloga MDCT je, da omeji oziroma zmanjša izhodne šume, popačenja signala, ki bi lahko povzročala probleme med rekonstrukcijo signala (Pfister, 2015).

MDCT uporabimo na vsakem časovnem okviru. Vendar pa moramo pred uporabo MDCT za vsak podpas v okviru določiti še okno (Raissi, 2002).

Okna določimo zato, da zmanjšamo napake na robovih signala. Torej, napake na robovih ublažimo z že prej omenjenim prekrivanjem blokov, to pa omogočimo z določitvijo oken.

Če se psihoakustični model odloči, da podpasovni signal pri trenutnem časovnem okviru kaže malo razlike v primerjavi s prejšnjim časovnim okvirom, se uporabi tip dolgega okna, ki bo povečal spektralno ločljivost, ki jo daje MDCT. Če podpasovni signal kaže znatno razliko od prejšnjega časovnega okvira, se uporabi tip kratkega okna. Ta tip okna je sestavljen iz treh kratkih prekrivajočih se oken in bo izboljšal časovno ločljivost, ki jo določa MDCT. Višja časovna ločljivost je potrebna za nadzor nad nezaželenimi podatki, na primer odmevi. Za boljšo prilagoditev, ko so potrebni prehodi med okni, sta opredeljena še dva tipa, začetno okno in končno okno (Raissi, 2002).

Vendar pa je problem prekrivajočih se blokov ta, da se ustvari dvakrat več koeficientov oziroma vrednosti pri pretvarjanju oziroma kodiranju. Vendar pa MDCT to težavo reši tako, da deluje na blokih vzorcev dolžine 2N, ki se med seboj prekrivajo z N vzorci. Ključna lastnost je, da vsako novo okno ustvari samo N novih koeficientov, na koncu pa še vedno doseže popolno rekonstrukcijo (Pfister, 2015).

MDCT predstavlja linearno funkcijo, ki ima polovico manj izhodov, kot ima vhodov.

Ta linearna funkcija pretvori (transformira) 2N realnih vrednosti v N realnih vrednosti s pomočjo spodnje enačbe:

 

 

 

Po tej enačbi so vrednosti x0, x1, …, x2N-1 pretvorjene v vrednosti X0, X1, …, XN-1 (Guckert, 2012).

MDCT vrednosti, ki jih dobimo, so nato kvantizirane in kodirane s Huffmanovim kodiranjem (Raissi, 2002).

VIRI