PCM jako punkt odniesienia dla kompresji audio
Dźwięk cyfrowy można kopiować bez zmian jakościowych, lecz zapis nieskompresowany wymaga dużej przepływności. Wielkość danych zależy od częstotliwości próbkowania, głębi bitowej i liczby kanałów. Te parametry stanowią punkt odniesienia dla oceny kompresji MP3. MPEG-1 Audio Layer III jest jednym z formatów objętych normą ISO/IEC 11172-3, która definiuje kodowanie i dekodowanie sygnału audio. Norma opisuje kilka warstw kodowania, a MP3 oznacza warstwę III.
Dźwięk o parametrach płyty CD zapisuje się jako . Sygnał analogowy jest próbkowany w stałych odstępach, a każda próbka otrzymuje wartość z określonego zakresu. Dla płyty CD stosuje się następujące parametry:
- Częstotliwość próbkowania: Fala dźwiękowa jest próbkowana razy na sekundę ( kHz). Częstotliwość Nyquista wynosi wtedy 22,05 kHz, co obejmuje typowe pasmo słyszalne.
- Głębia bitowa: Każda próbka jest zapisywana z precyzją 16 bitów. Odpowiada to , czyli 65 536 poziomom kwantyzacji dla próbki i określa jej zakres dynamiczny.
- Kanały: Zapis stereofoniczny zawiera dwa niezależne kanały audio, lewy i prawy. Liczba kanałów wpływa na przepływność liniowo, jeśli pozostałe parametry pozostają takie same.
Przepływność nieskompresowanego dźwięku CD wynosi:
Jest to często wyrażane jako kilobitów na sekundę (kbps).
Trzyminutowy utwór zajmuje w takim zapisie około 32 MB, a album może przekroczyć 650 MB. Dla przykładowego pliku MP3 o przepływności 128 kbps stosunek danych do zapisu CD wynosi około 11:1, więc utwór o rozmiarze 32 MB może mieć około 3 MB. Uzyskana jakość zależy od modelu psychoakustycznego, przepływności i materiału audio. W MPEG-1 dopuszczalne częstotliwości próbkowania obejmują 32, 44,1 i 48 kHz, a koder dobiera z nimi format ramki i zakres pasma.
Psychoakustyczne podstawy MP3
wykorzystuje , czyli badanie zależności między sygnałem akustycznym i jego odbiorem. wyznacza progi maskowania i steruje precyzją kodowania poszczególnych składowych. Takie kodowanie percepcyjne wykorzystuje kilka zjawisk słuchowych. Model uwzględnia między innymi próg słyszenia w ciszy, maskowanie między pasmami oraz maskowanie czasowe. Wynik jest przybliżeniem percepcji, więc parametry modelu i jakość implementacji wpływają na artefakty. Krótkie okna transformacji ograniczają preecho przy transjentach, a długie okna zapewniają lepszą rozdzielczość częstotliwościową dla stabilnych fragmentów.
Maskowanie słuchowe
Maskowanie słuchowe występuje, gdy głośny dźwięk, czyli masker, podnosi próg słyszenia cichszego sygnału maskowanego. Koder wykorzystuje ten próg do przydziału bitów i poziomu szumu kwantyzacji. Wyróżnia się dwa podstawowe rodzaje maskowania. Próg jest wyznaczany dla określonego fragmentu czasu i częstotliwości, dlatego decyzje kodera mogą zmieniać się między ramkami.
Maskowanie Częstotliwościowe
Głośny składnik może maskować cichsze składniki o pobliskich częstotliwościach występujące w tym samym czasie. Koder analizuje widmo, wyznacza krzywą maskowania i używa jej do ustalenia dopuszczalnego szumu kwantyzacji. Składowe poniżej progu mogą otrzymać mniej bitów albo zostać pominięte. Maskowanie zwykle rośnie wraz z poziomem maskera i maleje wraz z odległością częstotliwości. Obliczenia uwzględniają pasma krytyczne, w których ucho ma zbliżoną czułość, oraz rozchodzenie się maskowania na sąsiednie częstotliwości.
Maskowanie Czasowe
Maskowanie występuje również w czasie. Głośny dźwięk może ograniczyć słyszalność cichszych dźwięków pojawiających się krótko przed nim lub po nim.
- Maskowanie następcze: Po głośnym, krótkim dźwięku czułość słuchu wraca stopniowo. Cichsze dźwięki pojawiające się przez około 100 do 200 milisekund mogą być maskowane i kodowane z mniejszą precyzją.
- Maskowanie wsteczne: Głośny dźwięk może również ograniczyć słyszalność słabego dźwięku występującego około 20 milisekund przed nim. Zjawisko wynika z czasowego przetwarzania bodźców słuchowych.
Etapy kodowania MP3
Koder MP3 dzieli sygnał na ramki, analizuje jego widmo, ustala dopuszczalny poziom szumu, kwantyzuje współczynniki i zapisuje wynik w strumieniu ramek. Ramka zawiera nagłówek opisujący między innymi przepływność i częstotliwość próbkowania, dane boczne oraz zakodowane dane audio. W MPEG-1 Layer III jedna ramka obejmuje 1152 próbki na kanał, zwykle w dwóch granulkach po 576 próbek.
- Analiza częstotliwości i bank filtrów:
Bank filtrów polifazowych dzieli sygnał na 32 podpasma. W MPEG-1 Layer III każde podpasmo jest dalej przetwarzane przez hybrydowy bank z MDCT. Dla długich okien daje to 576 współczynników widmowych w każdej granuli, czyli 1152 współczynniki w ramce MPEG-1, a krótkie okna ograniczają skutki nagłych zmian sygnału. Model psychoakustyczny może używać osobnej analizy widmowej, w tym , do wyznaczenia właściwości sygnału.
- Model psychoakustyczny:
Model analizuje ten sam fragment, wykrywa składowe maskujące i wyznacza Stosunek Sygnału do Maski (SMR) dla pasm. SMR opisuje relację poziomu sygnału do poziomu maskowania i pomaga ustalić dopuszczalny szum kwantyzacji. Wynik modelu steruje dalszą alokacją bitów. Koder może analizować sygnał z innym oknem niż główny bank filtrów, aby dokładniej reagować na transjenty.
- Kwantyzacja i alokacja bitów:
W tym etapie następuje utrata informacji. zmniejsza precyzję współczynników. Koder kształtuje szum kwantyzacji tak, aby dążyć do utrzymania go poniżej progu maskowania. Alokacja bitów zależy od docelowej przepływności, na przykład 128 kbps, oraz od budżetu bitów ramki. W MPEG-1 Layer III używa się nieliniowej kwantyzacji, a współczynniki otrzymują również informacje o skalowaniu pasm.
- Dla podpasm z wysokim progiem maskowania koder może użyć zgrubnej kwantyzacji i mniejszej liczby bitów.
- Dla podpasm z niskim progiem maskowania stosuje dokładniejszą kwantyzację i przydziela więcej bitów.
- Dla składowych poniżej absolutnego progu słyszalności może przydzielić zero bitów, jeśli wynika to z decyzji kodera.
Koder może stosować rezerwuar bitów. Jeśli ramka wymaga mniej bitów niż wynika z docelowej przepływności, część budżetu pozostaje dostępna dla kolejnej ramki o większej złożoności.
- Kodowanie entropijne Huffmana:
Na końcu skwantyzowane współczynniki są kodowane bezstratnie. MP3 wybiera spośród zdefiniowanych tablic Huffmana, przypisując kody do wartości i serii zer w określonych regionach widma. W MPEG-1 Layer III dostępne są 32 tablice, a wynik jest umieszczany w ramce zawierającej nagłówek, dane boczne i dane audio. Dobór tablic oraz granic regionów wpływa na liczbę bitów, lecz nie zmienia skwantyzowanych wartości. Kodowanie stereo może używać trybu intensity stereo albo mid/side stereo, zależnie od decyzji kodera. Dekoder odwraca kodowanie Huffmana, dekwantyzację, odwrotną MDCT i syntezę w banku filtrów, a następnie wytwarza próbki PCM. Dane boczne przechowują informacje o skalowaniu i regionach potrzebne do tej rekonstrukcji.
Przepływność a rozmiar i jakość
określa liczbę bitów przypadających na sekundę strumienia. Wpływa na rozmiar pliku i zakres precyzji dostępnej koderowi, lecz jakość zależy również od materiału i implementacji. Przy tej samej przepływności różne kodery mogą inaczej rozdzielać bity między pasma i inaczej reagować na transjenty.
Poniższe wartości pokazują typowe kompromisy. MPEG-1 Layer III obsługuje tryb mono i stereo, więc ta sama przepływność może być dzielona między kanały w różny sposób:
- 32-64 kbps: Niska przepływność, często używana dla mowy. Zwykle wymaga ograniczenia pasma lub większej tolerancji na artefakty. Muzyka przy takiej wartości silnie zależy od kodera i złożoności wejścia.
- 128 kbps: Daje około 11:1 względem nieskompresowanego audio CD. Rezultat zależy od kodera i treści, a przy trudnych fragmentach mogą pojawić się artefakty wysokich częstotliwości.
- 192 kbps: Często określana jako przepływność zbliżona do jakości CD. Większa liczba bitów ogranicza artefakty, lecz nie stanowi gwarancji ich niesłyszalności.
- 256-320 kbps: Wysoki zakres dla MP3. 320 kbps jest najwyższą przepływnością w MPEG-1 Layer III, lecz ocena różnicy względem PCM zależy od materiału i warunków odsłuchu. Norma określa dyskretne wartości przepływności, więc koder nie wybiera dowolnej liczby z tego przedziału.
CBR i VBR
Przepływność można stosować w dwóch podstawowych trybach:
- Constant Bitrate (CBR): Koder używa tej samej nominalnej liczby bitów dla każdej ramki, niezależnie od jej złożoności. Sekunda ciszy ma zbliżony rozmiar do sekundy złożonego fragmentu, więc rozmiar strumienia jest przewidywalny. Drobne różnice rozmiaru ramek mogą wynikać z dopełniania wymaganego przez format.
- Variable Bitrate (VBR): Koder przydziela więcej bitów fragmentom złożonym i trudnym do zakodowania, a mniej fragmentom prostym lub cichym. Średnia przepływność może wtedy zapewnić określony rozmiar przy zmiennej liczbie bitów na ramkę. Użycie VBR zależy od ustawień kodera. W obu trybach ramki zawierają własny nagłówek i informacje boczne potrzebne dekoderowi. Rezerwuar bitów pozwala przenosić część dostępnego budżetu między sąsiednimi ramkami w granicach określonych przez format.