Kas ir MP3 vēderā?

Domāju, ka ir grūti atrast tādu datorlietotāju, kurš ne reizi nebūtu sastapies vai vismaz dzirdējis par [i]MP3[/i] ([i]MPEG Audio Layer-3[/i]) datnēm un nebūtu klausījies mūziku, kas ierakstīta šādā formātā. Šis ir patiesi revolucionārs formāts, kas apgāza mūzikas ierakstu pasauli ar “kājām gaisā”. Tā visa iemesls ir šī formāta īpaši labā attiecība kvalitāte/izmērs, t.i., skaņas ieraksts var tikt saspiests līdz pat 10 – 14 reizēm salīdzinājumā ar [i]Audio CD[/i] ierakstu, bet skaņas kvalitātes zudumi ir salīdzinoši mazi.

Veicot aklās klausīšanās testus, ir secināts, ka skaņas ieraksts [i]MP3[/i] formātā ar datu plūsmas intensitāti ([i]bitrate[/i]) 192-256 kbps vairumā gadījumu nav atšķirams no oriģinālā ieraksta. No tā izriet, ka šis formāts ir ļoti piemērots skaņas informācijas pārsūtīšanai caur tīklu, arhivēšanai un citiem lietojumiem. Padomājiet, cik stundu ieraksti ir Jūsu [i]MP3[/i] kolekcijā? 🙂

Bet nu vairāk pie lietas. Uzreiz gribu teikt, ka šis raksts nekādā ziņā [b]nav MP3 formāta specifikācija[/b] vai kas tamlīdzīgs. Raksta mērķis ir pēc iespējas vienkāršāk pastāstīt šī formāta pamatprincipus.

[i]MP3[/i] algoritma izstrāde sākās 1987. gadā. Pie tā strādāja [i]Fraunhofer IIS-A[/i] sadarbībā ar [i]University of Erlangen[/i]. Šis algoritms ir standartizēts kā [i]ISO-MPEG Audio Layer-3[/i] ([i]IS 11172-3 un IS 13818-3[/i]). Interesanti ir tas, ka standartizēts ir tikai datnes formāts un dekodēšana (specifikācija un parauga dekodera programmas pirmteksts ir pieejami), bet par signāla kodēšanu nekas nav teikts. Kāpēc tā? Par to pastāstīšu nedaudz vēlāk.

Vai esat kādreiz domājuši par to, kas ir [i]MP3[/i] uzbūves pamatā un kādā veidā tiek panākta šī milzīgā kompresija, kvalitātes ziņā maz zaudējot? Es esmu, un tāpēc sāku šo lietu pētīt.

Vispirms apskatīsim skaņas informācijas pieraksta veidu [i]Audio CD[/i] formātā, kur skaņas ieraksts, pretstatā analogajiem ierakstiem, piem., magnētiskajai lentai, ir veikts ciparu (diskrētā) formā, kur noteiktos laika momentos analogā signāla līmenim tiek piekārtots noteikts skaitlis, kas raksturo šo līmeni.

Šo procesu varētu pielīdzināt kādas viena argumenta funkcijas ( [i]Y=F(X)[/i] )grafika pierakstam tabulas veidā, kur noteiktām argumenta X vērtībām tiek uzdota funkcijas Y vērtība. Skaņas ieraksta gadījumā arguments X ir laiks, bet funkcija Y ir svārstības līmenis konkrētajā laika momentā.

Noteikti zināt, ka šāds funkcijas grafika pieraksts, nav īpaši labs, jo prasa daudz resursu utt. Funkciju daudz labāk ir uzdot analītiskā formā, t.i., formulas veidā, pēc kuras var izrēķināt attiecīgo funkcijas vērtību.

Tieši šī doma ir viena no [i]MP3[/i] (arī citu saspiešanas ar zudumiem algoritmu, piem., [i]JPEG[/i], [i]OGG[/i], …) pamatā. Doma ir tāda, ka jāsaglabā tikai tie dati, kas nepieciešami, lai rezultātu varētu [b]izrēķināt[/b].

Droši vien zināt, ka skaņu (arī citas svārstības) var sadalīt atsevišķās sastāvdaļās, jeb sadalīt “pa frekvencēm”. Bet katras šādas sastāvdaļas vērtību kādā noteiktā laika momentā var izrēķināt, jo to apraksta ar visiem labi zināmo sinus funkciju. 🙂 Signālu sadala pa atsevišķām sinusoīdām, kur katra tiek raksturota ar trīs parametriem: frekvence, amplitūda, fāzes nobīde.

Tā kā skaņas signāls parasti ir gana sarežģīts, tad atrast vienu šādu dalījumu pa sastāvdaļām visam ierakstam ir praktiski neiespējami. Risinājums ir tāds, ka skaņas ieraksts tiek sadalīts pa mazākiem gabaliņiem ([i]frame[/i]), un tālāk katram no šiem gabaliņiem tiek izrēķināts savs sastāvdaļu dalījums. Tātad viena lielā problēma tiek sadalīta mazākās.

Tas cik daudz vietas ir atvēlēts katra gabaliņa informācijas glabāšanai ([i]bitrate[/i]), nosaka to, cik daudz informācijas par signāla sastāvdaļām varēs ierakstīt, jo vairāk jo labāk. Nav patiess uzskats par to, ka [i]bitrate[/i] nosaka frekvenču diapazonu. Arī ar zemu bitrate var ierakstīt augstas frekvences skaņu. Šis nepareizais uzskats varbūt ir radies no tā, ka parasti [i]MP3[/i] kodētājs zinot, ka atvēlēts mazs [i]bitrate[/i], atmet augstās frekvences sastāvdaļas, bet vispārējā gadījumā tas ir atkarīgs no signāla [b]spektrālās[/b] sarežģītības.

