710 likes | 929 Views
REPREZENTAREA DATELOR AUDIO DIGITALE. Cuprins Unde audio PCM si digitizarea audio Rata de esantionare si aliasing Cuantizarea si eroarea de cuantizare Dithering audio Formarea zgomotului Cuantizare neliniara A naliza de frecventa Analiza statistica. Unde audio
E N D
Cuprins Unde audio PCM si digitizarea audio Rata de esantionare si aliasing Cuantizarea si eroarea de cuantizare Dithering audio Formarea zgomotului Cuantizare neliniara Analiza de frecventa Analiza statistica
Unde audio Intelegerea undelor de sunet studiul actiunii acestora asupra microfoanelor. Doua categorii de microfoane: -microfoanele electrodinamice (dinamice) opereaza pe baza unei spirale sau benzi mobile; -microfoanele electrostatice (microfoane cu condensatoare) se bazeaza pe capacitoare care necesita o sursa externa de tensiune. Ambele: modificarile de presiune a aerului actioneaza asupra componentelor microfonului si sunt transformate in unde electrice.
PCM si digitizarea audio PCM (“pulse code modulation”) introdus in 1937 de Alec Reeves de la Intenational Telephone and Telegraph, atunci orientat pe transmiterea semnalelor audio alternativa la modularea analogica in frecventa si amplitudine: semnalele audio erau esantionate in puncte discrete in timp, fiecare esantion cuantizat si codificat in binar, iar bitii erau transmisi ca impulsuri reprezentand 0 si 1. Fisierele PCM contin date audio digitizate, dar necomprimate. S-au dezvoltat si o serie de alternative cu reducerea cantitatii de informatie (in special in domeniul telefoniei pentru pastrarea largimii de banda). Deoarece amplitudinea vorbirii umane nu se modifica dramatic de la un moment la momentul urmator, se poate reduce dimensiunea fisierului memorand diferentele dintre esantioanele succesive (DPCM – “differential pulse code modulation”). Algoritmul poate fi imbunatatit: nivelul de cuantizare varieaza in concordanta cu caracteristicile de schimbare dinamica a sablonului de vorbire, furnizand rate mai bune de compresie (ADPCM – adaptive differential pulse code modulation).
Pentru memorarea datelor audio digitale este necesar sa se specifice rata de esantionare si adancimea de biti. Rata de esantionare se specifica in Hz, rate obisnuite: -8 kHz mono, pentru telefonie voce; -44.1 kHz stereo doua canale pe 16 biti fiecare canal, pentru sunet de calitate CD; -48 kHz banda audio digitala (DAT – digital audio tape); -96 sau 192 kHz stereo doua canale DVD cu 24 de biti per canal. Se poate utiliza o acuratete mai mare la digitizare (exemplu esantioane pe 32 de biti) pentru prelucrare ulterioara prin program, iar apoi se reduce rezolutia inainte de compresie (exemplu: se pastreaza esantioane pe 16 biti).
Cel mai simplu format de fisier audio PCM, fara compresie este formatul WAVE, un subset al specificatiei RIFF (Resource Interchange File Format) de la Microsoft. Un fisier RIFF incepe cu un header de fisier urmatde o secventa de bucati („chanks”) de date. Un fisier WAVE este adesea un fisier RIFF cu o singura bucata „WAVE” continand doua sub-chunks: „fmt” specificand formatul datelor si „data” cu esantioanele (forma canonica).
Semnificatiile campurilor sunt: Header RIFF:
Exemplu: primii 72 de octeti dintr-un fisier WAVE (in hexa): 52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00 22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00 24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d Interpretarea:
Observatii: -Ordonarea implicita este little-endian, fisierele cu ordonare big-endian au identificatorul RIFX. -Esatioanele de 8 biti sunt memorate fara semn, cu valori 0->255, iar cele de 16 biti ca intregi cu semn in complement fata de 2, cu valori -32768 -> 32767. -Pot exista subchunk-uri aditionale in stream-ul de date Wave, caz in care exista SubChunkID char[4], SubChunkSize unsigned long si datele.
Rata de esantionare si aliasing Legate de teorema lui Nyquist: doua marimi importante: frecventa Nyquist si rata Nyquist. Fiind data o rata de esantionare, frecventa Nyquist = componenta de fecventa cea mai inalta care poate fi esantionata la acea rata fara aliasing. Pe baza teoremei lui Nyquist, frecenta Nyquist este jumatate din rata de esantionare: fnf = ½ fesant Fiind data o frecventa de esantionat, rata Nyquist = rata cea mai mica de esantionare care va permite reconstructia fidela a semnalului. De asemenea pe baza teoremei lui Nyquist rezulta ca rata Nyquist este dublul frecventei celei mai inalte din semnalul esantionat: fnr = 2 fmax Consecinta importanta: daca un semnal audio este esantionat la orata inferioara ratei Nyquist, apare fenomenul de aliasing audio => la redare frecventele sunetului original vor fi translatate in alte frecvente si deci nu se va mai auzi la fel cu sunetul original. Practic exista prea putine puncte de esantionare, care prin interpolare sa furnizeze corect forma sinusoidala a undei originale.
Cateva exemple de semnale audio esantionate la diferite frecvente: Semnal de 637 Hz esantionat la 1490 Hz (rata Nyquist fiind 1274 Hz). Nu apare fenomenul de aliasing, iar semnalul este refacut corect.
Semnal de 637 Hz esantionat exact la 1274 Hz, esantioanele fiind plasate exact in punctele de minim si de maxim:semnalul poate fi refacut corect. Daca esantioanele sunt plasate in alte puncte decat maxim si minim, frecventa este refacuta perfect, dar amplitudinea semnalului nu (in caz extrem, cand esantioanele sunt plasate in punctele de 0, se obtine un semnal constant 0).
(Figura 1) Semnal de 637 Hz esantionat la 1000 Hz, furnizeaza o unda aliasing de 363 Hz.
(Figura 2) Semnal de 637 Hz esantionat la 500 Hz, furnizeaza o frecventa aliasing de 137 Hz.
Semnal de 637 Hz esantionat la 400 Hz, furnizeaza o frecventa aliasing de 163 Hz.
Se poate stabili un algoritm pentru calcularea frecvetei de aliasing. algoritm get_frequency /*Input: frecventa undei audio analogice (un singur ton) de esantionat, f _act si frecventa de esantionare, f_samp Output: frecventa undei audio digitizate, f_obs*/ { f_ nf = ½ f _ samp / * f _ nf este frecventa Nyquist*/ /*CASE 1*/ if ( f _ act ≤ f _ nf ) then f _ obs = f _ act /CASE 2*/ else if ( f _ nf < f _ act ≤ f _ samp ) then f _ obs = f _ samp − f _ act
else { INT = f _ act / f _ nf /* impartire intreaga */ REM = f_act mod f _ nf /*CASE 3*/ if (INT par) then f _obs= REM /*CASE 4*/ else if (INT impar) then f _ obs = f _ nf − REM } }
Exemple de calcule: Case 2: f _ act = 637 Hz ; f _ samp = 1000 Hz ; => f _ nf = 500 Hz f _ nf < f _ act ≤ f _ samp => f _ obs = f _ samp − f _ act = 363Hz (Figura 1) Case 3: f _ act = 637 Hz ; f _ samp = 500 Hz ; => f _ nf = 250 Hz f _ act > f _ samp INT = f _ act / f _ nf = 637 / 250 = 2 (impartire intreaga) INT par REM = f _ act mod f _ nf = 137 (preia restul impartirii) => f _ obs = REM = 137 Hz (Figura 2)
Case 4: f _ act = 637 Hz ; f _ samp = 400 Hz ; => f _ nf = 200 Hz f _ act > f _ samp INT = f _ act / f _ nf = 637 / 200 = 3 INT impar REM = f _ act mod f _ nf = 37 => f _ obs = f _ nf − REM = 200 − 37 = 163Hz
O reprezentare intuitiva a modului in care functioneaza algoritmul este reprezentata in figura urmatoare, unde f_samp= 1490 Hz este constanta, f_act este intrare (pe abscisa) si f_obs este iesire (pe ordonata).
O reprezentare grafica diferita se poate obtine prin fixarea frecventei sunetului f_act = 1000 Hz, considerand frecventa observata f_obs ca o functie de frecventa de esantionare f_samp. Cat timp f_samp < fNyquist(rata Nyquist = 2xf_act) => f_obs < f_act.
Cuantizarea si eroarea de cuantizare Decibeli. Interval dinamic. Amplitudinea sunetului: determinata la cuantizare si indica intensitatea acestuia. Fenomenul fizic corespunzator este modificarea presiunii aerului prin care se propaga sunetul. Presiunea: masurata in pascali (Pa) sau newton/m2 (N/m2). Presiunea atmosferica normala la nivelul marii = aprox. 105 Pa. Pragul de auzire a sunetului (la 1000 Hz) =variatia fata de presiunea atosferica cu 2•10-5 Pa. Pentru a masura schimbarile de presiune a aerului se poate utiliza decibelul: nu este o unitate absoluta de masura, trebuie sa se precizezez un punct de referinta pentru marimea masurata (decibelul se poate utiliza si in alte domenii, nu numai presiune). Pentru sunet punctul de referinta = presiunea aerului pentru pragul de auzire => se numeste dB_SPL (decibels-sound-pressure-level). Definitie. Fie E amplitudinea presiunii sunetului ce trebuie masurata si E0 nivelul presiunii sunetului la pragul de auzire. Atunci dB_SPL se defineste ca (este esential ca la o marime in dB sa se specifice nivelul punctului de referinta).
Exemplu. Se doreste sa se calculezez in dB nivelul pragului de durere (30 Pa). Se inlocuieste in formula de mai sus: Deci pragul de durere este aprox. 123 dB. Se poate utiliza dB pentru a specifica intensitatea sunetului, utilizand dB_SIL (decibels-sound-intensity-level), definit prin relatia: unde I este intensitatea sunetului de masurat si I0 este intensitatea corespunzatoare pragului de auzire (10-12 W/m2).
Utilizarea dB_SPL este o solutie naturala pentru masurarea amplitudinii sunetului, deoarece scara logaritmica este adaptata auzului uman. In tabela urmatoare sunt date cateva din valorile corespunzatoare unor sunete:
Rata de esantionare insuficienta aliasing. Utilizarea unui numar prea mic de biti pentru cuantificare distorsiuni(zgomot de cuantificare). Definitia pentru SQNR (signal-to-quantization-noise-ratio): Acest concept este legat de cel de domeniu dinamic („dynamic range”), definit ca raportul dintre cea mai mica valoare nenula (1) si cea mai mare (2n). Rezulta: Exemplu: un fisier audio digital pe 16 biti are un domeniu dinamic de 96 dB. Domeniul dinamic specifica gama de amplitudini ale sunetului digitizat, diferenta relativa dintre sunetul cel mai puternic si cel mai slab (nu specifica amplitudinile absolute).
O alta definitie pentru decibeli este reprezentata de dBFS (“decibels-full-scale”). Se considera ca punct de referinta amplitudinea audio maxima generata de sistem (acelasi pentru toate fisierele audio). Se atribuie maximului valoarea 0. O unda audio are axa orizontala corespunzatoare - ∞ dBFS, iar deasupra si dedesubtul acesteia valorile progreseaza pana la maxim 0 dBFS.
Definitia dBFS se bazeaza pe masurarea valorilor de amplitudine relative la valoarea maxima posibila. Pentru esantioane de n biti: Definitie. Fie x un esantion audio de n biti in plaja -2n-1 ≤ x ≤ 2n-1 -1. Valoarea lui x ca dBFS este Facand cateva calcule pentru, de exemplu, n=16 se obtin maparile: -32768 -> 0; 10000 -> -10.3; 1 -> -90.3; 0.5 -> -96.3298. Astfel, consistent cu domeniul dinamic, orice amplitudine dintr-un fisier pe 16 biti care este cu mai mult decat 96 dB sub amplitudinea maxima posibila este considerata liniste.
Dithering audio Dithering (tremur, freamat) este o solutie de compensare a erorii de cuantizare, prin adunarea de valori mici aleatoare la esantioane. In procesul de cuantizare se face o rotunjire, cand anumite esantioane de amplitudine mica sunt aproximate cu zero, rezultand intreruperi in cadrul sunetului. Adaugand la fiecare esantion o valoare mica aleatoare (intre 0 si ½ din valoarea minima posibila) se obtine ca unele esantioane mici sa aibe in final valori diferite de zero: acest zgomot este preferat zonelor de discontinuitate a sunetului. Dithering se realizeaza de catre convertoarele A/D inainte de etapa de cuantizare.
In graficul urmator se prezinta semnalul initial, semnalul cuantizat (cu 16 niveluri) si eroarea de cuantizare. De remarcat: suma dintre semnalul cuantizat si semnalul eroare de cuantizare este chiar semnalul initial. Semnalul de eroare este periodic (are perioada semnalului initial) si se aude la redarea sunetului digital ca distorsiune (mai suparatoare chiar decat un zgomot aleator).
La fiecare esantion se aduna o valoare cuprinsa intre -1 si 1, pe baza unei functii de densitate de probabilitate triunghiulara (TPDF – „triangular probability density function”). Evident 0 are cea mai mare probabilitate sa fie adunat la un esantion.
Semnalul cuantificat, semnalul cuantificat cu dithering si semnalul de eroare: Alte functii de dithering sunt: -RPDF („rectangular probability density function”)genereaza aleator valori in intervalul -1 la 1; -PDF Gaussian (functia de densitate de probabilitate este o Gaussiana) creaza un zgomot de fond asemanator de exemplu histerezisului benzii; -dithering colorat produce zgomot de frecvente mai inalte decat poate distinge urechea umana.
Formarea zgomotului Formarea zgomotului („noise shaping”): o alta metoda de compensare a erorii de cuantizare. Nu este chiar dithering, dar se utilizeaza cu acesta. Ideea: redistribuirea erorii de cuantizare astfel incat zgomotul sa fie concentrat in frecventele mai inalte, unde urechea umana este mai putin sensibila. In algoritmii de formare a zgomotului (dezvoltati prima data de Utler in anii 1950) este necesar sa se adune eroarea de cuantizare de la esantionul curent la esantionul urmator inainte ca acesta sa fie cuantizat. Se considera un tablou F de esantioane audio. Se defineste bucla de feedback de ordinul intai pentru formarea zgomotului:
Fie F_in un vector de N esantioane audio pentru care se executa cuantizare, dithering si formarea zgomotului => F_out. Pentru 0≤i≤ N-1 se defineste: F_ini valoarea esantionului i necuantizata; Di este valoarea aleatoare de dithering adunata la esantionul i; Atribuirea F_ini = F_ini + Di + cEi-1 executa dithering si formare zgomot pentru esantionul i; Atribuirea F_outi = └F_ini┘ executa cuantizarea esantionului; Ei este eroarea rezultata din cuantizarea esantionului i dupa dithering si formarea zgomotului. Daca i=-1 atunci Ei=0 altfel Ei=F_ini – F_outi.
Exemplu. Codificarea pe 8 biti, amplitudinile sunetului fiind in interalul: -128 la 128 (dupa cuantizare valorile devin intregi intre -128 la 127). Fie:
Termenul de formare este utilizat deoarece se poate manevra forma zgomotului prin modificarea ecuatiei de calcul, eventual adaugandu-se noi termeni de eroare si modificand coeficientii termenilor de eroare. Ecuatia generala de ordinul n este: De exemplu algoritmul POW-r pentru recuantificarea audio de la 24 biti la 16 biti utilizeaza formula de ordinul 9.
In programele de prelucrare audio: optiunea de a utiliza formarea zgomotului + dithering => reduc efectul negativ al zgomotului, dar in moduri diferite. Distinctie intre zgomot si distorsiune! Distorsiunea este tot un zgmot, dar corelat cu frecventa semnalului. Formarea zgomotului nu face nimic pentru a disocia frecventa zgomotului de semnal, de aceea este bine ca formarea zgomotului sa se utilizeze impreuna cu dithering. Exemplu:semnalul de eroare de cuantizare:a) fara dithering, b) cu dithering si c) cu dithering si formarea zgomotului. (a) (b) (c) Se observa ca ultima solutie duce zgomotul la frecvente inalte. Optiunile de utilizare a dithering-ului si de formare a zgomotului sunt legate de frecventa de esantionare: f < 32 kHz formarea zgomotului s-ar putea sa nu functioneze prea bine (frecventa Nyquist este prea scazuta si chiar in cazul obtinerii unor frecvente mai mari pentru zgomot, acestea vor fi in domeniul audibilitatii umane).
Cuantizare neliniara Codificarea neliniara sau „companding” (schema de codificare necesita compresie si apoi expandare) a rezultat din necesitatea de compresie a semnalelor telefonice pe linii de banda joasa. Etape principale: -semnalul digital pe n biti este recuantizat pe m biti (m<n) printr-o metoda de cuantizare neliniara; -se transmite semnalul; -expandeaza semnalul la n biti la receptie (anumite informatii sunt pierdute, cuantizare cu pierderi) => micsoreaza eroarea pentru semnale de amplitudine mica, in comparatie cu cuantizarea liniara. Baza codificarii neliniare: sistemul auditiv uman percepe mici diferente intre sunete slabe, dar pe masura ce nivelul creste scade abilitatea de percepere a diferentelor => mai multe niveluri de cuantizare pentru nivelurile mici si mai putine pentru niveluri mari => metode de codificare neliniara μ-law si A-law pentru transmisiile telefonice. Schemele de codificare neliniara: utilizate si standardizate de CCITT („Comité Consulatif Internationale de Télégraphique et Téléphonique”). In USA si Japonia se utilizeaza μ-law (se citeste „mu-law”), cu rata de esantionare de 8000 Hz, pe 8 biti, dar atingand 12 biti de domeniu dinamic. In restul lumii se utilizeaza A-law.
Metoda de codificare μ-law este definita de functia: pentru μ=255, x valoarea normalizata a esantionului -1≤x<1 si sign(x)=-1 daca x negativ si sign(x)=1 altfel. Graficul functie μ-law este:
Exemplu. Aplicarea practica a metodei de codificare: esantioane initiale pe 16 biti, in plaja de -32768 -> 32767, iar transmisia semnalului se face pe 8 biti. La receptie se trece din nou pe 16 biti. Etape: -se normalizeaza valorile de intrare, prin impartire la 32768; -se aplica functia m(x) de codificare neliniara (cea din grafic); -calculeaza └128m(x)┘, pentru scalare la 8 biti. Astfel: val.init 16 (pe 16 biti) este scalata 16/32768 si se aplica m(x) => m(16/32768)≈0.02, apoi se scaleaza la 8 biti └128∙0.02)┘=2. Sau, o alta valoare initiala 30037 => 30037/32768 =>m(30037/32768)=0.9844 => └128∙0.9844)┘=125.
Valorile pozitive codificate neliniar, in comparatie cu tehnica de codificare liniara (valorile negative se codifica la fel):
La receptie valorile pe 8 biti sunt decomprimate la 16 biti utilizand functia inversa: pentru μ=255, x valoarea normalizata a esantionului codificat μ-law -1≤x<1 si sign(x)=-1 daca x negativ si sign(x)=1 altfel. Exemplu. Se considera valorile din calculul precedent, unde 16 -> 2 si 30037 -> 125. Astfel: d(2/128)=0.00035, scalare la 16 biti ┌32768∙0.00035┐=11. Cealalta valoare : d(125/128)=0.8776, scalare la 16 biti ┌32768∙0.8776┐=28758. In concluzie valoarea 16 afost receptionata 11, cu eroare de 31%, iar valoarea 30037 a fost receptionata 28758 cu eroare de 4%. Chiar daca erorile la valori mici sunt inca mari, totusi acestea sunt mult mai acceptabile decat daca s-ar fi utilizat o codificare liniara. In tabela urmatoare sunt prezentate erorile rezultate la cuantizarea neliniara in comparatie cu cea liniara pentru diferite valori de amplitudine:
Se pot reprezenta erorile in procente pentru codificarea neliniara (a) si pentru cea liniara (b): (a) (b)
ANALIZA DE FRECVENTA Domeniile timp si frecventa Un semnal audio poate fi reprezentat atat in domeniul timp, cat si in domeniul frecventa. In domeniul timp: variatia amplitudinii semnalului in timp (pe axa orizontala este timpul, iar pe axa verticala amplitudinea seamnalului) => cea mai intuitiva solutie de reprezentare a unui semnal unidimensional. In domeniul frecventa: componentele de frecventa ale semnalului (frecventa fundamentala si multipli intregi ai acesteia, frecventele armonice). Exista doua solutii de baza: 1) In reprezentarea analizei de frecventa (analiza de spectru) pe axa orizontala se plaseaza valorile de frecventa, iar pe axa verticala amplitudinile componentelor de frecventele respective. Se ia in considerare un anumit interval de timp pentru care se face analiza de frecventa. Se mai utilizeaza si termenul de energie(reprezentat de aria de sub graficul frecventei). 2) In reprezentarea spectrala (spectrul) pe axa orizontala se plaseaza timpul , pe cea verticala frecventele, iar amplitudinile diferitelor componente spectrale se reprezinta prin culori diferite (de exemplu de la albastru la rosu si chiar pana la alb, pe masura ce amplitudinile cresc).
Seria Fourier Seria Fourier este o reprezentare a unei functii periodice sub forma unei sume infinite de sinusoide: unde ω=2πf, f fiind frecventa fundamentala a semnalului (a nu se confunda cu f(t)). Relatia se mai poate scrie si sub forma: unde a0 este componenta continua (DC – „direct component”), data de relatia: cu T=1/f. fiecare componenta alternativa (AC – „alternating component”) este o sinusoida pura.