FLAC - codecul audio liber fără pierderi

Felul în care ascultăm muzică s-a schimbat dramatic în ultimii ani. Acum 8-9 ani, cel puțin în cazul meu, casetele audio erau principala formă de distribuție comercială a muzicii. Foarte puțini dintre prietenii mei aveau poate un „walkman” cu CD. Ascultatul muzicii pe calculator îl priveam ca pe o folosire neconvențională a „aparatului”, iar muzica în formate digitale portabile se găsea greu.

Desigur, cu o decadă înaintea perioadei sus-menționate, erau mult mai comune vinilul și benzile de magnetofon, mijloace de distribuție aproape dispărute acum. Felul în care ascultăm muzică are o tendință continuă de schimbare în funcție de „jucăriile” aflate la dispoziția melomanului. Acum pot spune cu certitudine că ne aflăm în epoca muzicii digitale. Muzica poate fi ușor cumpărată din magazine virtuale de muzică, vânzările digitale fiind comparabile ca volum cu alte metode de distribuție consacrate. „Jucăriile” pentru ascultat muzică s-au diversificat mult - de exemplu, aproape orice telefon mobil modern poate reda şi stoca muzică.

Comună atât perioadei de acum 10 ani cât și prezentului este folosirea la scară largă a formatului MP3. Deși este recunoscut de majoritatea platformelor de redare, acest format este îmbătrânit, existând alternative mai performante pentru redarea audio din punct de vedere al compresiei, raportului calitate la dimensiunea fișierului sau versatilitaţii. Dintre acestea amintesc: AAC şi ALAC de la Apple, FLAC, OGG Vorbis, codecul Monkey Audio, WavPack.

Ca formate libere, cele mai promițătoare în prezent sunt OGG Vorbis pentru compresia cu pierderi și FLAC pentru compresia fără pierderi.

De ce fără pierderi

Un fișier audio înregistrat într-un format fără pierderi („lossless”) conține toată informația existentă în materialul sursă (CD audio sau format audio brut - de exemplu WAV). Algoritmii de compresie fără pierderi fac ca dimensiunea fișierelor să fie mai mică, de regulă între 40% si 60% din dimensiunea fișierului sursă. Fișierele comprimate fără pierderi pot fi despachetate, obținând materialul sursă nemodificat. De notat deasemenea că, datorită complexității sporite a algoritmului de compresie, ascultarea fișierelor audio fără pierderi necesită o putere de calcul mai mare.

Compresia cu pierderi („lossy”) implică eliminarea informațiilor considerate inutile ascultatorului în favoarea unei dimensiuni a fișierelor mult mai mică (5-20 de ori, în funcţie de agresivitatea compresiei). În funcție de pragul de comprimare, se consideră că ascultătorii neantrenaţi nu pot auzi majoritatea detaliilor acustice care fac diferența între materialul sursă și varianta comprimată cu pierderi. Creșterea în calitatea audio simţită de ascultător raportată la dimensiunea fișierelor scade foarte mult cu cât crește rata de eșantionare („sample rate”) a fișierului ascultat.

În consecință, de ce ar dori cineva să folosească un format fără pierderi? Pentru început, este important şi în cazul formatelor cu pierderi să se considere factorul calitativ: un fişier cu nivel inferior de compresie (de exemplu: sub 200 kbps) va conţine multe semne suparatoare de compresie şi va avea o calitate mică a detaliului. Pentru oricine vrea să îi fie gâdilată urechea într-un mod plăcut, această variantă este nefezabilă.

Dar şi formatele cu pierderi pot avea o variantă "extremă" (deşi nu toate formatele au!). Să considerăm, de exemplu, un fişier encodat cu OGG Vorbis la calitatea cea mai mare (500 kpbs - informativ, fişierele lossless au bitrate de 1000-1200 kbps, deci ar ocupa cel puţin de 2 ori mai mult spaţiu pe disc). Orice om cu simţ auditiv în partea mediană a clopotului gausian (şi eu mă includ aici) va percepe acest fişier ca fiind 99%-100% identic ca şi experienţa auditivă cu fişierul lossless.

Ce m-ar determina pe mine, ca ascultator, să nu mă rezum la formatul OGG Vorbis de 500? În cazul meu, argumentele sunt următoarele:

  • fişierul fără pierderi conferă o notă de autenticitate. E vorba de principiu: lossless oferă cel mai înalt nivel de calitate posibil pentru materialul audio
  • detaliile audio subtile, deşi greu de simţit, pot face diferenţa între o audiţie placută şi una absolut catartică. Auzul poate fi antrenat să caute aceste detalii minuscule, mai ales în muzica de o complexitate mai mare - clasică, orchestrală, jazz.
  • contează mult şi scula folosită pentru audiţie. Pe un telefon mobil, poți să asculţi fişiere encodate folosind un algoritm adaptat special pentru căştile sau difuzoarele acestuia, la o rată de eşantionare mică - nu este nevoie de mai mult. Dacă ai un sistem audio cât de cât decent, merită încercată audiţia fără pierderi. Dacă ai un monstru de sistem audiofil, orice sub calitatea maximă înseamnă că îți baţi joc de acesta.
  • spațiul pe disc nu mai este foarte relevant

Compresia fără pierderi este cea mai eficientă metodă de a stoca o copie a unui CD pentru reproducerea ulterioară. Dacă CD-ul este distrus sau pierdut, folosind fişierul fără pierderi se poate inscripţiona un CD nou, identic ca şi calitate audio.

