Az MP3 és AAC kódolás dinamikatartománya



2018.08.10.

Általános tévhit, hogy az MP3 kódolás tönkreteszi a zene dinamikáját. Valójában pont az ellenkezője az igaz: MP3 és az AAC kódolással nagyobb dinamikatartomány érhető el, mint amivel a 24 bit-es PCM (tömörítetlen wav) fájlok rendelkeznek.

Miért olyan elterjedt, hogy az MP3 "megöli a zene dinamikáját"? Talán azért, mert még a laikusok többsége is tisztában van a felbontás (bitmélység) és a PCM audio dinamikatartománya közötti kapcsolattal: minél kisebb a PCM fájl felbontása, annál kisebb a dinamikatartománya. Mivel egy PCM hangfájl csak PCM minták (értékek) sorozata, ezért a kapcsolat egyértelmű a felbontás és a dinamikatartomány között. Ugyanakkor egy MP3 bitfolyam egészen más, és ez a szabály MP3-ra nem érvényes.

Az MPEG audio kódolás alapvetően a skálatényezők használatára épül, azaz a hangerő és a felbontás valamilyen szétválasztására. A hangerő elválasztása a bitmélységtől (többek között) lehetővé teszi, hogy az egyes MP3 keretek alacsony jel-zaj viszonnyal (kb. 40 dB), ugyanakkor magas dinamikatartománnyal rendelkezzenek. Az MP3 és AAC tömörítők a hangerőt az ún. global gain-ben tárolják, az eredeti hangerő visszaállítása pedig csak egy szorzás a dekódolóban. A global gain egyszerre betölti a globális kvantáló és globális skálatényező szerepét.

Természetesen ez egy nagyon leegyszerűsített nézet, és egy igazi kódoló / dekódoló rengeteg transzformációs lépést tartalmaz. Ráadásul a hangerő szintje és a global gain közötti kapcsolat indirekt, egy adott audio jelnél a global gain más értéket vesz fel különböző tömörítési szintek esetén.


Fixpontos MP3 dekóder teszt

MP3 tömörítő: LAME 3.9.100.
MP3 dekóder: Audacity (MAD dekóder)
Tesztjel: szinusz (F = 1 kHz, -120 dBFS)
Forrás wav felbontás: 24 bit, dither: háromszög
Dekóder kimeneti felbontása: 24 bit, dither: nincs
Mérés részletei: 1024 pontos FFT, Hann-window, 0,4 sec átlaga

mp3 dinamikatartománya, forrás: 24 bit, tömörítő: LAME, dekóder: Audacity - kimenet: 24 bit



Lebegőpontos MP3 dekóder teszt

MP3 tömörítő: LAME 3.9.100.
MP3 dekóder: Foobar2000 (ffmpeg)
Tesztjel: szinusz (F = 1 kHz, -150 dBFS)
Forrás wav felbontás: 32 bit lebegőpontos, dither: nincs
Dekóder kimeneti felbontása: 32 bit lebegőpontos, dither: nincs
Mérés részletei: 1024 pontos FFT, Hann-window, 0,4 sec átlaga

mp3 dinamikatartománya, forrás: 32 bit, tömörítő: LAME, dekóder: Foobar2000 - kimenet: 32 bit



Az MP3 és AAC kódolás dinamikatartományát meghatározó tényezők

Az MP3 és AAC kódolás dinamikatartományát az alábbi tényezők befolyásolják:

Néhány érdekesség:


Az MP3 és AAC kódolás dinamikatartományának számítása

A következő számításnál csak a formátum korlátozásait vettem figyelembe, és figyelmen kívül hagytam a többit. A feladat egyszerű: meg kell határozni a legnagyobb és legkisebb numerikus értéket (MDCT értéket), amelyet az MP3 formátum ábrázolni képes. Ehhez a dekóderek által használt formulába be kell helyettesítenünk a minimális és maximális értékeket. Mivel a skálatényezők csak 'finomhangolást' végeznek az egyes részsávokban (kivéve MP3-nál az sfb21-et, ahol nincs skálatényező), ezért kihagytam őket a számításból.

Legnagyobb MDCT érték:
Global gain maximális értéke: 2048
Legmagasabb Huffman kód értéke: 8206
A legmagasabb MDCT érték = 2048 * 8206 (4/3) = 338978356

Legkisebb MDCT érték:
Global gain minimális értéke: 1,57009E-16
A legalacsonyabb Huffman kód értéke: 1 (a legalacsonyabb nem zéró egész szám)
Legkisebb MDCT érték = 1,57009E-16 * 1 (4/3) = 1,57009E-16

Az MP3 / AAC dinamikatartománya: 20 * log (MAX / MIN) = 486,685 dB!

Ez az eredmény tiszta szinuszos jelek esetében érvényes, anélkül, hogy bármilyen kikötésünk lenne a tömörítés minőségére. Meghatározott bitráta vagy minőség esetén a dinamikatartomány megegyezik a global gain dinamikatartományával, amely 382,5 dB (1,5 dB * 255).

Horváth Csaba

Facebook    Google

Ugrás a kezdőlapra

www.000webhost.com