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'? Szinte mindenki tisztában van a felbontás (bitmélység) és a PCM audio dinamikatartománya közötti kapcsolattal: minél kisebb egy PCM fájl felbontása, annál kisebb a dinamikatartománya (ha eltekintünk a 'dither' lehetőségétől). Mivel egy PCM hangsáv 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 audió kódolás részben az ún. skálatényezők használatára épül, azaz a hangerő és a felbontás szétválasztására. A hangerő elválasztása a bitmélységtől (valamint az idő-frekvencia transzformáció) lehetővé teszi, hogy az egyes MP3 keretek alacsony jel-zaj viszonnyal (kb. 40 dB) rendelkezzenek, ugyanakkor megmaradjon a nagy dinamikatartomány. 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 'közvetett', 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:24 bit, dither: háromszög
Dekóder kimenete: 24 bit, dither: nincs
FFT paraméterei: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:32 bit lebegőpontos, dither: nincs
Dekóder kimenete: 32 bit lebegőpontos, dither: nincs
FFT paraméterei: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:



A dinamikatartomány 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



Vissza a főoldalra