FLAC

FLAC (Free Lossless Audio Codec) este un codec audio liber, fără pierderi. Prima versiune a apărut în 2001, în prezent fiind menținut de Fundația Xiph.Org, dezvoltatorii altor formate media libere precum Ogg Vorbis sau Ogg Theora.

Principalele avantaje ale codecului sunt:

  • este complet liber (utilitarul în linie de comandă este GPL, iar biblioteca este BSD) deci poate fi adaptat sau îmbunătățit,
  • distribuția nu este constrânsă de brevete pentru compresie sau redare,
  • este popular ca format pentru dispozitive fizice (playere de buzunar, combine etc.)
  • formatul său de redare este recunoscut ca standard de foarte multe programe moderne de ascultat muzică (de exemplu: programele de ascultat muzică de pe Linux, foobar2000). Chiar şi pentru cele care nu îl recunosc imediat (Winamp), există pluginuri uşor de instalat care să facă posibilă redarea).
  • procesul de decodare este foarte rapid
  • dimensiunea fișierelor rezultate este comparabilă cu a celor mai eficiente formate fără pierderi (diferența dintre acestea este de sub 5%)

Câteva teste de performanţă pertinente:

http://members.home.nl/w.speek/comparison.htm

http://flac.sourceforge.net/comparison.html

http://wiki.hydrogenaudio.org/index.php?title=Lossless_comparison

http://www.monkeysaudio.com/comparison.html

Concluzii:

  • dintre codecurile demne de luat în seamă, Monkey Audio este cel mai eficient ca dimensiune a fişierelor, FLAC generând fişiere cu 1-3% mai mari.
  • ca viteză de encodare, cele mai rapide sunt WavPack şi TTA, FLAC şi Monkey Audio fiind imediat după.
  • ca viteză de redare, FLAC este de departe cel mai eficient dintre codecurile mentionate aici. O trăsătură unică a FLACului este că timpul de redare nu depinde de nivelul de compresie folosit.

De notat că am luat în considerare numai variantele de compresie normale, variantele foarte agresive fiind, după cum se vede în teste, mult mai puţin eficiente ca timpi de codare/redare, şi nefezabile folosirii la scară largă. Deasemenea nu am considerat formatele mai vechi, care nu se mai dezvoltă (de exemplu: Shorten, care, deşi este un codec foarte rapid, oferă rate de compresie mult inferioare celorlalte formate şi nu mai este dezvoltat de câţiva ani).

Copierea unui CD audio pe GNU/Linux

Pentru copierea unui CD audio în mod corect trebuie folosit un soft specializat. CD-ul audio este conceput astfel încât să ignore erori de citire (de exemplu zgârieturi), redând informația în timp real dispozitivului audio. Din acest motiv, simpla citire a informației de pe CD-ul audio nu este suficientă pentru a obține o copie perfectă.

În Windows, se poate folosi Exact Audio Copy. Ca alternative libere există cdrtools, cdparanoia și altele.

Pentru exemplul curent, am folosit cdparanoia. Un executabil gata de folosire poate fi descărcat de aici. Programul este foarte ușor de folosit, de exemplu detectând automat parametrii legați de dispozitivul fizic sau felul în care a fost scris discul.

Cdparanoia are multe obțiuni pentru utilizare - de exemplu, pentru extragerea anumitor melodii sau chiar anumitor secțiuni din melodie. Pentru obținerea unui fișier cu tot conținutul discului audio, se apelează astfel:

./cdparanoia -wL 1-

Se obține un fișier .wav cu numele implicit, care poate fi comprimat folosind FLAC. Dacă se dorește punerea fiecărei melodii în alt fișier se apeleaza astfel:

./cdparanoia -wBL 1-

Notă: fișierele obținute ar trebui redenumite, dacă se cunoaște titlul acestora. Deasemenea, dacă s-a folosit prima versiune, trebuie scris un fișier .cue. Din nefericire, cdparanoia a fost gândit cu un design minimalist și nu poate face aceste lucruri automat. Deasemenea, fișierele sunt însoțite de un jurnal detaliat, folosit adesea pentru a atesta corectitudinea și autenticitatea copiei.

Codecul FLAC poate fi descărcat de aici. Folosirea este foarte simplă:

./flac -nivel fișier_intrare_1 [fișier_intrare2 ...]

Parametrul nivel reprezintă agresivitatea algoritmului de compresie. De regulă, se folosește 5.

Pentru decompresie se folosește:

./flac -d fișier.flac

Am efectuat teste folosind un cd audio (cu muzică de genuri variate) copiat ca fișier .wav (cu dimensiunea de 790,1 MO). 

  Timp de compresie Timp de decompresie Dimensiune fișier FLAC Rata de compresie
Nivel 1: 52,5 s 40 s 529,5 MO 0.670
Nivel 5: 1 m 12,5 s 49,5 s 495,2 MO 0.627
Nivel 8: 3 m 2 s 40 s 492,2 MO 0.623

Notă: deși se poate trece de la un format fără pierderi la unul cu pierderi, transformarea invers nu are sens. Calitatea FLAC-ului obținut dintr-un mp3 sau ogg va fi la fel ca cea a formatului lossy, ocupând spațiu de stocare inutil. De aceea, înainte de a copia un CD, trebuie să te asiguri că materialul audio este fidel și de calitate bună, și nu creat din fișiere comprimate cu pierderi.