Podręcznik
6. Kodowanie w dziedzinie częstotliwości
Kodowanie sygnałów audio w dziedzinie częstotliwości obejmuje dwa typy koderów kodery subpasmowe i kodery transformaty. W obu przypadkach otrzymuje się reprezentację sygnału audio w podpasmach częstotliwości. W koderach subpasmowych są to próbki wąskopasmowych sygnałów, a w koderach transformaty – współczynniki transformaty (najczęściej DCT), odnoszące się do szeregu częstotliwości. Operacja przejścia na skalę częstotliwości jest odwracalna – sumując sygnały wąskopasmowe lub obliczając transformatę odwrotną uzyskujemy niezmienioną kopię sygnału oryginalnego. Kodowanie w dziedzinie częstotliwości jest jednak operacją stratną, gdyż sygnały pasmowe lub współczynniki transformaty podlegają kwantyzacji.
Celem kodowania w dziedzinie częstotliwości jest:
- zmniejszenie mocy szumu kwantyzacji
- odpowiednie ukształtowanie widma szumu kwantyzacji
Powyższe cele osiąga się, kwantując w różny sposób sygnały o różnych częstotliwościach, jak to pokazano na rys.39. Wymaga to wykorzystania wielu kwantyzatorów o różnych parametrach: zakresie pracy i liczbie poziomów kwantyzacji. Parametry kwantyzatorów wyznacza się w oparciu o obwiednię widma (sygnał pasmowy o większej mocy wymaga większego zakresu pracy kwantyzatora i większej liczby poziomów kwantowania). Niekiedy uwzględnia się zjawisko maskowania szumu kwantyzacji sygnałem audio (analiza psychoakustyczna). Po stronie odbiorczej sumuje się sygnały subpasmowe otrzymane z ich skwantowanych próbek (wymaga to zastosowania zestawu filtrów pasmowych i sumatora) albo oblicza się transformatę odwrotną ze skwantowanych współczynników
Rysunek 39 Koder operujący w dziedzinie częstotliwości
Dlaczego kwantyzacja w dziedzinie częstotliwości jest bardziej opłacalna niż kwantyzacja w dziedzinie czasu, jak w koderze PCM? Wyjaśniono to na rys.40. Załóżmy że mamy sygnał o paśmie 8 kHz, próbkowanie przebiega więc z szybkością 16000 próbek na sekundę. Kwantujemy próbki w dziedzinie czasu przeznaczając b bitów na próbkę (kwantyzator ma L=2b poziomów kwantyzacji). Zgodnie z zasadą „6 dB na bit” moc szumu kwantyzacji powinna się znaleźć 6b decybeli pod mocą sygnału (przyjmujemy, że główna część mocy znajduje się w okolicach maksimum widma). Szum kwantyzacji ma raczej płaskie widmo, więc w zakresie wyższych częstotliwości może dominować nad sygnałem audio i stać się dokuczliwym.
Można temu zaradzić, dzieląc sygnał na 2 sygnały pasmowe i kwantując każdy z nich osobnym kwantyzatorem. Sygnał w górnym paśmie ma o wiele mniejsza amplitudę, a więc można „zagęścić” siatkę poziomów kwantyzacji i zmniejszyć moc błędu kwantowania, do wartości o 6b decybeli niższej niż moc sygnału w górnym paśmie. Zauważmy, że mimo stosowania dwóch kwantyzatorów liczba próbek na sekundę nie zwiększy się, gdyż częstotliwość próbkowania sygnałów pasmowych wynosi 8 kHz (2 razy szerokość pasma).
Jednocześnie można zmniejszyć liczbę bitów na próbkę w górnym paśmie i zwiększyć w dolnym paśmie, zachowując tę samą szybkość transmisji bit/s. Wówczas moc szumu kwantyzacji w obu podpasmach może się wyrównać, ale na niższym poziomie, niż to zapewniał pojedynczy kwantyzator działający w całym paśmie częstotliwości.
Rysunek 40 Kwantowanie sygnału audio: jeden kwantyzator w całym paśmie, dwa kwantyzatory o różnych zakresach pracy, dwa kwantyzatory o różnych zakresach pracy i liczbie poziomów kwantyzacji
Przykładem kodera 2-pasmowego jest standard G.722 [9]. Kodery z serii G.722 [9], [10], [11] służą do kompresji sygnału mowy i innych sygnałów akustycznych w paśmie 0-7 kHz. Obecnie w telefonii odchodzi się od sygnału mowy o paśmie zawężonym do niespełna 4 kHz, ze względu na niezadowalającą jakość takiego sygnału. W tych koderach stosuje się częstotliwość próbkowania 16 kHz, co umożliwia przetwarzanie sygnałów w paśmie 8 kHz, jednak pasmo 7-8 kHz jest wytłumione.
W koderze G.722 stosuje się, w każdym paśmie, algorytm kompresji ADPCM (rys.41). W kanale dolnym jest to ADPCM z kwantyzatorem adaptacyjnym 6-bitowym, a w kanele górnym ADPCM z kwantyzatorem adaptacyjnym 2-bitowym. Uwzględniając 8000 próbek na sekundę w paśmie dolnym i górnym, mamy przepływność binarną 6x8000+2x8000=64000 bit/s. Jest ona równa przepływności kodera PCM – G.711 [4], jednak standard G.722 oferuje dwa razy szersze pasmo mowy.
Rysunek 41 Schemat kodera G.722 – wg [9]
W koderze G.722 rozdział bitów pomiędzy kwantyzatory jest stały, w większości koderów jest on jednak zmienny, zależny od widma przetwarzanego fragmentu sygnału. Stosuje się dwie grupy algorytmów rozdziału (allokacji) bitów:
- Zasada „energetyczna”: minimum mocy szumu kwantyzacji
- Zasada „psychoakustyczna”: największa jakość sygnału akustycznego
Bity przydzielane są kolejno – przydzielenie 1 bitu obniża szum kwantyzacji o 6 dB. Kolejny bit jest przydzielany temu podpasmu, gdzie błąd kwantyzacji jest największy. Przed przydzieleniem bitów jako błąd traktujemy moc sygnału w danym paśmie, gdyż nie kodując sygnału (zastępując go ciszą) tracimy całą jego moc – rys.42.
Rysunek 42 Przydzielanie kolejnych bitów kwantyzatorowi działającemu w podpaśmie częstotliwości
Przydzielając bity tam, gdzie szum kwantyzacji ma największą moc, doprowadzamy do spłaszczenia widma szumu kwantyzacji. Nie jest to korzystne dla brzmienia sygnału, gdyż szum kwantyzacji nie jest maskowany sygnałem audio – rys.43.
Rysunek 43 Widmo szumu kwantyzacji przy energetycznej i psychoakustycznej metodzie rozdziału bitów - rysunek poglądowy
Aby zastosować metodę psychoakustyczną allokacji bitów, należy obliczyć próg maskowania (krzywą maskowania). Jest to próg słyszalności szumu kwantyzacji (i innych sygnałów) w obecności sygnału audio. Krzywa maskowania jest funkcją częstotliwości i zmienia się wraz ze zmianami widma sygnału audio. Gdy sygnał maskujący jest pojedynczym tonem, krzywa maskowania przebiega tak, jak to pokazano na rys. 44. Moc sygnału maskującego (od 20 dB do 80 dB) podano powyżej krzywej maskowania. Kwantowany sygnał audio składa się z wielu prążków widmowych, więc na krzywą maskowania składa się wiele funkcji pokazanych na rys.44.
Mając próg maskowania w każdym podpaśmie, można sprawdzić, czy leży on powyżej czy poniżej widma sygnału w tym podpaśmie. Jeśli leży powyżej, znaczy to, że sygnał w tym podpaśmie nie jest słyszalny i nie trzeba go kwantować. Jeśli leży powyżej, wówczas możemy obliczyć stosunek mocy sygnału do progu maskowania (SMR – Signal to Mask Ratio). Obliczenia przeprowadzamy w decybelach, odejmując próg maskowania od mocy sygnału w danym podpaśmie. Gdy np. SMR=12 dB, wówczas przydzielenie 2 bitów powinno uczynić szum kwantyzacji niesłyszalnym (zgodnie z zasadą 6 dB na bit). Najczęściej rozdzielamy bity pojedynczo, kanałowi o największej wartości SMR, po przydzieleniu bitu zmniejszając wartość SMR o 6 dB. Jeśli mamy wystarczającą liczbę bitów do rozdzielenia, to szum kwantyzacji jesteśmy w stanie całkowicie zamaskować.
Rysunek 44 Próg maskowania dla harmonicznego sygnału maskującego, według Egan, Hake :On the masking pattern of a simple auditory stimulus (JASA 22, 1950)
Rysunek 45 Widmo sygnału, krzywa maskowania i stosunek mocy sygnału do progu maskowania (SMR) – rysunek poglądowy
Przykładem kodera wykorzystującego „energetyczną” metodę allokacji bitów jest koder transformaty G.722.1 [10]. Podstawowe parametry tego kodera są następujące:
- Częstotliwość próbkowania 16 kHz
- Pasmo sygnału akustycznego 7 kHz
- Transformata MLT (MDCT), N=320 współczynników transformaty
- 14 podpasm po 20 próbek transformaty (szerokość podpasma = 0.5 kHz) - podpasm 7-7.5 kHz i 7.5-8 kHz nie koduje się
- Przepływności 24 i 32 kbit/s
- „energetyczny” algorytm rozdziału bitów
- Wykorzystanie kwantyzacji wektorowej do kwantowania współczynników transformaty w podpasmach
Przy przepływności 32 kbit/s jakość sygnału jest porównywalna z koderem G.722 o przepływności 64 kbit/s.
Wyjaśnienia wymaga zastosowana transformata. Należy ona do tzw. MLT (modulated lapped transforms), zwana jest też MDCT (zmodyfikowana dyskretna transformata kosinusoidalna). Podobnie jak DCT, jest ona opisana macierzą, ale nie kwadratową tylko prostokątną: . Oznacza to, że N współczynników transformaty powstaje z 2N próbek sygnału audio. Wydawałoby się, że taka operacja nie może być odwracalna, gdyż znika połowa danych. Tak jednak nie jest, gdyż okno czasowe przesuwa się o pół swojej długości – kolejny wektor zawiera 50% próbek należących do poprzedniego wektora. Na każde N nowych próbek sygnału wejściowego mamy więc N próbek transformaty, gdyż okna nakładają się. Z kolei po stronie odbiorczej z N skwantowanych współczynników transformaty otrzymujemy 2N próbek sygnału. Otrzymane wektory dodajemy z 50% pokryciem, co zapewnia powrót do sygnału wejściowego z dokładnością do błędu kwantyzacji. Operacje transformacji prostej i odwrotnej pokazano na rys.46.
Rysunek 46 Transformowanie sygnału audio i powrót do dziedziny czasu z wykorzystaniem MDCT
Przykładem koderów sygnału audio wykorzystujących „psychoakustyczną” metodę allokacji bitów są kodery MPEG-Audio [14], [15]. W najprostszej wersji jest to koder subpasmowy (rys.39) o następujących parametrach:
- częstotliwość próbkowania fs=44100 Hz
- 32 kanały od f=0 do f=fs/2
- 32 kwantyzatory z adaptacją „w przód”
- dynamiczny rozdział bitów pomiędzy kwantyzatory
- dobra jakość stereofonicznego sygnału audio przy przepływności binarnej 160 kbit/s
Bardziej złożony wariant MPEG-Audio, powszechnie stosowany i znany jako MP3 [15], zawiera zarówno filtry pasmowe jak i transformaty MDCT. Każdy z 32 sygnałów pasmowych jest rozdzielany na 18 podpasm z wykorzystaniem transformaty. Otrzymujemy w ten sposób 32 x 18 = 576 podpasm, co daje większe możliwości allokacji bitów. Dobrą jakość sygnału stereofonicznego otrzymujemy przy przepływności binarnej 128 kbit/s.
Zainteresowanym polecam symulator kodera transformaty opisany w Module 4 (Kodowanie transformaty sygnału audio). Wykorzystywana jest transformata DCT. Otrzymujemy 512 próbek transformaty, które można podzielić na podpasma. W każdym podpaśmie działa inny kwantyzator skalarny. Możemy narzucić mu określoną liczbę bitów na próbkę lub uruchomić algorytm automatycznego rozdziału bitów pomiędzy kwantyzatory. Możliwe jest również zasymulowanie „psychoakustycznej” allokacji bitów. Można wówczas obserwować krzywe maskowania dla kolejnych fragmentów sygnału audio.