====== Analiza FLAC formata ======
Matteo Samsa
Zbog nemogućnosti umetanja više slika u poglavlje "Analiza spektra audio formata" prilažem PDF verziju rada.
{{:racfor_wiki:datoteke_i_datotecni_sustavi:analiza_flac_formata_-_matteo_samsa.pdf|:racfor_wiki:datoteke_i_datotecni_sustavi:analiza_flac_formata_-_matteo_samsa.pdf}}
===== Sažetak =====
Ovaj seminarski rad analizira format koji služi za sažimanje audio podataka bez gubitka podataka - FLAC. U radu je opisan proces kodiranja FLAC datoteka te definiran sam format te njegovi blokovi. Razmatrani su metapodaci koji se mogu nalaziti u FLAC formatu, nakon čega su uspoređene različite razine sažimanja. FLAC format je uspoređen s nekoliko drugih formata za audio podatke te su analizirani spektrogrami uz pomoć kojih se može zaključiti o kojem je audio formatu riječ.
Ključne riječi: FLAC, audio, spektrogram
===== Uvod =====
FLAC je najbrži audio kodek bez gubitka podataka (engl. lossless će biti korišten dalje u tekstu). FLAC je akronim od engleskih riječi „Free Lossless Audio Codec“, gdje se riječ „Free“ odnosi na to da su specifikacije formata u potpunosti javno objavljene i da se format smije koristiti u bilo koje svrhe te metode kodiranja i dekodiranja formata nisu patentirane. Također, izvorni kod je dostupan pod open-source licencom.
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:flac1logo.gif?nolink&262x130 |Logo FLAC formata}}
Slika 1 Logo FLAC formata
Prva verzija FLAC formata je izdana 20. srpnja 2001. godine, a 29. siječnja 2003. godine ga je preuzela neprofitna organizacija Xiph.org koja se fokusira uglavnom na Ogg familiju formata: Vorbis, Theora, Speex, i slični.
FLAC format je sličan MP3 formatu po tome što ima mogućnost sažimanja audio datoteka, no on to radi bez gubitka podataka. Ta vrsta sažimanja je slična sažimanju ZIP datoteke, no FLAC ima puno veći faktor sažimanja jer je projektiran specifično za audio podatke.
Bitne značajke FLAC formata su:
* **Lossless**:kodiranje audio podataka pulsno-kodnom modulacijom (PCM) ne gube se nikakvi podaci, dekodirani podaci su identični onima koji su se početno kodirali.
* **Brzina**: FLAC je asimetričan tako da favorizira brzinu dekodiranja. Dekodiranje zahtijeva samo aritmetiku cijelih brojeva (engl. integer).
* **Sklopovska podrška**: FLAC format podržava većina modernih uređaja od pametnih telefona (android 3.1+), linija pa do radio uređaja u automobilima.
* **Fleksibilni metapodaci**: FLAC format podržava oznake (engl. tag), naslovne slike glazbenog albuma, tablice za pretraživanje (engl. seek table) i „cue tablice“.
* **Mogućnost pretraživanja (engl. Seekable)**: zbog toga je FLAC pogodan i za korištenje u programima za uređivanje audio datoteka.
* **Prenositi na zahtjev (engl. Streamable)**: svaki FLAC okvir sadrži dovoljno podataka za dekodiranje tog okvira. FLAC koristi kodove za sinkronizaciju i CRC-ove koji, uz okvire, omogućuju dekodiranje sa sredine toka s minimalnim kašnjenjem.
* **Pogodan za arhiviranje**: FLAC je lossless format te ako u budućnosti bude bilo potrebe za pretvaranjem podataka u drugi format svi podaci će biti sačuvani. Uz CRC-ove okvira i MD5 potpis, FLAC nudi i opciju provjere kodiranja tako da paralelno s procesom kodiranjem dekodira kodirani tok podataka i uspoređuje rezultat s originalnim podacima, prekidajući kodiranje u slučaju pogreške
* **Pogodan za presnimavanje na CD**: FLAC ima blok metapodataka namijenjen za „cue tablicu“ u kojoj se nalazi popis audio datoteka na CD-u s točnim početnim i krajnjim točkama, tako omogućujući identičnu replikaciju podataka s CD-a.
* **Otporan na greške**: zbog načina na koji su sastavljeni okviri FLAC formata, pogreške toka su ograničene tako da prave štetu samo okviru u kojem su se dogodile – desetak milisekundi.
Kroz cijeli seminar će biti analizirana pjesma Motherboard grupe Daft Punk, to je 10. pjesma po redu na albumu Random Access Memories iz 2013. godine.
===== Kodiranje FLAC formata =====
Kodiranje se izvodi u četiri koraka.
==== Rastavljanje podataka na blokove (engl. Blocking) ====
U FLAC formatu razlikujemo blokove i okvire, blokovi se odnose na nekodirane audio podatke (engl. raw) koji služe kao ulaz u enkoder, dok se okviri odnose na kodirane podatke.
Blok je jedan ili više audio uzoraka u više kanala. Uz blokove imamo i podblokove (engl. subblock) koji sadrže jedan ili više audio uzoraka u jednom kanalu. Blok sadrži po jedan podblok po kanalu, a svi podblokovi imaju jednak broj uzoraka. Veličina bloka je broj uzoraka u bilo kojem podbloku nekog bloka.
Okvir (engl. frame) se sastoji od zaglavlja okvira i jednog ili više podokvira (engl. subframe), dok podokvir sadrži zaglavlje podokvira s informacijom o kodiranju i jedan ili više kodirani uzorak iz jednog kanala. Svi podokviri koji se nalaze u nekom okviru će sadržati isti broj uzoraka.
Veličina bloka nije predodređena nego se s obzirom na frekvenciju uzorkovanja, karakteristike spektra kroz vrijeme i slične parametre određuje optimalna veličina bloka. Iako FLAC podržava promjenjivu veličinu blokova u jednom toku podataka, no današnji enkoder koristi konstantnu veličinu bloka.
Veličina bloka ima veliki utjecaj na faktor sažimanja. Ako je blok premalen, datoteka će imati veliki broj okvira te će više bitova biti utrošeno na zapisivanje zaglavlja okvira. S druge strane, ako je blok prevelik, karakteristike signala mogu previše varirati te enkoder neće biti u stanju pronaći dobar prediktor (engl. predictor). Kako bi se pojednostavilo projektiranje enkodera i dekodera, FLAC ima određenu minimalnu veličinu bloka od 16 uzoraka i maksimalnu veličinu od 65535 uzorka.
Blokovi se prenose u korak predviđanja podblok po podblok. Svaki podblok se zasebno kodira u podokvir, i onda se podokviri konkateniraju u okvir. S obzirom da se svaki kanal zasebno kodira, moguće je da jedan kanal bude kodiran kao konstantni podokvir, a drugi kao linearno prediktivno kodirani (LPC, engl. Linear predictive code) podokvir.
==== Dekorelacija kanala ====
U stereo tokovima, često postoji korelacija između lijevog i desnog kanala koja se može iskoristiti. Enkoder tada može iz okvira u okvir birati najbolji način kodiranja:
* Nezavisni (engl. independent): lijevi i desni kanali se nezavisno kodiraju
* Srednji-strana (engl. mid-side): enkoder stvara srednji (engl. mid) kanal iz prosjeka lijevog i desnog kanala dok iz njihove razlike, lijevi minus desni, stvara kanal sa strane (engl. side).
* Lijevi-strana (engl. left-side): kodiraju se lijevi kanal i kanal sa strane.
* Desni-strana (engl. right-side): kodiraju se desni kanal i kanal sa strane.
==== Predviđanje ====
FLAC koristi četiri metode modeliranja ulaznog signala
Doslovni prediktor (engl. verbatim): koristi se prediktor nultog reda. Predviđeni signal je nula, odnosno signal pogreške je originalni signal te nema sažimanja. To je osnovica prema kojoj se ostali prediktori mjere. Ako se na ulaz enkodera dovedu slučajni podaci, najvjerojatnije će se doslovni prediktor koristiti za svaki podblok. Kodirani podaci će se razlikovati od linearnog prediktora nultog reda jer su rezidualno kodirani.
Konstantni prediktor: Koristi se kada je podblok čisti DC signal, odnosno, signal konstantne vrijednosti za cijelo trajanje podbloka.
Konstantni linearni prediktor: FLAC koristi efikasne konstantne linearne prediktore kao i slični formati, no uz prediktore nultog do trećeg reda koji se koriste u formatu „shorten“ dodaje još i prediktor četvrtog reda. S obzirom da su prediktori konstante, potrebno je pohraniti samo red prediktora u sažeti tok. Signal pogreške se tada prosljeđuje rezidualnom enkoderu.
FIR linearni prediktor: Za točnije modeliranje signala, FLAC podržava linearni FIR prediktor do 32 reda, no to usporava proces kodiranja. Enkoder koristi Levinson-Durbin metodu za izračun LPC koeficijenta iz koeficijenata autokorelacije. Koeficijenti se kvantiziraju prije rezidualnog kodiranja. FLAC dopušta da kvantizirani koeficijenti budu različiti u svakom podokviru. Enkoder procjenjuje optimalnu potrebnu preciznost s obzirom na veličinu bloka i dinamički opseg početnog signala.
==== Rezidualno kodiranje (engl. Residual coding) ====
FLAC definira dvije metode kodiranja signala pogreške iz faze predviđanja. Signal pogreške se kodira koristeći Rice kodove na jedan od sljedeća dva načina
- Enkoder procjenjuje jedan Rice parametar s obzirom na varijancu signala pogreške i kodira cijeli signal Rice kodovima prema tom parametru.
- Signal pogreške se podijeli na nekoliko dijelova jednakih veličina te se za svaki dio kodira sa svojim Rice parametrom koji se temelji na srednjoj vrijednosti tog dijela.
FLAC format ima rezervirana polja i za druge metode kodiranja, na primjer, Huffman kodiranje, LOCO-I i purcrunch.
===== Format =====
FLAC u sebi ne sadrži informaciju o verziji formata, ali sadrži rezerviranog prostora na nekim mjestima. Buduće verzije formata moći će koristiti ta rezervirana mjesta bez da utječu na format starijih tokova. Stariji dekoderi mogu prekinuti proces dekodiranja ili preskočiti dio informacija ako je datoteka kodirana novijim metodama. Osim rezerviranog prostora, definirana su i mjesta u koje se ne smije upisivati uzorke jer služe za osiguravanje robusnosti sinkronizacijskog mehanizma.
Svi brojevi koji se koriste u FLAC toku su cijeli (engl. integer) – ne koriste se brojevi s pomičnim zarezom. Također, koristi se big-endian kodiranje i osim nekoliko iznimaka svi su brojevi bez predznaka (engl. unsigned).
Na početku svakog FLAC toka nalazi se oznaka „fLaC“, odnosno u heksadekadskom sustavu 66 4C 61 43. Nakon toga se nalazi blok obaveznih metapodataka koji se naziva STREAMINFO blok, zatim ostali metapodaci te tek onda audio okviri.
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:flac2pocetakflacdatotekeuhxdprogramu.png?600x62 |Pocetak FLAC datoteke u hex editoru}}
Slika 2 Početak FLAC datoteke u HxD programu
FLAC podržava do 128 vrsta blokova metapodataka, no samo je sljedećih sedam definirano:
- STREAMINFO: Ovaj blok sadrži informacije o cijelom toku kao što su frekvencija uzorkovanja, broj kanala, ukupan broj uzoraka i slično. Uvijek mora biti prvi blok metapodataka u toku. Nakon njega se mogu, ali ne moraju nalaziti drugi blokovi metapodataka, ako dekoder ne „razumije“ neke metapodatke tada ih preskoči.
- APPLICATION: ovaj blok koriste aplikacije trećih strana. Jedini obavezni blok je 32-bitni identifikator koji se dodjeljuje aplikacijama koje ga zatraže. Ostatak bloka definiraju registrirane aplikacije.
- PADDING: ovaj blok omogućava proizvoljan broj nula, te ne sadrži informacije. Ovaj blok je koristan kada je unaprijed poznato da će se metapodaci uređivati nakon kodiranja. Korisnik tada može pri kodiranju rezervirati PADDING blok potrebne veličine kako bi se naknadno mogli dodavati metapodaci. Dodani metapodaci će prepisati PADDING blok umjesto da se podaci moraju ubacivati na točno mjesto u datoteci što bi zahtijevalo prepisivanje cijele datoteke.
- SEEKTABLE: ovo je neobavezan blok u koji se pohranjuju točke za pretragu (engl. seek). Moguće je kretati se kroz cijeli FLAC tok i bez tablice za pretraživanje, ali će kašnjenje biti nepredvidivo s obzirom da se brzina podataka (engl. bitrate) razlikuje kroz tok. Dodavajući točke za pretragu to kašnjenje se može znatno smanjiti. Svaka točka zauzima 18 bajtova. U toku se smije nalaziti samo jedan SEEKTABLE blok, no on može sadržavati bilo koji broj točaka za pretragu. Postoji i posebno definirana točka koja služi za rezervaciju prostora (engl. placeholder) za točke koje će biti dodane u budućnosti.
- VORBIS_COMMENT: ovaj blok služi za pohranu podataka u parovima ime_podatka=vrijednost koji su kodirani koristeći UTF-8. Ovaj blok se temelji na specifikaciji Vorbis komentara, ali ne sadrži zaglavlje. Također, ovo je jedini službeno podržani način upisivanja oznaka (engl. tag) u FLAC format. U toku se smije nalaziti samo jedan VORBIS_COMMENT blok. U nekoj literaturi se Vorbis komentari nazivaju FLAC oznake.
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:flac3vorbiscommentblok.png?600x314 |VORBIS_COMMENT blok}}
Slika 3 VORBIS_COMMENT blok vidljiv je i „normalno“ čitljiv. Slika iz HxD programa.
- CUESHEET: ovaj blok služi za pohranu informacija koje se mogu koristiti u cue tablici. Od posebne je važnosti pri pohrani i kopiranju CD-DA diskova jer sadrži podatke o točnim lokacijama audio datoteka na disku.
- PICTURE: ovaj blok služi za pohranu slike koja se povezuje s određenom audio datotekom, najčešće se radi o naslovnoj slici glazbenog albuma. Moguće je imati više od jednog PICTURE bloka. Blok je tipa MIME, dok je opis kodiran s UTF-8 kao u ID3v2 te podržava povezivanje vanjskih slika putem URL-a. U bloku se nalaze i podaci o rezoluciji slike, dubini boje (engl. color depth), i veličini palete.
Audio podaci se sastoje od jednog ili više okvira. Svaki se okvir sastoji od zaglavlja koje sadrži kod za sinkronizaciju, informacije o okviru kao što su veličina bloka, frekvencija uzorkovanja, broj kanala i slično te 8-bitni CRC. U zaglavlju okvira se također nalazi ili broj uzorka prvog uzorka u okviru, ako je riječ o promjenjivoj veličini bloka u toku, ili broj okvira, ako je riječ o konstantnoj veličini bloka u toku. To omogućuje brzo pretraživanje (engl. seeking). Nakon zaglavlja okvira nalaze se podokviri, po jedan za svaki kanal, te se nakon njih dodaju nule do veličine koja je djeljiva s 8, odnosno na bajtove.
S obzirom da je moguće da dekoder započne dekodiranje sa sredine toka, postoji metoda za određivanje početka okvira. Svaki okvir započinje s 14-bitnim kodom za sinkronizaciju koji se ne pojavljuje nigdje drugdje u zaglavlju okvira, no moguće je da se pojavi u zaglavlju podokvira pa se koriste još dvije metode potvrde točne sinkronizacije. Najprije se provjerava ako ostatak okvira ne sadrži nevažeće podatke te zatim dekoder generira 8-bitni CRC zaglavlja okvira te ga uspoređuje s CRC-om koji je pohranjen na kraju zaglavlja okvira. S obzirom da dekoder može započeti dekodiranje iz proizvoljnog okvira u toku, svaki okvir mora sadržavati osnovne informacije o toku jer je moguće da dekoder nema pristup STREAMINFO bloku metapodataka koji se nalazi na početku toka. Uzimajući u obzir da je zaglavlje okvira dodatna ponovljena informacija (engl. overhead), ono direktno utječe na faktor sažimanja. Da bi veličina zaglavlja okvira smanjila FLAC koristi pregledne tablice (engl. lookup table) za najkorištenije podatke.
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:flac4metapodacikojisemogupronaciudatotecikoristeciexiftoolprogram.png?600x626 |Metapodaci u exiftool programu}}
Slika 4 Metapodaci koji se mogu pronaći u datoteci koristeći exiftool program.
===== Sažimanje podataka bez gubitka (engl. lossless) =====
Za sažimanje FLAC datoteka koristi se libFLAC, knjižnicu referentnih enkodera i dekodera, i sučelje za metapodatke. libFLAC ima 9 razina sažimanja koje se kreću od level-0 koji je najbrži, ali sažeta datoteka zauzima i najviše prostora (oko 70% nesažete datoteke), pa do level-8 koji je najsporiji, ali je veličina sažete datoteke najmanja (oko 60% nesažete datoteke). Sažete datoteke, bez obzira na razinu sažimanja, uvijek sadrže sve informacije kao i nesažeta datoteka te za njih kažemo da su lossless. Iako se pri procesu sažimanja može primijetiti da za bolje sažimanje treba više vremena, dekodiranje datoteka traje približno jednako bez obzira na razinu sažimanja.
Tablica 1 Usporedba veličina datoteka s obzirom na razinu sažimanja
| \\ Format \\ | \\ Veličina [KB] \\ | \\ Postotak nesažete datoteke [%] \\ |
| \\ Nesažeto \\ | \\ 59228 \\ | \\ 100 \\ |
| \\ Level-0 \\ | \\ 36064 \\ | \\ 60.89 \\ |
| \\ Level-1 \\ | \\ 35650 \\ | \\ 60.19 \\ |
| \\ Level-2 \\ | \\ 35480 \\ | \\ 59.90 \\ |
| \\ Level-3 \\ | \\ 35061 \\ | \\ 59.20 \\ |
| \\ Level-4 \\ | \\ 34657 \\ | \\ 58.51 \\ |
| \\ Level-5 \\ | \\ 34586 \\ | \\ 58.39 \\ |
| \\ Level-6 \\ | \\ 34535 \\ | \\ 58.31 \\ |
| \\ Level-7 \\ | \\ 34419 \\ | \\ 58.11 \\ |
| \\ Level-8 \\ | \\ 34407 \\ | \\ 58.09 \\ |
===== Usporedba audio formata =====
Audio formati se dijele na tri skupine:
* Nesažeti lossless formati (engl. uncompressed lossless)
* Sažeti lossless formati (engl. compressed lossless)
* Sažeti formati s gubitcima (compressed lossy)
Brzina prijenosa podataka (engl. bitrate) je definirana kao broj bitova koji se prenesu u jedinici vremena. Kada je riječ o audio datotekama brzina prijenosa podataka se iskazuje u kilobitima po sekundi – kbps. Pri usporedbi dviju audio datoteka, datoteka s većom brzinom prijenosa podataka će biti bolje kvalitete.
Nesažeti lossless formati sadržavaju sve informacije originalne snimke audio signala. S obzirom da se tišini pridjeljuje isti broj bitova kao i zvuku, nesažete lossless datoteke su velike. Primjeri ove vrste formata su:
* Waveform Audio File Format – WAV
* Audio Interchange File Format – AIFF
Sažeti lossless formati također sadržavaju sve informacije originalne snimke audio signala no u ovom slučaju se tišini pridaje vrlo malo bitova po sekundi i zvuk se sažima što rezultira u datoteci koja je gotovo upola manja od nesažete datoteke. S obzirom da i nesažeti i sažeti lossless formati sadrže sve informacije originalne snimke, moguće je transkodirati iz jednog u drugi i obrnuto bez gubitka podataka. Primjeri sažetih lossless formata su:
* Free Lossless Audio Codec – FLAC
* Apple Lossless Audio Codec – ALAC
* Monkey's Audio – APE
Lossy formati su uvijek sažeti. S obzirom da se sažimanjem nepovratno gubi dio podataka, lossy datoteke su uvijek manje od sažetih i nesažetih lossless datoteka. Najčešće se uklanjaju podaci koji odgovaraju višim frekvencijama koje ljudi ne mogu čuti. Lossy formati se ne smiju (iako je to moguće) transkodirati u bilo koji format, bilo da je lossless, neki drugi lossy format ili čak isti lossy format. Ako se lossy transkodira u lossless, nova datoteka će sadržavati samo podatke koji su se nalazili u lossy formatu, a ne podatke originalne snimke, dok ako se lossy transkodira u lossy biti će izgubljeno još više podataka originalne snimke.
* Primjeri lossy formata su:
* MPEG Layer 3 Audio – MP3
* Advanced Audio Encoding – AAC
* Windows Media Audio – WMA
* Dolby Digital Audio Codec 3 – AC3
* DTS Coherent Acoustic Codec – DTS
Tablica 2 Usporedba veličina datoteka različitih audio formata
| \\ Format | \\ Veličina [KB] |
| \\ WAV | \\ 59190 |
| \\ FLAC level-5 | \\ 34586 |
| \\ MP3 320 (CBR) | \\ 13684 |
| \\ MP3 256 (CBR) | \\ 11014 |
| \\ MP3 192 (CBR) | \\ 8345 |
| \\ MP3 128 (CBR) | \\ 5675 |
**Transparentnost **(engl. Transparency) je termin koji se koristi za opisivanje kvalitete audio zapisa lossy formata. Audio zapis se smatra transparentnim ako prosječni slušatelj ne može razlikovati lossy i lossless datoteku istog audio zapisa samo slušajući oba zapisa bez da zna koji je koji. Za većinu ljudi, MP3 192kbps (CBR) se smatra transparentnim. CBR (engl. Constant BitRate) znači da je brzina prijenosa konstantna kroz cijelu datoteku.
**Transkodirati** datoteku znači konvertirati je iz jednog u drugi format. Kod transkodiranja audio formata razlikujemo dobro i loše transkodiranje.
Dobro transkodiranje je ono tijekom čijeg se procesa datoteka nikada ne konvertira u lossy format ili je datoteka samo u zadnjem koraku konvertira u lossy format. Primjeri dobrih transkodiranja:
* Nesažeti lossless → sažeti lossless
* Sažeti lossless → nesažeti lossless
* Sažeti lossless → sažeti lossless
* Nesažeti lossless → lossy
* Sažeti lossless →lossy
Loše transkodiranje je ono tijekom kojega je datoteka konvertirana jedan ili više puta u lossy format ili je datoteka konvertirana iz lossy u lossless format. Primjeri loših transkodiranja:
* Lossy format više brzine prijenosa podataka → lossy format niže brzine prijenosa podataka
* Lossy format iste brzine prijenosa podataka → lossy format iste brzine prijenosa podataka
* Lossy format → lossless format
===== Analiza spektra audio formata =====
Spektar audio signala je način prikaza podataka o frekvencijama tog signala. Analizirajući spektre audio signala moguće je zaključiti radi li se o lossless ili lossy formatu te ako je lossy je moguće zaključiti i točan format i brzinu prijenosa podataka s obzirom da različiti formati imaju različite gornje granične frekvencije. Spektrogram je prikaz frekvencija signala u vremenu.
Za transkodiranje je korišten program dBpoweramp koji za MP3 transkodiranje ima implementiran LAME enkoder. Spektrogrami i spektri su analizirani pomoću programa Audacity.
Na slikama 5. i 6. nalaze se spektrogram i spektar FLAC datoteke. S obzirom da je datoteka uzorkovana frekvencijom 44.1 kHz, prema Nyquistovom teoremu se filtriraju podaci niskopropusnim filtrom granične frekvencije 22050 Hz, te to vidimo i na grafovima. Ponekad lossless podaci mogu imati graničnu frekvenciju od 21.5 kHz ili postepeno smanjenje amplitude (engl. fade out) od 19 kHz prema višim frekvencijama.
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:flac5spektrogramflacdatoteke.png?600x252 |Spektrogram FLAC datoteke}}Slika 5 Spektrogram FLAC datoteke
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:flac6spektarflacdatoteke.png?600x316 |Spektar FLAC datoteke}}
Slika 6 Spektar FLAC datoteke
===== =====
Na slikama 7. i 8. nalaze se spektrogram i spektar WAV datoteke, uspoređujući te grafove s grafovima na slikama 5. i 6. ne primjećujemo nikakve razlike jer su oba formata lossless i sadrže sve informacije o zapisu.
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:flac7spektrogramwavdatoteke.png?600x254 |Spektrogram WAV}}Slika 7 Spektrogram WAV datoteke
{{:racfor_wiki:datoteke_i_datotecni_sustavi:flac8spektarwavdatoteke.png?linkonly|:racfor_wiki:datoteke_i_datotecni_sustavi:flac8spektarwavdatoteke.png}}
Slika 8 Spektar WAV datoteke
Na slikama 9. i 10. se nalaze spektrogram i spektar MP3 320 kbps (CBR) datoteke, uspoređujući ih sa grafovima lossless formata možemo odmah uočiti da je granična frekvencija pomaknuta na 20.5 kHz. Uz to kod MP3 formata može se primijetiti i „stepenica“ na 16 kHz, iznad koje se uklanjaju i tiši zvukovi radi uštede memorijskog prostora.
{{:racfor_wiki:datoteke_i_datotecni_sustavi:flac9spektrogrammp3320.png?linkonly|:racfor_wiki:datoteke_i_datotecni_sustavi:flac9spektrogrammp3320.png}}
Slika 9 Spektrogram MP3 320 kbps (CBR) datoteke
{{:racfor_wiki:datoteke_i_datotecni_sustavi:flac10spektarmp3320.png?linkonly|:racfor_wiki:datoteke_i_datotecni_sustavi:flac10spektarmp3320.png}}
Slika 10 Spektar MP3 320 kbps (CBR) datoteke
Na slikama 11. i 12. se nalaze spektrogram i spektar MP3 192 kbps (CBR) datoteke. Pri ovoj brzini prijenosa podataka primjećujemo da je granična frekvencija 19.5 kHz, te je „stepenica“ na 16 kHz još izraženija nego na slikama 9. i 10.
Slika 11 Spektrogram MP3 192 kbps (CBR) datoteke
Slika 12 Spektar MP3 192 kbps (CBR) datoteke
Na slikama 13. i 14. nalaze se spektrogram i spektar FLAC datoteke koja je dobivena transkodiranjem iz datoteke čiji su grafovi na slikama 11. i 12. Ova datoteka ima ekstenziju .flac i zauzima 32.3 MB, dok je MP3 192 kbps (CBR) datoteka zauzimala 8.14 MB, ali iz grafova vidimo da ovo nije lossless datoteka i da ima karakterističnu „stepenicu“ na 16 kHz od MP3 formata i da joj je granična frekvencija 19.5 kHz iako je uzorkovana s 44.1 kHz te možemo zaključiti da je ovo loše transkodiranje.
Slika 13 Spektrogram FLAC datoteke koja je dobivena transkodiranjem iz formata MP3 192 kbps (CBR)
Slika 14 Spektar FLAC datoteke koja je dobivena transkodiranjem iz formata MP3 192 kbps (CBR)
Na slici 15. nalazi se dio metapodataka datoteke čiji je zapis ponovno uzorkovan dvostrukom frekvencijom (engl. upsample), odnosno frekvencijom 88.2 kHz. Na slikama 16. i 17. primjećujemo da je granična frekvencija samo 22050 Hz, a ne 44100 Hz kako bi trebala biti da je originalni zapis bio uzorkovan frekvencijom uzorkovanja od 88.2 kHz.
Slika 15 Metapodaci iz exiftoola – primijetiti Sample Rate:88200
Slika 16 Spektrogram FLAC datoteke ponovno uzorkovanog zapisa dvostrukom frekvencijom
Slika 17 Spektar FLAC datoteke ponovno uzorkovanog zapisa dvostrukom frekvencijom
Na slikama 18. i 19. nalaze se spektrogram i spektar skladbe Fur Elise Ludwiga Van Beethovena. Na prvi pogled moglo bi se doći do pogrešnog zaključka da ovo nije lossless datoteka, iako ona to jest što možemo primijetiti prema tihom bijelom šumu na visokim frekvencijama (plave točkice). Ovakav izgled spektrograma i spektra je normalan za klasičnu glazbu zbog frekvencija koje reproduciraju klasična glazbala.
Slika 18 Spektrogram FLAC datoteke skladbe Fur Elise
Slika 19 Spektar FLAC datoteke skladbe Fur Elise
Na slici 20. se nalazi spektrogram FLAC datoteke pjesme The Razors Edge grupe ACDC iz 1990. godine. Na slici možemo primijetiti liniju iznad 15 kHz, no u ovom slučaju iznad te linije nema brisanja tihih zvukova kao što smo mogli primijetiti na spektrogramu MP3 datoteka. Na slici 21. je pobliže prikazana ta linija te uočavamo da se nalazi oko frekvencije 15625 Hz. Nekada su se u studijima za snimanje nalazili CRT monitori koji su „zujali“ upravo na toj frekvenciji. To nije oznaka lošeg transkodiranja niti lossy signala.
Slika 20 Spektrogram FLAC datoteke pjesme The Razors Edge grupe ACDC iz 1990. godine
Slika 21 Približeni spektrogram FLAC datoteke pjesme The Razors Edge grupe ACDC iz 1990. godine oko frekvencije 15625 Hz
===== Zaključak =====
FLAC je lossless format koji, iako je sažet, sadržava sve podatke originalne snimke audio signala. Uz to, može sadržavati i razne metapodatke što ga čini izvrsnim formatom za arhiviranje audio datoteka. Iako proces kodiranja ovisno o faktoru sažimanja može biti relativno spor, dekodiranje datoteke je brzo te gotovo da ne ovisi o razini sažimanja. Analizom spektra moguće je prepoznati radi li se o „pravoj“ FLAC datoteci koja sadrži sve podatke originalne snimke ili o lošem transkodiranju te u kojem je formatu ta datoteka bila prije.
===== Izvori =====
[1] Službena stranica FLAC formata:[[https://xiph.org/flac/|https://xiph.org/flac/]]
[2] Teorija za pripremu za intervju za privatni tracker za audio torrente:[[https://opentrackers.org/whatinterviewprep.com/index.html|https://opentrackers.org/whatinterviewprep.com/index.html]]
[3] Pjesma „10 – Motherboard.flac“ s albuma Daft Punk - Random Access Memories (2013)
[4] Skladba „13 Für Elise.flac“ s albuma Ludwig van Beethoven - 25 Beethoven Favorites (1996)
[5] Pjesma „04 - The Razors Edge.flac“ s albuma ACDC - The Razors Edge (1990)