Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

COMPRESIA AUDIO

calculatoare



+ Font mai mare | - Font mai mic



COMPRESIA AUDIO

Compresia audio

Compresia in general

     Inca din anii '80, la scurt timp de la aparitia primului PC, s-a constatat faptul ca spatiul disponibil pe orice mediu ce poate stoca date (hard disk, discheta, streamer, unitate optica) devine insuficient intr-un timp relativ scurt. Obtinerea unui dispozitiv de stocare de capacitate mai mare nu reprezinta mereu o solutie pentru ca implica niste costuri mari sau o manevrare greoaie (mai ales in cazul dischetelor), fara a mai vorbi de faptul ca nu toate mediile sunt sigure - dischetele, spre exemplu, avand sanse majore sa se defecteze dupa un timp oarecare. Asa s-a nascut ideea de comprimare (compresie) a datelor, informatiile putand fi arhivate, ocupand un spatiu mai mic decat cel initial. Nu vom face o istorie a programelor care au inlesnit aceasta operatie, vom mentiona doar faptul ca PKZIP si ARJ au dominat perioada de sfarsit a anilor '80 si cea de inceput a anilor '90, urmand ca apoi, dupa 1995, sa apara doua noi soft-uri dedicate acestui scop, cu performante superioare celor doua amintite anterior: RAR si ACE.



     Odata cu aparitia Internet-ului, a aparut o noua utilitate a compresiei: viteza liniei telefonice (sau a oricarei alte modalitati uzuale de transmitere din anii '90) era foarte mica, incompatibila cu volumul de date dorit a se descarca din reteaua mondiala. In prezent, un program ce ocupa 20 MB va necesita o durata de transfer de circa o ora pe o conexiune obisnuita dial-up, timpul fiind injumatatit in cazul in care el este comprimat. Se economisesc astfel bani si timp. Chiar si modemurile realizeaza intern compresie, dar ea este departe de performatele lui WinRAR sau WinACE, spre exemplu.
Desigur, in cazul comprimarii software este necesara decomprimarea ulterioara, operatie care necesita timp. Exista in schimb posibilitatea comprimarii transparente, datele fiind supuse acestei operatii fara ca utilizatorul sa stie acest lucru. Cu alte cuvinte, datele sunt comprimate si decomprimate automat - evident, cu o scadere mai mult sau mai putin observabila a vitezei de lucru, dar avantajul este clar: utilizatorul nu mai trebuie sa-si bata capul cu compresia, pur si simplu ruleaza programul de compresie si acesta face totul pentru el. Acest mod de comprimare a datelor se numeste comprimare in timp real.

     Pornind de la aceasta idee, comprimarea in timp real poate fi totala sau partiala. Cel mai bun exemplu de comprimare totala in timp real o reprezinta compresia unei partitii, utilizandu-se un software precum DoubleSpace, DriveSpace, Stacker etc. Dezavantajele sunt majore si constau in posibilitatea redusa de control si riscul mare de pierdere a datelor. Probabil ca autorii acestor soft-uri nu au considerat necesara dezvoltarea lor la un nivel de calitate ridicat, astfel ca ele au disparut de cativa ani buni.
Compresia partiala in timp real poate fi exemplificata prin sistemul de comprimare furnizat de Windows 2000/XP, sistemul de operare oferind posibilitatea micsorarii spatiului pe care datele il ocupa, prin intermediul sistemului de fisiere NTFS, aceasta cu pretul scaderii (de obicei nesemnificative) a vitezei de lucru.

Comprimarea poate fi realizata la nivel de fisier, deci daca aveti pe hard disk date folosite rar puteti opta pentru aceasta solutie.
     Tot comprimare partiala putem numi cazul in care un fisier este comprimat initial, el urmand sa fie decomprimat automat la apelare. Programul decodor, care decomprima automat informatiile, lucreaza perfect transparent, utilizatorul neluand la cunostinta faptul ca datele sale nu sunt in forma pura ci codificate printr-un algoritm de compresie. Astfel de exemple sunt formatele imagine (JPG, GIF, PNG), video (AVI, MPG, MOV) si de sunet (MP3, MPC, OGG etc).

Cum se realizeaza compresia datelor?

     Sa presupunem ca avem un fisier ce contine sirul de caractere "AAABBBBBCCCDDDDEFF". O metoda de comprimare a sa o reprezinta alaturarea numarului de repetitii cu litera in cauza, rezultand "3A5B3C4D1E2F". Am economisit 6 bytes, adica 50% din spatiul ocupat. Desigur, exemplul este banal, comprimarea decurgand pe baza unor algoritmi mult mai complecsi si mai eficienti (Huffman, Lempel-Ziv si altele - daca sunteti interesati puteti gasi informatii utilizand motorul de cautare Google).
     Sa luam alt exemplu: sirul "AAABBBBCCCDDDEEFFFGGG". Observam ca fiecare litera este repetata de trei ori, cu exceptia lui "B" si "E", care au factorul de repetitie 4 si respectiv 2. In cazul in care factorul ar fi tot 3 am obtine, dupa un algoritm banal "3(ABCDEFG)" in loc de "3A4B3C3D2E3F3G", economisind mai mult spatiu. Problema se pune daca ne putem lipsi de informatia legata de exceptia de la "regula celor 3", obtinand o compresie cu pierdere, fisierul decomprimat ulterior nefiind identic cu cel original. In cazul programelor, acest lucru este imposibil, un singur bit modificat ducand in general la imposibilitatea programului de a rula sau eventual la un comportament anormal; cum ar fi daca unele din literele care compun cuvintele din meniul unei aplicatii sa fie schimbate sau in cadrul unui program dedicat matematicienilor numarul pi sa aiba o valoare "usor" schimbata, de exemplu 3.10 sau 3.25? In cazul fisierelor ce contin date de tipul filmelor, imaginilor sau sunetului, lipsa unor informatii poate fi trecuta cu vederea (sau cu auzul, dupa caz). Exemple clasice sunt formatele de compresie video si audio cu pierdere de calitate - lossy, precum JPG, MPG, MP3. Prin opozitie, comprimarea fara pierdere poarta numele de lossless.

     Ratele de compresie variaza de la fisier la fisier. Spre exemplu, un BMP complet alb va fi comprimat la mai putin de 1% (fisierul-arhiva va avea o dimensiune de minim 100 de ori mai mica decat cel initial). Un program executabil va avea o rata de circa 50% iar un text de circa 30%. Un fisier deja comprimat nu mai poate fi redus inca o data - decat cu foarte putin si doar in unele cazuri - rezultand deci o compresie de 95-100% sau, mai grav, de peste 100%. Ceea ce inseamna ca aplicarea algoritmului de compresie a determinat cresterea si nu scaderea dimensiunilor, caz in care programul de arhivare sesizeaza acest lucru si aplica metoda store, adica fisierul respectiv este inclus in arhiva in forma sa initiala, necomprimata.

Reprezentarea digitala a sunetului. Primele formate de compresie audio

     Comprimarea unui WAV folosind un algoritm lossless clasic este o operatie destul de ineficienta. Prin WAV ne referim la un fisier cu extensia WAV, ce contine muzica, o copie fidela a unui CD audio. Pentru o mai buna intelegere a fenomenului, vom reda in continuare elementele principale ale stocarii muzicii in format digital.
     Un fisier WAV contine un numar imens de esantioane (sample-uri), fiecare fiind codificat pe 2 bytes (16 biti). Intre aceste sample-uri se poate trasa o functie sinusoidala, care reprezinta unda sonora, cu o aproximare destul de buna fata de sunetul analogic (real); pe axa verticala este reprezentata amplitudinea sonora iar pe axa orizontala timpul. Datorita naturii sale digitale, sunetul nu poate fi reprezentat pe calculator in forma sa perfect naturala, dar cu cat sunt mai dese aceste sample-uri in unitatea de timp, cu atat se poate trasa intre ele o functie mai apropiata de sunetul real. Metoda este numita PCM (Pulse Code Modulation). Un sunet cu mai putine esantioane este lipsit de frecvente inalte, aceste frecvente rezultand tocmai prin alaturarea unui numar mare de sample-uri. O rata de esantionare (sampling rate) buna si utilizata in cazul CD-urilor audio este cea de 44.1 KHz (44100 de esantioane pe secunda); pentru Hi-Fi e necesara o rata de pana la 96 KHz, iar pentru voce este suficient un numar de cel putin patru ori mai mic decat standardul, si anume 11025 sau chiar 8000.
     Explicatia pentru cele 44100 de esantioane pe secunda sta in faptul ca omul poate percepe, in cel mai bun caz, frecvente de pana la 22 KHz. Pentru functia sinusoidala necesara formarii sunetului trebuie sa avem un numar suficient de puncte descriptive, care reprezinta niste maxime si minime locale. Strictul necesar (dar nu si suficient) pentru ca functia sa poata fi reconstituita este un numar de sample-uri egal cu dublul frecventei dorite (cate un sample pentru minim si cate unul pentru maxim). Sa luam exemplul unui ton perfect, care este redat grafic printr-o functie sinus perfecta.

     Imaginea reprezinta un ton cu frecventa de 22050 Hz la o rata de esantionare de 44100 Hz. Scaderea cu 1 Hz a esantionarii duce la imposibilitatea pastrarii sunetului la frecventa dorita, fiind redate doar cele inferioare (inexistente in acest exemplu). Regula descrisa anterior poarta numele de Legea lui Nyquist.

44 KHz                                       6 KHz

     Am exemplificat in imaginile de mai sus o secventa audio complexa, reprezentata in 44 KHz si respectiv 6 KHz. Numarul de esantioane fiind mult mai mic in cel de-al doilea caz, sunetul este puternic denaturat, fiind pastrate doar frecventele joase. Prin upsampling (cresterea fortata a ratei de esantionare) se poate obtine, prin interpolare, un sunet mai bun, dar totusi departe de original deoarece o mare parte din informatia audio este pierduta iremediabil. Aceasta intrucat curba rezultata este foarte aproximativa, cu mai putine "urcusuri" si "coborasuri", mai aproape de reprezentarea unei functii trigonometrice simple.

44 KHz -> 6 KHz -> 44 KHz

     Putem face o analogie intre rezolutia unei imagini si rata de esantionare a unui sunet: la o rezolutie mare, exista un numar mai mare de pixeli care descriu imaginea, deci nivelul de detaliere este mai ridicat.
     Pentru a intelege mai bine efectul, puteti asculta cele patru secvente audio, la 44, 22, 11 si 6 KHz.

     Alta caracteristica a unui fisier WAV este rezolutia sa. Ca si in cazul adancimii de culoare a imaginilor, unde mai multe culori inseamna o imagine mai aproape de realitate, mai multi biti alocati unui sample inseamna un sunet mai "precis". In cazul uzual, sunt folositi 16 biti (2 bytes); pentru domeniul Hi-Fi este folosita rata de 24 sau chiar si 32 de biti (3, respecitiv 4 bytes). In trecut era utilizata rezolutia de 8 biti, deci fiecarui esantion ii era alocat un singur byte.
     Daca in cazul trecerii de la 16 la 24 sau 32 de biti diferentele nu se observa asa de usor, odata cu scaderea la 8 biti va aparea un zgomot de fond suparator, asa cum puteti vedea in aceste exemple: original, 8 biti. Cu alte cuvinte, un sample poate lua 65536 de valori (2 la puterea 16) in cazul rezolutiei de 16 biti si doar 256 de valori in cazul al doilea.

     O metoda de a imbunatati calitatea slaba datorata acestei scaderi de rezolutie este dithering-ul, adica generarea unui alt zgomot de fond, care sa "niveleze" sunetul; chiar daca zgomotul final va fi mai puternic, el va fi constant, oferind senzatia ca exista doua surse sonore: sunetul propriu zis si generatorul de zgomot. In primul caz, fara dithering, apare des senzatia unui sunet neclar, fenomen de multe ori mai suparator decat dithering-ul.
     Nivelul de dithering poate fi ales dupa necesitati, un nivel prea mare crescand zgomotul de fond, ceea ce evident ca nu este de dorit.

     Putem afirma ca, din anumite puncte de vedere, scaderea ratei de esantionare sau a rezolutiei reprezinta o compresie a sunetului cu pierdere de calitate pentru ca sunt eliminate o serie de aspecte ale sunetului astfel incat rezultatul final nu difera in mod fundamental de original. Cine doreste sa pastreze doar informatia redata de vocea umana, poate seta fara grija 8 KHz cu 8 biti si mesajul transmis va fi inteles fara probleme.
     Spatiul ocupat de un WAV necomprimat intr-o secunda este calculat astfel (in paranteza am trecut valorile standard in cazul unui CD audio): sampling rate (44100) * numarul de biti (16) * numar de canale (2 = stereo). Avem, astfel, 1.411.200 biti (sau 176.400 bytes) pentru muzica de pe un CD audio, ceea ce inseamna 1378,125 kilobiti/s. Am ajuns aici pentru a defini unitatea de masura acceptata in compresia audio: numarul de kilobiti pe secunda (kbps), numit si bitrate. Asa se explica bitrate-ul 14H afisat de player-ul Winamp in timpul redarii majoritatea fisierelor WAV (H fiind considerat multiplicatorul de 1000).

     O metoda de compresie larg raspandita in trecut in telefonie era oferita de algoritmii A-Law (folosit in America si Japonia) si μ-Law (folosit in celelalte zone ale lumii). In cazul reprezentarii normale, valorile pentru esantioane inscrise in fisierul WAV sunt reprezentate echidistant fata de axa; in cazul legilor A si μ este folosita o scara logaritmica, fiind disponibile mai multe valori pentru fiecare sample in jurul axei si mai putine la volum mare. Cu alte cuvinte, sunetele la volum mic (la care anomaliile sunt mai usor de perceput) au o calitate mai buna iar cele la volum mare o calitate mai slaba decat in cazul codarii simple pe 8 biti, aparand efectul de "trepte", oarecum opus celui de dithering despre care am vorbit mai devreme. Spatiul ocupat este acelasi, calitatea pe ansamblu este, in cazul redarii vocii umane, superioara.

   16 biti                      8 biti                              μ-Law

     Desigur, metoda este excelenta pentru telefonie sau alte domenii unde e nevoie de un algoritm de procesare cat mai simplu, dar solutia nu este viabila pentru muzica din simplul motiv ca nu este obtinuta o calitate satisfacatoare pentru aceasta.

     ADPCM (Adaptive Differential Pulse Code Modulation) este un algoritm superior, conceput tot pentru domeniul telecomunicatiilor. Stramosul sau, DPCM, se baza pe faptul ca diferentele dintre doua esantioane succesive sunt in general mici si pot fi reprezentate pe mai putini biti. ADPCM este o imbunatatire a acestuia, ce foloseste un algoritm mai complex pentru predictia esantioanelor urmatoare, minimalizand astfel scaderea calitatii. La volum redus, unde diferentele dintre sample-uri sunt mici, calitatea este foarte apropiata de original; in schimb, cand volumul creste, apar automat si diferente mai mari intre acestea si rezulta un zgomot de fond insotit de un fenomen sonor neplacut, de forma unor paraituri fine.
     Cele doua standarde larg raspandite provin de la Microsoft (MS-ADPCM) si International Multimedia Association (IMA-ADPCM), versiunea MS oferind o calitate ceva mai buna. In mod standard sunt folositi 4 biti pentru compresie, dar aplicatii precum CoolEdit permit utilizarea a 2, 3, 4 sau 5 biti, rezultand o calitate corespunzatoare; in cazul setarii pe 4 biti, calitatea este comparabila cu cea oferita de A-Law si μ-Law, dar spatiul ocupat este de doua ori mai mic. Unii utilizatori cu pretentii modeste de calitate ar putea accepta formatele pe 4 sau 5 biti pentru muzica, insa spatiul mare ocupat (bitrate de ordinul a 300-400 kbps) nu justifica acest lucru din moment ce exista alternative mult mai bune.

     Pentru o comparatie intre algoritmii mentionati pana acum, aveti la dispozitie o secventa audio comprimata cu fiecare dintre ei (original, μ-Law, IMA-ADPCM pe 2 biti)

Formatul MP3

     Inca din 1987, institutul Fraunhofer din Germania a inceput sa lucreze la un proiect destinat compresiei audio cu pierdere de calitate, bazat pe tehnica perceptual coding. Este vorba de un concept nou fata de cele descrise anterior, mai exact de un algoritm care exploateaza slabiciunile urechii umane, oferindu-i un sunet cat mai apropiat de cel original.
     Formatul MPEG Layer 1 (MP1), prima reusita a institutului, a fost folosit doar pentru casetele digitale Philips DCC (Digital Compact Casette, un competitor al lui MiniDisc-urilor Sony) intre anii 1992 si 1996. Urmasul sau, MPEG Layer 2 (MP2), a fost utilizat pentru sonorul Video CD-urilor si a altor dispozitive multimedia, fiind relativ raspandit si astazi in domeniul video. A treia versiune a standardului, MPEG Audio Layer 3, are avantajul unei calitati ridicate la bitrate-uri scazute, ceea ce i-a adus o popularitate foarte mare. Odata cu raspandirea Internet-ului si implicit a retelelor de tip peer-to-peer (incepand cu Napster), fenomenul MP3 a luat amploare, devenind un mijloc eficient de transfer si stocare a muzicii pe calculator.

     Perceptual coding este o tehnica ce permite eliminarea cu o acuratete destul de mare a sunetelor pe care urechea noastra nu le poate distinge, bazandu-se pe un model psihoacustic, adica modul in care urechea umana percepe undele sonore. In principiu, se cauta crearea unui astfel de model care sa duca la inmagazinarea sunetului folosind cat mai putini biti; nu se exclude posibilitatea unui sunet total diferit din punct de vedere matematic (esantioane cu valori departate de original) in conditiile in care urechea umana nu observa nici o diferenta.
     Am retinut din capitolul anterior faptul ca, pe masura ce punctele ce descriu functia sinusoidala a sunetului sunt mai numeroase, curba devine mai precisa. Downsampling-ul reprezinta eliminarea unui numar de esantioane sonore, in cazul scaderii de doua ori a ratei de esantionare urmand sa fie eliminate jumatate din sample-uri, din 2 in 2; curba rezultata are o precizie mai redusa iar calitatea sunetului este in mod constant mai scazuta. In schimb, in cazul compresiei MP3, sunt pastrate toate aceste puncte, dar ele
sunt puternic modificate fata de valorile initiale, generandu-se un sunet apropiat de original, dar nu identic, totul relativ la numarul de biti alocati. Pentru 128.000 biti (128 Kb) pe secunda se obtine o calitate multumitoare a sunetului, pentru 8 Kb/s se obtine o calitate mai slaba decat cea oferita de receptorul unui telefon.
     Altfel spus, aproximarea curbei este determinata de un algoritm logic, creat special pentru urechea omului, nu de o taiere barbara a esantioanelor.

     Prin encoder intelegem un program (eventual un modul dintr-o suita de programe) care transforma (codeaza) un fisier necomprimat intr-unul comprimat, folosindu-se de un algoritm particular, care se supune unui standard (in cazul de fata MP3). Cu cat algoritmul de compresie este mai bun, cu atat sunetul rezultat va fi mai de calitate. Un encoder capabil va sti sa mascheze detaliile sonore nesemnificative si sa evidentieze tocmai ce urechea umana asteapta, si anume un sunet foarte apropiat de original, aparent identic; totul se reduce in principal la modelul psihoacustic implementat in encoder.

     Sa vedem in ce consta scaderea calitatii datorata compresiei MP3. Ea genereaza aparitia de "goluri" in cazul frecventelor inalte, ducand la aparitia a doua fenomene nedorite: aliasing-ul si ringing-ul. Pentru a evita acest lucru, aceste frecvente sunt pur si simplu eliminate din pasajul muzical, sunetul rezultat fiind "inchis", foarte asemanator cu cazul downsampling-ului. Cu alte cuvinte, downsampling-ul elimina prin natura sa frecventele inalte, pe cand la compresia MP3 aceasta eliminare este necesara pentru pastrarea calitatii sunetului in limite decente. In plus, chiar daca aliasing-ul nu este suparator intr-un caz particular, frecventele joase si medii sunt cele mai evidente intr-un pasaj muzical, deci avem un motiv in plus pentru a nu ocupa relativ inutil bitii (si asa putini) cu frecventele inalte.
     Aliasing-ul este cauzat de faptul ca, prin compresia MP3, sunetele mai slabe sunt eliminate, lasand locul celor mai puternice, pe care ascultatorul le aude mai bine. Insa, de la un anumit prag, mai exact in momentul folosirii unui bitrate prea scazut (deci encoder-ului ii este impus un numar de biti pe care sa ii utilizeze), sunt eliminate si sunete mai importante, pe care ascultatorul le aude in mod normal. Insa in pasajul urmator (prin pasaj intelegem segmente de ordinul zecimilor de secunda), sunt "extrase" alte sunete importante, ele fiind, in mod evident, diferite fata de primul caz. Daca primul pasaj contine o vioara solo, al doilea o vioara impreuna cu un pian iar al treilea din nou vioara solo, in primul si al treilea se va auzi clar vioara, iar in al doilea numai pianul pentru ca intensitatea sonora a acestuia ii este superioara viorii. Drept urmare, vioara se va auzi intrerupt in piesa cu pricina.
     Ringing-ul este un caz extrem al aliasing-ului, obtinut la bitrate-uri foarte mici; diferenta de intensitate de la un pasaj la altul fiind foarte mare, unda sonora se va asemana cu sunetul de telefon. Calitatea este in acest caz foarte slaba, putandu-se ajunge chiar si la eliminarea informatiei sonore de baza.
     Asadar, pentru a evita aceste efecte nedorite (dar cu pastrarea dimensiunii mici a fisierului rezultat), singura posibilitate (pe langa folosirea unui alt encoder - dar nu am ajuns cu discutia in acel punct) consta in eliminarea, uneori masiva, a frecventelor inalte, aceasta ori prin introducerea unui filtru, ori prin scaderea ratei de esantionare. Astfel, frecventele respective nu mai sunt deteriorate, ci eliminate pe de o parte, iar pe de alta
parte, in cazul codarii CBR sau ABR (vom vedea in paragrafele urmatoare ce inseamna) sunt salvati biti importanti care pot fi refolositi pentru frecventele mai joase, care compun sunetul propriu-zis.
     Omul, dupa cum se stie, aude sunete pana in zona a 16-20 KHz (a nu se confunda cu rata de esantionare, care se masoara tot in KHz), aceasta acuitate scazand odata cu varsta. Un filtru acceptabil este cel care elimina frecventele de peste 16 KHz, o valoare mai scazuta fiind de neacceptat pentru auditie de calitate.
     Iata doua exemple de aliasing si ringing, obtinute prin pastrarea fortata a frecventelor inalte si a ratei de sampling de 44.1 KHz in cazul unui bitrate de 80 si respectiv 40. La aceleasi bitrate-uri dar cu aplicarea filtrelor la 11 si respectiv 6 KHz am obtinut rezultatele urmatoare: fara aliasing, fara ringing.

     Daca in cazul downsampling-ului si al conversiei de la 16 la 8 biti, calitatea oricarei bucati muzicale era cu aproximatie aceeasi fata de original, pe tot parcursul piesei muzicale, in cazul lui MP3 lucrurile stau altfel: in functie de numarul de instrumente care intra in ecuatie, de tipul lor sau, mai general, de genul muzical ascultat, compresia MP3 poate oferi o calitate excelenta sau poate "zgaria" urechile ascultatorului. O sonata pentru pian de Chopin nu are nevoie de prea multi biti, pe cand o orchestra intreaga, unde se suprapun zeci de instrumente, genereaza un sunet complex si greu de codat.
     Efectele compresiei le putem imparti in doua categorii: cele care modifica sunetul fara a oferi un sunet deranjant (prin schimbarea timbrului instrumentelor, prin eliminarea anumitor detalii muzicale sau prin taierea frecventelor inalte) si cele care distrug piesa muzicala, facand-o greu sau imposibil de ascultat din cauza imperfectiunilor mai mult decat evidente. Taierea frecventelor poate, teoretic vorbind, sa estompeze la nesfarsit scaderea calitatii datorate compresiei, insa sub un anumit prag muzica nu mai poate fi numita muzica, ci un amalgam de frecvente joase fara prea multa noima. De aceea, encoder-ul va realiza automat un compromis intre scaderea de calitate si scaderea benzii de frecvente.
     Derivat din aliasing este "umezirea" percutiei, instrumentele care o compun oferind la lovire un sunet asemanator cu cel perceput atunci cand aruncam un obiect usor in apa, asa cum putem observa si din acest exemplu (fenomenul este cunoscut sub numele de pre-echo). De asemenea, literele "s", "s" si "t" din vocea umana, instrumentele cu coarde dar si de suflat, aplauzele, precum si instrumentele care genereaza ecouri lungi si sunt combinate cu alte instrumente sau voci, sufera cel mai mult de pe urma compresiei.

     O extensie a formatelor MPEG Layer 2 si Layer 3 o reprezinta MPEG 2 si MPEG 2.5 (a nu se confunda cu layer-ele 1, 2 si 3). MPEG 1 (sau 1.0), versiunea clasica, este folosita pentru ratele de sampling de 32, 44 si 48 KHz, pe cand MPEG 2 (sau 2.0) pentru 16, 22 si 24 KHz, iar MPEG 2.5 pentru 8, 11 si 12 KHz. Pentru a simplifica lucrurile, un MP3 obisnuit, obtinut din copierea unei piese de pe un CD audio (operatie numita ripping) este un MPEG 1.0 Layer 3. Variantele 2.0 si 2.5 nu se pot obtine decat la rate de esantionare mai mici, neuzuale pentru muzica.

Tehnici de imbunatatire a formatului MP3 (VBR, Joint-Stereo)

     VBR constituie prescurtarea de la variable bitrate. Pentru a intelege mecanismul bitrate-ului variabil trebuie descrisa structura unui fisier MP3.
     Frame-ul este unitatea indivizibila, prezenta in majoritatea formatelor ce stocheaza date, fie ele de sunet, film sau imagine. Un frame contine, in cazul formatelor lossy, informatiile cele mai reprezentative din unitatea de timp (in cazul sunetului) sau de spatiu vizual (pentru imagini). El poate avea dimensiune fixa sau variabila, in primul caz tehnica fiind numita CBR (constant bitrate), in al doilea caz VBR. La CBR, bitrate-ul este specificat de utilizator la inceputul codarii si toate frame-urile vor contine acelasi numar de biti, indiferent de nevoile reale. VBR detine avantajul modelarii numarului de biti in functie de necesitati; daca algoritmul "simte" ca sunt necesari mai multi biti pentru un frame, va genera un bitrate local mai mare sau mai mic. Cu alte cuvinte, CBR inseamna bitrate constant, calitate variabila, iar VBR inseamna bitrate variabil, calitate constanta.
     Pentru un MP3, exista cateva dimensiuni clasice ale frame-ului, indiferent ca este aleasa optiunea CBR sau VBR, cele mai reprezentative fiind de 96, 112, 128, 160, 192, 224, 256 si 320, si indiferent de nevoile reale sau de preferinta utilizatorului nu poate fi ales un bitrate intermediar.
Exista cateva optiuni disponibile la codarea MP3 VBR. In primul rand, poate fi specificat un bitrate minim si unul maxim; astfel, indiferent de "dorinta" algoritmului, nu se va cobori sub valoarea minima si nu se va depasi valoarea maxima. Optiunea este utila in caz ca anumite pasaje sunt codate la un bitrate mic, algoritmul putandu-se insela in privinta nevoii de bitrate mic/mare. In al doilea rand, exista posibilitatea specificarii unui bitrate mediu dorit (ABR = average bitrate). Chiar daca bucata muzicala nu necesita acel numar de biti, se incearca, pe cat posibil, atingerea bitrate-ului specificat, ceea ce duce la o calitate mai scazuta decat in cazul VBR. Avantajul principal al lui ABR: se cunoaste de dinainte de codare dimensiunea (aproximativa) a fisierului rezultat, spre deosebire de VBR, care aloca mai eficient bitii dar da nastere unui fisier de dimensiune impredictibila.

     Joint Stereo (JS) este numele generic atribuit unor tehnici de codare prin care informatia stereo este prelucrata diferit fata de metoda clasica (stocarea independenta a celor doua canale). Aceasta ori prin indepartarea de informatie (in locul acesteia, bitii ramasi liberi fiind folositi pentru a stoca informatii legate de sunetul propriu-zis), ori printr-o codare alternativa, mai eficienta. Tehnica se foloseste de faptul ca, in majoritatea cazurilor, diferentele dintre cele doua canale nu sunt foarte mari. Intr-un caz extrem, in care fisierul codat contine doua canale (aproape) identice, aplicandu-se modul stereo simplu s-ar risipi inutil multi biti pretiosi.
     Metoda clasica de JS este denumita Intensity Stereo (IS), care uneste cele doua canale in domeniul frecventelor inalte, ducand per total la o senzatie intermediara dintre sunetul stereo si mono. Frecventele inalte sunt mai greu de perceput de catre om si de aceea in cazul lor este neglijata stereofonia. Metoda nu este recomandata decat atunci cand aceasta pierdere este mai convenabila decat o calitate foarte scazuta a sunetului, cu alte cuvinte in cazul bitrate-urilor mici. In general, e de preferat chiar si un sunet mono decat un aliasing sau ringing care practic distruge sunetul.

     Mid/Side Stereo este o alta metoda de tip Joint Stereo (s-a incetatenit aceasta denumire desi M/S Stereo nu are nici o legatura cu unirea canalelor pe care o anunta cuvantul "joint") prin care encoder-ul transforma coordonatele "stanga" si "dreapta" in unele de tip "mijloc" si "lateral". Logica este bazata pe matematica de clasa a cincea: daca notam stanga cu L (left) si dreapta cu R (right), iar L si R au valorile a si b, aceste valori pot fi deduse din relatiile a' = (L+R)/2 (mijloc) si b' = (L-R)/2 (lateral), care devin variabilele principale. Asadar, in loc ca fisierul MP3 sa contina a-uri si b-uri, va contine a'-uri si b'-uri, informatia finala fiind refacuta intr-un mod similar. In realitate, formula depinde de la encoder la encoder, Lame folosind, spre exemplu, relatia (L+/-R)/sqrt(2) (sqrt = radical).
     Compresia este realizata ca si cum cele doua canale originale ar fi cel de mijloc si cel lateral. Avantajul consta in faptul ca avem de-a face cu o metoda alternativa de codare, care este selectata de la caz la caz. Daca stanga si dreapta sunt identice sau foarte apropiate, canalul lateral va fi zero sau aproape zero, numarul de biti alocati lui fiind foarte redus. Daca stanga si dreapta difera foarte mult, este mai eficienta folosirea modului stereo simplu, iar acest lucru il decide encoder-ul pentru fiecare frame.
     De retinut faptul ca M/S Stereo nu determina cresterea calitatii sunetului decat in modurile CBR si ABR, cand encoder-ul este limitat la un numar (maxim) de biti. In cazul lui VBR, folosirea sa doar va scadea dimensiunea fisierului final (bitrate-ul mediu va fi mai mic).

     Lame, cel mai bun encoder MP3, lucreaza exclusiv cu modurile Mid/Side Stereo si Stereo "normal". Utilizarea lui M/S Stereo este recomandata la orice bitrate pentru ca, in cel mai nefericit caz (imposibil de intalnit in practica), calitatea M/S Stereo va fi similara modului stereo simplu. Totusi, prima varianta (IS) - neimplementata in Lame, desi elimina multa informatie stereo, salveaza mai multi biti decat M/S Stereo, folosirea ei fiind destinata bitrate-urilor foarte mici (de 96 kbps sau mai putin).
     Exista si alte tipuri de JS, numite Narrowing of Stereo Image si Simple Stereo, care elimina aproape complet informatia stereo, utilizarea lor nefiind recomandata decat in situatii speciale.

     In cealalta directie se afla modul Dual Channel (nici o legatura cu controller-ele de memorie). Cea mai simpla explicatie rezulta dintr-un exemplu: avem un MP3 stereo (JS sau Stereo). Pentru canalul din stanga, care contine o informatie audio mai simpla, este alocat un procent de doar 40% din numarul de biti, pentru cel din dreapta ramanand disponibili 60%. Prin Dual Channel, ambele canale vor primi exact jumatate din numarul de biti, indiferent de diferentele de complexitate, rezultand, evident, o calitate mai scazuta decat in cazul stereo normal. Folosirea acestei optiuni nu are sens decat daca cele doua canale sunt total diferite (canale de sunet ale unui film in limbi diferite).

Evolutia lui MP3 si encoder-ele existente

     Desi a fost dezvoltat initial de catre institutul Fraunhofer si a patruns pe piata in 1994 (prima versiune dateaza din 13 iulie 1994), specificatiile formatului au iesit la lumina si au permis crearea de diverse encodere care se supun standardului (deci fisierele create pot fi decodate de orice player care cunoaste formatul MP3). Programul L3ENC, dezvoltat de institut si avand o interfata la nivel de linie de comanda DOS, a intrat in istorie pentru o calitate exceptionala a codarii si o viteza foarte slaba. Ulterior, firma Xing Technology a lansat un program comercial, Xing Audio Catalyst, ce oferea posibilitatea extragerii pieselor muzicale de pe CD direct in format MP3. Succesul sau a fost foarte mare datorita vitezei impresionante, insa s-a pierdut din vedere calitatea audio, inferioara lui Fraunhofer (pe numele complet Fraunhofer-Gesellschaft, de unde si prescurtarea FhG). Mai mult, au aparut pe piata encodere foarte slabe calitativ, precum Blade sau Plugger+, dezvoltate cu scopul de a oferi o alternativa freeware la programele comerciale si putem spune ca ele si-au indeplinit scopul. Cine dorea calitate, platea pentru Fraunhofer, cine dorea viteza opta pentru Xing, cine era interesat de ceva gratuit avea de asemenea de unde alege. Totul pana cand Lame (Lame Ain't an MP3 Encoder), un encoder open-source, a depasit FhG din punct de vedere al calitatii si s-a apropiat de Xing ca viteza, aducand toate agumentele in favoarea sa. Dezvoltandu-se permanent si fiind gratuit, el a fost adoptat de multe software-uri, in acest moment fiind liderul incontestabil in ceea ce priveste codarea MP3.

     Inceputurile lui Lame dateaza din 1998, cand un anume Mike Cheng a modificat surselele standard de codare MP3, primele versiuni de Lame fiind simple patch-uri aplicate codului original. Cu timpul, Lame a fost imbunatatit de numerosi programatori, codul fiind rescris si adaugandu-i-se facilitati deosebite, precum tehnica VBR. In anul 2000, el a depasit din punct de vedere al calitatii concurentul direct sub acest aspect, FhG, in diversele sale variante, majoritatea comerciale. Chiar daca lucrul la Lame nu a incetat, versiunile noi apar rar si sunt mai mult experimentale, ultimele imbunatatiri majore fiind realizate in anul 2001.
     Singurul punct slab al lui Lame este absenta tehnicii Intensity Stereo (IS), detaliata anterior, tehnica ce ofera posibilitatea diverselor versiuni de FhG care o au implementata sa surclaseze Lame-ul la bitrate-uri foarte scazute (de ordinul a 64 kbps).
     Initiatorul lui Lame a preferat sa se axeze pe formatul MP2, initiand proiectul tooLame, care nu a avut succes mare, calitate foarte buna, superioara lui MP3, fiind obtinuta doar la bitrate-uri foarte mari. Totusi, el are cateva avantaje clare fata de encoder-ele clasice MPEG Layer 2, precum suportul VBR si calitatea aproape de maximul care se poate obtine folosind acest format.

     Dupa cum spuneam anterior, formatul MP3 se afla spre finalul dezvoltarii sale, cresteri semnificative de calitate nemaiputand avea loc. Desi maturitatea a fost desavarsita de Lame, versiunea initiala nu se afla departe de maximul atins ulterior. In schimb, diversele encodere gratuite dar de calitate indoielnica au crescut popularitatea formatului si au impanzit piata. De exemplu, multe reviste si site-uri declarau encoder-ul de la Xing castigator, pornind pe ideea ca utilizatorul este interesat in cea mai mare masura de viteza, calitatea fiind "tot pe acolo". Si intr-adevar, pentru cei mai multi consumatori de muzica (adica cei cu boxe cat palma) un MP3-Xing la 128 kbps suna perfect, sistemul audio nefiind in stare sa redea sunetele mai fidel decat atat. In plus, versiunea demo a soft-ului nu permitea alegerea altui bitrate decat cel de 128.
Iata ce ne spune Xing Audio Catalyst despre fiecare bitrate in parte:
- 96 kbps - Near CD-Quality, good choice for portable MP3 Players
- 112 kbps - CD-Quality, best choice for portable MP3 Players
- 128 kbps - CD-Quality, best choice for most users
- 160 - 192 kbps - Archival quality for high-end stereos
- 224 - 320 kbps - Archival quality for highest-end stereos

     Personal, detin un sistem audio extrem de departe de pretentiile unuia high-end, fara a mai vorbi de acel "highest-end", si totusi un MP3 la 160 kbps generat de acest encoder imi pare a avea o calitate sub limita acceptabilului. Mai departe, citim in help-ul acestui software: "MPEG files are smaller than other digital multimedia formats, so they use less disk space while maintaining the quality of the original source." La prima vedere, orice necunoscator isi va imagina o compresie fara pierdere de calitate, bazata pe un algoritm senzational care reduce spatiul ocupat de orice melodie la 9% din original. Nimic mai fals.

     Sa trecem la urmatorul "inculpat", Blade Encoder. Homepage-ul sau este https://bladeenc.mp3.no, unde aflam ca encoder-ul nu mai este dezvoltat. Mai departe gasim urmatoarea fraza: "BladeEnc is a very different mp3 encoder (compared to Fraunhofer, LAME etc) with a very unique approach to mp3 encoding." De asemenea, sunt criticate encoder-ele Xing si Gogo (o versiune veche de Lame care a cunoscut o dezvoltare separata, oferind o calitate destul de buna), despre care se mentioneaza ca au o calitate scazuta tocmai din cauza vitezei mari de codare: "The fastest encoders like Xing and Gogo are still much faster than BladeEnc, but they have to some extent compromised quality for speed." Orice test, si folosind nu sisteme audio hi-fi ci boxe de cativa dolari, va dovedi faptul ca fisierele codate cu BladeEnc au o calitate extrem de slaba chiar si la 320 kbps, mult sub Gogo, Xing si alte encodere, singurul concurent cunoscut fiind probabil Plugger+, despre care nu am gasit prea multe informatii dar care oricum nu este prea raspandit. Dar inutil, citam dintr-un review al lui BladeEnc: "Rock solid with high bit rates and excellent quality".
     Pentru cine vrea sa se convinga, am ales un exemplu poate putin exagerat, folosind bitrate-ul de 96 kbps, dar foarte edificator: Lame 96, Blade 96. Iar pentru cei cu urechi mai sensibile, avem alt exemplu: Lame 128 vs. Blade 320. Sunetul este foarte apropiat, dar putem sesiza in cazul lui Blade percutia mai "uda" decat in cazul lui Lame, desi bitrate-ul celui dintai este de 2,5 ori mai mare. Daca tineti cu orice pret, puteti asculta si un Blade la 128.
     Mai amintim de 8Hz-MP3, CannaMP3, M3E, SCMPX, Uzura, SoloH, X-Codec si lista probabil ca este mult mai mare. Toate aceste encodere au avut o raspandire restransa, o calitate si eventual o viteza nesatisfacatoare, dezvoltarea lor fiind oprita de obicei din motive legale, Fraunhofer avand o politica de licentiere menita sa descurajeze astfel de incercari.

     Encoder-ele se prezinta ori sub forma de program in linia de comanda, ori ca plugin (de obicei constand intr-un fisier DLL), utilizat de audio grabbere (programe care extrag de pe CD-uri piesele muzicale) precum CDex sau EAC (Exact Audio Copy), sau pur si simplu de frontend-uri (aplicatie special dedicata usurarii utilizarii alteia, oferind o interfata grafica user-friendly). De asemenea, soft-uri de scriere a CD-urilor, precum Nero, contin module de compresie/decompresie audio, ce permit comprimarea pieselor, respectiv scrierea directa pe CD a fisierelor comprimate (fara a fi necesara o decompresie care ar consuma timp si spatiu pe hard disk).

Setari recomandate pentru codarea MP3

     Indiscutabil, cel mai bun encoder MP3 este Lame. De aceea, ne vom referi in continuare doar la acesta, orice alt produs neaducand vreun avantaj major pentru a se justifica utilizarea sa, decat cel mult anumite versiuni de FhG la bitrate-uri foarte mici.
     Versiunile recomandate a encoder-ului Lame sunt 3.90.3 si 3.96.1, care pot fi descarcate de aici. A doua este mai rapida si ofera imbunatatiri de calitate in unele situatii, in schimb prima este cea mai testata si ofera siguranta deplina unui sunet bun, desi uneori nu cel mai bun. Pentru extragerea pieselor muzicale de pe CD (audio-grabbing) si convertirea lor in MP3 se recomanda EAC (Exact Audio Copy), care are avantajul de a oferi siguranta unei copieri lipsite de erori, aceasta daca sunt folosite setarile recomandate. Unele utilitare asemanatoare, de exemplu CDex, necesita un fisier DLL, inclus in arhiva Lame, si care va fi apelat pe parcursul codarii.

Pentru inceput va trebui sa va hotarati asupra dimensiunii alocate fisierului comprimat. Cu alte cuvinte sa alegeti bitrate-ul, in functie de "finetea" urechii, calitatea placii de sunet, a boxelor sau a castilor la care ascultati muzica precum si de spatiul pe care vi-l puteti permite pe disc. Tineti cont ca in viitor este posibil ca pretentiile sa va creasca, eventual odata cu un upgrade hardware, iar prietenii carora le veti imparti MP3-urile este la fel de posibil sa prefere un bitrate mai ridicat, fiind mai pretentiosi.
     Comanda corecta pentru compresia cu Lame (pe care o veti introduce in optiunile lui EAC sau, daca doriti, o veti executa de la prompt-ul DOS) este Lame fisier_input.wav [fisier_output.mp3] (ultimul parametru este optional).
     Daca aveti un hard disk de minim 120 GB pe care intentionati sa il folositi in mare parte pentru stocarea muzicii, puteti folosi fara probleme bitrate-ul constant de 320 kbps oferit de Lame care, impreuna cu setarea Joint Stereo, ofera calitatea maxima care poate fi obtinuta cu ajutorul formatului MP3, foarte apropiata de cea a CD-ului audio. Daca aceasta calitate nu va satisface, nu va ramana decat optarea pentru alt format de compresie, eventual pentru unul lossless. Parametrul pentru acest tip de codare este --alt-preset insane. De fapt, acest preset reprezinta o combinatie intreaga de parametri, insa pentru simplificare s-au creat cateva standarde de calitate, printre care este si cel "insane". Daca doriti o dimensiune mai mica a fisierelor, aveti optiunea --alt-preset extreme, din care rezulta MP3-uri la un bitrate de aproximativ 220-270 kbps, fiind folosita tehnica VBR. Pentru cei mai putin pretentiosi si/sau care tin la spatiul ocupat, exista optiunea --alt-preset standard, care ofera, de la caz la caz, un bitrate mediu de 180-220 kbps, in functie de piesa codata. Daca doriti sa specificati un anume bitrate mediu, puteti folosi tehnica ABR, sub forma parametrilor --alt-preset 240 (sau orice alt bitrate) dar calitatea va fi mai scazuta decat in cazul VBR. Exista, de asemenea, o setare special conceputa pentru player-ele portabile, si anume --alt-preset standard -Y, care limiteaza spectrul de frecvente la aproximativ 16 KHz, oferind un bitrate de circa 160 kbps; frecventele mai inalte sunt practic insesizabile in medii zgomotoase, adica cele in care MP3 player-ele sunt adesea purtate.
     Cresterea maxima de calitate este inregistrata pana la 192 kbps, dupa care pentru un plus de cateva procente de acuratete poate fi necesar un spatiu mult mai mare. Totusi, cei mai pretentiosi vor opta probabil pentru preset-ul "extreme", care reprezinta un compromis foarte bun intre calitate (excelenta, de altfel) si spatiu ocupat.
     Ca o paranteza, parametrii sub forma de cuvinte sunt precedati de doua liniute iar cele care constau intr-o litera au nevoie de una singura. Regula este preluata din lumea Linux-ului.

     Tehnica VBR detine avantajul faptului ca nu detine vreo limitare in privinta bitrate-ului (decat la cel de 320, prevazut de standardul MP3), ci doar o recomandare vaga. Pentru un fragment de pian solo, in cazul preset-ului "extreme", va rezulta un bitrate din zona lui 220; in schimb, o combinatie de instrumente complet diferite (cu coarde, de percutie, de suflat), eventual impreuna cu vocea umana, va produce bitrate-uri mai apropiate de 270 kbps (si fara a fi limitate la acest numar, care este orientativ). In schimb, optiunea ABR 240 de exemplu, va produce bitrate-uri medii foarte apropiate de valoarea 240, cu plus sau minus maxim 10 kbps. Cu alte cuvinte, o piesa greu de codat va avea o calitate mai scazuta decat una usor de codat, chiar daca ambele sunt cantate de aceeasi formatie si se afla pe acelasi album.
     Nu se recomanda folosirea de bitrate-uri sub 192 (decat cel mult ca VBR, in jur de 170-180). Daca ar fi sa facem o statistica privind proportia de fisiere MP3 din toata lumea la bitrate de 128, vom afla ca procentul lor este peste jumatate, poate trei sferturi din numarul total. Totusi, lumea muzicii digitale a progresat odata cu progresul tehnicii de calcul, in zilele noastre placile de sunet de calitate (incluzand chiar si "amaratul" de AC '97, integrat pe placile de baza) fiind mult mai numeroase decat in trecut. Acelasi lucru se poate spune si despre boxe, 20-30$ cheltuiti pe acestea intr-un sistem de minim 400$ nu creeaza o gaura in buzunar. Toate aceste dispozitive fac ca sunetul sa fie redat mai fidel, iar in aceste conditii un MP3 la 128 kbps isi dovedeste rapid limitarea in privinta calitatii, mult mai evident decat cu cativa ani in urma, cand el era ascultat pe o placa de sunet cu un chip antic ESS si pe o pereche de boxe de dimensiuni foarte mici. Daca inca nu v-ati convins, incercati sa socotiti spatiul pierdut in cazul in care veti recurge la un bitrate de 192 in locul celui de 128. Presupunand ca aveti un hard disk plin cu fisiere MP3 la 192 kbps, aceeasi cantitate de muzica obtinuta la 128 kbps cu un HDD de 80 GB o puteti avea prin inlocuirea acestuia cu unul de 120 GB. Care este diferenta de pret?

     Bitrate-urile mai mici de 128 nu sunt utile decat cel mult pentru MP3 player-ele portabile, in caz ca tineti cu orice pret sa inghesuiti pe ele mai multe ore de muzica. Insa alte formate ofera o calitate mult mai buna in acest caz, singura problema fiind suportul oferit din partea player-ului.
     Mai mentionam posibilitatea crearii de fisiere MP3 la bitrate-uri mai mari de 320 cu ajutorul optiunii --freeformat bitrate de care dispune encoder-ul Lame. Dezavantaje: incompatibilitate cu majoritatea player-elor (in cazul lui Winamp, doar plugin-ul MAD este capabil sa le decodeze), calitate nu cu mult crescuta fata de MP3 320, in timp ce bitrate-ul poate atinge maxim 640 kbps, zona in care formatele lossless ofera o calitate superioara.
Concluzionand, free format MP3 a fost un experiment si nimic mai mult.

Bibliografie:

T. H. Cormen, C. E. Leisserson, R. R. Rivest, Introducere in algoritmi, Computer Libris Agora, Cluj Napoca, 2000

A. S. Tanenbaum, Retele de calculatoare, editia a patra, Byblos, Bucuresti, 2003

J. A. Storer, An Introduction to Data Structures and Algorithms, Springer, 2002

http//:www.datacompression.info/

http//:www.researchindex.com/



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 4037
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved