Kompresja Audio
Techniki kodowania audio percepcyjnego używane w formatach MP3, AAC i innych.
Niewidzialna Nauka Cyfrowego Dźwięku
W erze cyfrowej dźwięk jest jedną z najbardziej fundamentalnych form mediów, z jakimi mamy do czynienia. Od streamingu muzyki na Spotify, przez podcasty, aż po dźwięk w filmie na Netflixie, cyfrowy dźwięk jest wpleciony w tkankę naszej codziennej rozrywki i komunikacji. Ale jak to możliwe, że przechowujemy całą bibliotekę muzyczną na urządzeniu, które mieści się w kieszeni, lub przesyłamy strumieniowo dźwięk o wysokiej jakości przez połączenie komórkowe? Odpowiedź leży w zaawansowanej nauce kompresji audio.
Aby w pełni docenić kompresję audio, musimy najpierw zrozumieć, jak ogromną objętość mają dane dźwiękowe w formie nieskompresowanej. Dźwięk w świecie rzeczywistym jest falą analogową. Aby przekształcić go w format cyfrowy, zrozumiały dla komputerów, stosuje się proces zwany . Obejmuje on dwa kluczowe etapy:
- Próbkowanie: Analogowa fala dźwiękowa jest mierzona, czyli "próbkowana", w regularnych odstępach czasu. Dla dźwięku o jakości CD odbywa się to 44,100 razy na sekundę. Ta wartość, znana jako częstotliwość próbkowania, została wybrana na podstawie twierdzenia Nyquista-Shannona, aby wiernie oddać pełny zakres ludzkiego słuchu (do około 20 kHz).
- Kwantyzacja: Amplituda każdej próbki (jej głośność w danym momencie) otrzymuje wartość liczbową. Dla jakości CD używana jest 16-bitowa wartość dla każdej próbki, co pozwala na , czyli 65,536 możliwych poziomów głośności. Jest to tzw. głębia bitowa.
Teraz obliczmy rozmiar standardowej, trzyminutowej, nieskompresowanej piosenki stereo, takiej jak na płycie CD:
Ponad 30 megabajtów na jedną piosenkę to ogromna ilość. Przechowywanie zaledwie kilku albumów szybko pochłonęłoby gigabajty przestrzeni, a strumieniowanie tak dużej ilości danych w czasie rzeczywistym byłoby niemożliwe na większości połączeń internetowych. To jest problem, który narodził kompresję audio. Chociaż istnieją bezstratne formaty kompresji audio, takie jak FLAC (zmniejszające rozmiar pliku o około 50% bez utraty danych), prawdziwa rewolucja nadeszła wraz z , która może zmniejszyć rozmiar plików o 90% lub więcej.
Percepcyjne Kodowanie Audio: Sztuka Ukrywania Strat
W przeciwieństwie do kompresji bezstratnej, która jedynie wyszukuje matematyczne wzorce, stratna kompresja audio jest głęboko zakorzeniona w ludzkiej biologii. Wykorzystuje ona dziwactwa i ograniczenia naszego systemu słuchowego, aby wyrzucić informacje, których i tak prawdopodobnie nie usłyszymy. Ta sprytna dziedzina nauki nazywa się , a techniki kompresji, które ją wykorzystują, są znane jako percepcyjne kodowanie audio.
Istnieją dwie podstawowe zasady psychoakustyczne, które kodeki takie jak MP3 i AAC wykorzystują z niewiarygodnym sukcesem:
Zasada 1: Absolutny Próg Słyszalności (ATH)
Nasze uszy nie są równie wrażliwe na wszystkie częstotliwości. Istnieje podstawowy poziom głośności, poniżej którego dźwięk jest po prostu niesłyszalny. Ten poziom, znany jako , zmienia się w całym spektrum częstotliwości. Słuch ludzki jest najbardziej czuły w zakresie od 2 do 5 kHz (zakres ludzkiej mowy i płaczu dziecka), a mniej czuły na bardzo niskich (głęboki bas) i bardzo wysokich (piskliwe) częstotliwościach.
Koder audio percepcyjny oblicza ATH dla danego segmentu audio. Każdy składnik dźwiękowy w nagraniu, który znajduje się poniżej tego progu, może być całkowicie odrzucony przez koder, ponieważ ludzki słuchacz i tak by go nie usłyszał. To jest "darmowa" kompresja, ponieważ nie ma żadnego percepcyjnego wpływu na jakość dźwięku.
Zasada 2: Maskowanie Słuchowe
Maskowanie słuchowe to znacznie potężniejsza i bardziej dynamiczna zasada. Jest to zjawisko, w którym jeden dźwięk staje się niesłyszalny z powodu obecności innego, głośniejszego dźwięku. Koder audio używa do precyzyjnego obliczania tych efektów i agresywnego odrzucania "zamaskowanych" dźwięków. Maskowanie słuchowe występuje w dwóch formach:
Maskowanie Częstotliwościowe (Symultaniczne)
Głośny dźwięk "zamaskuje" lub zagłuszy cichsze dźwięki, które występują w tym samym czasie i są bliskie częstotliwości. Klasycznym przykładem jest próba usłyszenia szeptu podczas głośnego koncertu rockowego. Koncert (masker) całkowicie zasłania szept (dźwięk maskowany). Siła tego efektu nie jest jednolita; głośny ton tworzy "krzywą maskowania", która jest najsilniejsza na jego własnej częstotliwości i stopniowo słabnie dla częstotliwości oddalonych.
Maskowanie Czasowe (Niesymultaniczne)
Maskowanie występuje również w czasie. Głośny dźwięk może zamaskować cichsze dźwięki, które pojawiają się tuż przed nim lub tuż po nim.
- Maskowanie następcze (Post-Masking): Jest to bardziej intuicyjne. Po głośnym, nagłym dźwięku, jak uderzenie w talerz perkusyjny, nasz system słuchowy potrzebuje ułamka sekundy, aby odzyskać czułość. Cichsze dźwięki występujące natychmiast po głośnym dźwięku są maskowane przez ten efekt "dzwonienia" w uszach. Może to trwać do 200 milisekund.
- Maskowanie wsteczne (Pre-Masking): Jest to mniej intuicyjne, ale dobrze udokumentowane zjawisko. Głośny dźwięk może również zamaskować cichszy dźwięk, który wystąpił do 20 milisekund "przed" nim. Dzieje się tak, ponieważ mózg potrzebuje więcej czasu na przetworzenie głośniejszych dźwięków niż cichszych. Zanim mózg zarejestruje cichy dźwięk, percepcja znacznie silniejszego, głośnego dźwięku już dotarła i go nadpisała.
Wewnątrz Kodera MP3: Praktyczny Proces Pracy
Łącząc te zasady psychoakustyczne, kodek taki jak MP3 może osiągnąć swoją niezwykłą kompresję. Proces kodowania to zaawansowany potok, który transformuje, analizuje i kwantyzuje dane audio.
- Ramkowanie: Wejściowy strumień audio PCM jest najpierw dzielony na małe, nakładające się na siebie fragmenty czasu, zwane ramkami. Analiza audio ramka po ramce pozwala koderowi dostosować się do zmieniających się właściwości dźwięku.
- Transformacja Częstotliwościowa (MDCT): Każda ramka jest przepuszczana przez transformację matematyczną, zazwyczaj . Celem tego jest przekształcenie danych audio z domeny czasu (przebieg amplitudy w czasie) do domeny częstotliwości (spektrum energii na różnych częstotliwościach). Jest to kluczowe, ponieważ efekty psychoakustyczne, takie jak maskowanie, są zależne od częstotliwości.
- Analiza Psychoakustyczna: Równolegle ta sama ramka audio jest podawana do modelu psychoakustycznego. Model ten przeprowadza złożoną analizę w celu określenia progu maskowania dla tego konkretnego momentu w dźwięku. Identyfikuje głośne dźwięki "maskujące" i oblicza, jak bardzo będą one maskować inne, cichsze dźwięki w każdym paśmie częstotliwości. Ostatecznym wynikiem jest szcz
- Kwantyzacja i Alokacja Bitów: To jest stratny rdzeń procesu. Współczynniki częstotliwości uzyskane z MDCT są teraz kwantyzowane, co oznacza, że ich precyzja jest zmniejszana. Koder używa wyników z modelu psychoakustycznego jako przewodnika:
- Składowe częstotliwości, których energia jest poniżej progu maskowania, są kwantyzowane niezwykle agresywnie, często do zera. Są całkowicie odrzucane.
- Składowe częstotliwości, których energia jest powyżej progu maskowania, są zachowywane, ale ich precyzja jest zmniejszana. Ważniejsze składowe (te znacznie powyżej progu) otrzymują więcej bitów, podczas gdy mniej ważne (te ledwo słyszalne) otrzymują mniej bitów.
- Kodowanie Entropijne (Huffmana): W ostatnim kroku strumień skwantyzowanych współczynników częstotliwości jest kompresowany za pomocą techniki bezstratnej, zazwyczaj kodowania Huffmana. Algorytm ten przypisuje krótsze kody binarne do częściej występujących wartości, a dłuższe kody do rzadszych, dodatkowo zagęszczając strumień danych przed sformatowaniem go w ostateczny plik MP3.