Tagad rodas jautājums, kāpēc tad [i]MP3[/i] kompresija tiek pieskaitīta klasei “ar zudumiem”? Lieta tāda, ka šo te signāla sastāvdaļu parasti ir ļoti daudz (dažreiz pat bezgala daudz) un visas sastāvdaļas aprēķināt un pierakstīt prasītu daudz resursu. Neapšaubāmi, daudz resursu prasītu arī atskaņošanas process, kurā, balstoties uz iepriekš pierakstītajiem raksturlielumiem, tiek aprēķinātas šīs atsevišķās sastāvdaļas un to summa (kopējais rezultējošais signāls).

Tātad realitāte ir tāda, ka kādas no aprēķinātajām sastāvdaļām nākas atmest, lai padarītu saspiešanu pietiekami efektīgu, ātru un lai vienkāršotu arī atskaņošanas procesu.

[img=/images/upload/encoding.png]encoding[/img]
[img=/images/upload/decoding.png]decoding[/img]

Šajos attēlos ļoti vienkāršotā veidā ir parādīta kompresijas būtība.

Rodas jautājums par to, kuras sastāvdaļas atmest, lai rezultāts būtu iespējami tuvāks sākuma datiem. Lūk šeit sākas īstā maģija un māksla. Šī ir visa procesa [b]nedokumentētā[/b] daļa, kura tika pieminēta iepriekš. Katrs [i]MP3[/i] kodētāja izstrādātājs realizē šo daļu pēc saviem ieskatiem, par pamatu ņemot cilvēka dzirdes īpašības. Tātad vispirms tiek atmests tas, ko cilvēka dzirde vismazāk jūt, un līdz ar to kompresijas kļūdas būs mazāk dzirdamas. Rezultāts ir tāds, ka dažādi [i]MP3[/i] kodētāji dod dažādus rezultātus, bet tai pat laikā šo rezultātu var dekodēt visi. Interesanti, vai ne?

Tātad procesa beigu posmā ir kompresēto datu dekoderis, kas izrēķina skaņas signālu. Šeit ir dažas interesantas lietiņas.

Pirmām kārtām [i]MP3[/i] dekoderī var būt iekļauta ekvalaizera ([i]equalizer[/i]) funkcija, kas patērē 0 resursu! Kā tas var būt? Vienkārši. Matemātika iekš [i]MP3[/i] notiek ar skaitļiem diapazonā –1..0..1, un, lai šo diapazonu varētu attēlot ar 8, 16, 24, … bitu veselu skaitli, ko nodod skaņas kartei atskaņošanai, šiem mazajiem skaitļiem tiek piekārtots attiecīgs reizinātājs. Mainot šos reizinātājus, mainās arī skaņas sastāvdaļas. Tātad mēs vienkārši mainam dekodēšanas parametrus.

Otra lieta ir tā, ka arī dekoderu rezultāts var būt dažāds, jo ne visi šo daļu ir realizējuši tā kā tam būtu jābūt, t.i., daži dekoderi ir optimizēti veiktspējai tā, ka samazinās rezultāta kvalitāte. Bet šobrīd tādus dekoderus jau ir grūti atrast.

Nu un trešā lieta ir tā, ka dekodēšanas kvalitāte var tikt samazināta, lai samazinātu resusru patēriņu. Kādreiz uz veciem PC tas bija aktuāli. Šīs izmaiņas dekodēšanā tiek panāktas ignorējot kādu daļu no skaņas sastāvdaļām. Tātad tiek izdarīta tikai daļa no dekodēšanas darba. Šādas iespējas ir arī, piemēram, [i]WinAmp[/i] [i]MPEG[/i] dekoderī sadaļā [i]Quality[/i] ir iespējas: [i]Full[/i], [i]Half[/i], [i]Quarter[/i].

Ceturtā lieta ir tāda, ka patiesībā [i]MP3[/i] var tikt dekodēts JEBKURĀ diskretizācijas frekvencē ([i]sampling rate[/i]), jo signāls taču ir aprēķināma viļņa formā. Bet jāņem vērā, ka kvalitāti tas neuzlabo. Tas ir līdzīgi vienkāršai algebrai, kur, piem., funkcijas Y=X^2 grafikā (parabola) var izrēķināt tik daudz punktu, cik sirds kāro…

Nu un uz beigām viens saldais ēdiens. Ar aci redzamas [i]MP3[/i] kompresijas sekas. Brīnumainās pārvērtības – pirms un pēc. 🙂

[img=/images/upload/sqare.png]source[/img]
[img=/images/upload/sqare2.png]result[/img]

PAPILDINĀTS:
Taisnstūra signāls tika izvēlēts speciāli, lai maksimāli spilgti parādītu to, ka [i]MP3[/i] ir kompresija ar zudumiem. Bezzudumu kompresija, protams, rezultātā dotu identiskus datus ieejas datiem.

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *

Datuve.lv – IT un Tehnoloģiju ziņas || Copyright © 2004-2020 || Kontaktinformācija: info@datuve.lv  || Contact Us