Podręcznik
5. Kodery predykcyjno – wektorowe CELP i wokodery predykcyjne
Kodery predykcyjne wykorzystują filtr syntezy predykcyjnej (rys.30), opisany w p.3.5. Filtr ten ma transmitancję (wzory 31,32)
(37) |
gdzie – współczynniki predykcji.
Rysunek 30 Filtr syntezy predykcyjnej H(z)
Wymienione poniżej kodery predykcyjne różnią się sposobem generowania sygnału pobudzającego :
- ADPCM - sygnał pobudzający kwantowany skalarnie
- CELP - sygnał pobudzający kwantowany wektorowo
- Wokodery - sygnał pobudzający generowany sztucznie.
Poza tym stosuje się różne algorytmy obliczania współczynników predykcji, opisujące filtr H(z):
- ADPCM - współczynniki odtwarzane metodami sekwencyjnymi (nie transmituje się)
- CELP - transmisja współczynników predykcji co 10-20 ms (za wyjątkiem kodera LDCELP)
- Wokodery - zawsze transmituje się współczynniki filtru.
Można wymienić następujące zastosowania koderów predykcyjnych:
- ADPCM:
- transmisja sygnału telefonicznego z szybkością 40, 32, 24, 16 kbit/s (standard telekom. ITU-T G.726 [5])
- transmisja mowy o poszerzonym paśmie do 7 kHz (standard ITU-T G.722 [9])
- CELP:
- transmisja mowy w sieciach telekom. z przepływnościami 4-16 kbit/s:
- LDCELP: 16 kbit/s, standard G.728 [6]
- VoIP, audiokonferencje: G.729 (8 kbit/s) [7],
- G.723.1 (5.3/6.3 kbit/s) [8]
- telefonia komórkowa (GSM-FR, GSM-HR, GSM-EFR [12], GSM-AMR [13]), również w USA (standardy IS54, IS96) i Japonii
- transmisja mowy w sieciach telekom. z przepływnościami 4-16 kbit/s:
- Wokodery:
- łączność specjalna, np. cyfrowe radiostacje krótkofalowe (przepływność 800-2400 bit/s)
Kodery ADPCM opisano w p.3, obecnie zajmiemy się koderami predykcyjno- wektorowymi CELP (Code Excited Linear Prediction), które maja największe zastosowanie.
Uproszczony schemat kodera CELP pokazano na rys.31. Sygnał przetwarzany jest wektorowo, wektory składają się z N (od 5 do 60) sąsiednich próbek mowy. Koder jest właściwie kwantyzatorem wektorowym kształt-wzmocnienie z dołączonym filtrem predykcyjnym H(z). W słowniku kształtów jest L wektorów N-wymiarowych. W większości implementacji słownik nie jest przechowywany w pamięci, ale kolejne wektory są na bieżąco generowane wg ustalonego algorytmu (mówimy wtedy o słowniku algebraicznym). Po wzmocnieniu i odfiltrowaniu w filtrze predykcyjnym H(z), otrzymany wektor x* jest porównywany z wektorem sygnału mowy x. Wybiera się ten wektor ze słownika i to wzmocnienie, które zapewniają najmniejszą energie błędu . Takie podejście nazywamy analizą przez syntezę, gdyż nadajnik jest w zasadzie wielokrotnie uruchamianym odbiornikiem (syntezatorem sygnału mowy).
Rysunek 31 Uproszczony schemat kodera CELP
Według schematu z rys.31 działa standardowy koder CELP o małym opóźnieniu (Low Delay CELP - LD-CELP G.728 [6]). Ma on następujące cechy:
- Częstotliwość próbkowania: 8 kHz
- Operacje na wektorach N=5 -wymiarowych (stąd opóźnienie 0.625ms)
- Liczba wektorów w słowniku: L=128 (indeks wybranego wektora (j) przesyła się w 7 bitach)
- Liczba bitów na zakodowanie współczynnika wzmocnienia g: 3 (wzmocnienie kwantuje się z wykorzystaniem osobnego predyktora wzmocnienia, co zapewnia mały błąd kwantyzacji mimo tylko 23=8 poziomów kwantyzacji)
- Przepływność binarna: 16 kbit/s: (7+3) bitów na wektor razy 8000/5 wektorów na sekundę)
- Obliczanie współczynników predykcji z przeszłego sygnału x*, dostępnego po stronie nadawczej i odbiorczej. Współczynniki odtwarza się w odbiorniku bez ich transmisji.
Warto wspomnieć o tzw. filtrze percepcyjnym i postfiltrze, nie pokazanych na rys.31. Dążenie do zmniejszenia energii błędu kwantyzacji prowadzi do „wypłaszczenia” widma błędu (rys.32). Nie jest to korzystne, gdyż szum kwantyzacji o szerokim paśmie częstotliwości jest dość dobrze słyszalny. Zadaniem filtru percepcyjnego jest takie ukształtowanie widma szumu kwantyzacji, żeby go zamaskować widmem sygnału. Taki zamaskowany szum może mieć większą moc, ale będzie mniej dokuczliwy dla słuchacza niż szum niezamaskowany.
Filtr percepcyjny może działać jak fitr preemfazy, tłumiący w pewnym stopniu rezonanse formantowe w sygnale mowy przed podaniem tego sygnału na wejście kodera, oraz filtr deemfazy, przywracający rezonanse formantowe na wyjściu dekodera i jednocześnie kształtujący widmo szumu kwantyzacji.
Rysunek 32 Działanie filtru percepcyjnego (po lewej) i postfiltru (po prawej)
Filtr percepcyjny kształtuje widmo szumu kwantyzacji, nie zmienia widma sygnału. Z kolei postfiltr zmienia widmo sygnału na wyjściu odbiornika, prowadząc do ”wyostrzenia” rezonansów formantowych i pogłębienia efektu maskowania szumu kwantyzacji.
Koder LD-CELP nie jest typowym koderem CELP. Typowy koder CELP przetwarza wektory o większym wymiarze (40-60) i uzyskuje współczynniki predykcji z oryginalnego sygnału mowy, co wymaga ich transmisji do odbiornika. Ponadto zawiera bardzo istotny element, tzw. predyktor tonu krtaniowego, zwany też predyktorem długookresowym (LTP- long term predictor). Pozwala on na lepsze odtworzenie quasiperiodycznej mowy dźwięcznej (rys.2, Moduł1). Schemat takiego kodera pokazano na rys.33. Predyktor długookresowy kopiuje sygnał pobudzający filtr H(z) w poprzednim okresie tonu krtaniowego. Opóźnienie w pętli sprzężenia zwrotnego (m próbek) powinno być równe okresowi drgań strun głosowych mówcy. Wzmocnienie () pozwala na odtworzenie fazy narastania i wybrzmiewania dźwięku.
Rysunek 33 Koder CELP z predyktorem długookresowym
Pomiaru opóźnienia dokonuje się przez wycinanie z przeszłego sygnału pobudzającego wektorów o wymiarze N, aż do znalezienia wektora, który po odfiltrowaniu filtrem H(z) zapewni najmniejszą odległość sygnału x* od wektora próbek mowy x. Jest to równoważne przeszukiwaniu słownika zawierającego wektory wycięte z sygnału - zwanego słownikiem adaptacyjnym (rys.34).
Rysunek 34 Przeszukiwanie słownika adaptacyjnego
Po znalezieniu opóźnienia m i wzmocnienia , przechodzimy do szukania najlepszego wektora w słowniku stałym i odpowiedniego wzmocnienia g. Jak już wspomniano, wektorów najczęściej nie przechowuje się w pamięci, tylko konstruuje na bieżąco, a trakcje ich przeszukiwania. Taki wirtualny słownik nazywa się słownikiem algebraicznym. Jako przykład kodera z takim słownikiem weźmy koder ACELP (algebraic code excited linear prediction) G.729 [7]. Podstawowe parametry tego kodera są następujące:
- filtr syntezy H(z) oparty na 10 współczynnikach predykcji
- obliczanie (i transmisja) parametrów filtru co 10 ms (80 próbek)
- wymiar wektora sygnału pobudzającego: N=40 próbek
- opóźnienie algorytmiczne 15 ms (120 próbek, potrzebnych do obliczenia współczynników predykcji)
- pobudzenie ternarne (ze słownika stałego) zawierające 4 impulsy o amplitudach +1 lub -1 i położeniach m0, m1, m2, m3 – rys.35
Rysunek 35 Przykład pobudzenia algebraicznego
40-wymiarowy wektor sygnału pobudzającego \varepsilon^\ast jest wektorem „rzadkim” (sparse) gdyż zawiera jedynie 4 składowe niezerowe. Jego konstruowanie polega na kolejnym rozmieszczaniu 4 impulsów. Każdy impuls ma 8 możliwych położeń (jedynie ostatni z nich ma 16 dopuszczalnych położeń). Dopuszczalne położenia są następujące:
m0=0, 5, 10, 15, 20, 25, 30, 35 |
Wektor pobudzenia algebraicznego jest kodowany w 17 bitach (położenia w 3+3+3+4 bitach amplitudy w 4 bitach). Cały wektor jest mnożony przez skwantowany współczynnik wzmocnienia g. W sumie transmisja parametrów niezbędnych do działania dekodera (pobudzenie algebraiczne, opóźnienie predyktora długookresowego, współczynniki wzmocnienia , współczynniki predykcji ) wymaga 8000 bit/s,
Podobny algorytm zastosowano w koderach G.723.1 [8], GSM -EFR (enhanced full rate [12]), GSM-AMR (adaptive multi-rate [13]) i wielu innych. Parametry kodera GSM-EFR są następujące:
- przepływność 12.2 kbit/s
- ramka podstawowa 20 ms (160 próbek)
- obliczanie predyktora co 10 ms
- wektory pobudzenia 40-wymiarowe (5 ms)
- pobudzenie ternarne:
- 10 impulsów, kod 35 -bitowy
- dopuszczalne położenia impulsów:
m0, m5 = 0, 5, 10, 15, 20, 25, 30, 35 |
W Module 4 opisano ćwiczenie laboratoryjne „Kompresja sygnału mowy”. Zawiera ono symulator kodera GSM-AMR (Adaptive Multi-Rate) – nie w pełni kompatybilny ze standardem [13]. Koder ten ma kilka przepływności binarnych, podstawowym wariantem jest GSM-EFR (12.2 kbit/s). Zmniejszając liczbę impulsów w 40-wymiarowym wektorze pobudzenia, uzyskuje się mniejsze przepływności (Tabela2). Można obserwować działanie kodera z różnymi przepływnościami binarnymi, przebiegi sygnału pobudzającego, wejściowego, wyjściowego i ich widma, wpływ predykcji długookresowej na jakość sygnału (SNR).
Tabela 2 Parametry kodera GSM-AMR
* Równoważny GSM EFR ** Położenia impulsów jak w G.729 |
Kodery CELP dominują w kompresji mowy w zakresie przepływności 4-16 kbit/s. Przy mniejszych przepływnościach są stosowane kodery parametryczne, zwane wokoderami. W koderach parametrycznych nie dąży się do uzyskania podobnego przebiegu czasowego mowy na wyjściu odbiornika i wejściu nadajnika. Chodzi o odtworzenie tych cech, które są niezbędne do prawidłowego zrozumienia mowy przez odbiorcę. Są to rezonanse formantowe (koncentracje energii na pewnych częstotliwościach, charakterystycznych dla poszczególnych głosek), dźwięczny lub bezdźwięczny charakter, częstotliwość drgania strun głosowych. Uproszczony schemat syntezatora wokodera pokazano na rys. 36.
Rysunek 36 Syntezator wokodera predykcyjnego
Filtr syntezy predykcyjnej H(z) odtwarza częstotliwości formantowe , charakteryzujące poszczególne głoski. Sygnał pobudzający dla mowy bezdźwięcznej (d=0) pochodzi z generatora szumu, a dla mowy dźwięcznej (d=1) – z generatora periodycznych impulsów. Okres repetycji impulsów (To) musi być równy okresowi tonu krtaniowego.
Przy przepływności 2400 bit/s mowa była zrozumiała, choć brakowało jej naturalności. Jakość można poprawić, wprowadzając więcej klas pobudzeń – rys. 37. Np. głoski plozyjne („p”, „b”) nie powinny być odtwarzane drogą przepuszczania szumu przez filtr H(z), raczej potrzebne są tu aperiodyczne impulsy. Podobnie słabo dźwięczne głoski jak („ż”, ź”) wymagają też szumu dla ich odpowiedniego brzmienia.
Pod względem jakości mowy kodery parametryczne nie dorównują jednak koderom predykcyjno-wektorowym CELP, z tego względu nie przyjęły się w telefonii powszechnego użytku. Dzięki niskiej przepływności znajdują zastosowanie w warunkach dużych zakłóceń, gdy tylko powolna transmisja zapewnia akceptowalna stopę błędów.
Rysunek 37 Sygnały pobudzające filtr predykcyjny w wokoderze
Porównując kodery mowy, należy zwrócić uwagę na jakość mowy, przepływność binarną, opóźnienie. Jakość można mierzyć wartością SNR, lepiej jest jednak przeprowadzić testy odsłuchowe. Najczęściej wynik testowania podaje się jako MOS – Mean Opinion Score. Jest to średnia ocena grupy słuchaczy, podawana w skali 1-5. Istnieją też standardy ITU, umożliwiające obliczenie przypuszczalnego wyniku testu odsłuchowego w oparciu o porównanie widm sygnału oryginalnego i testowanego [16]. Na rys.38 podano wyniki dla kilku koderów mowy o paśmie 4 kHz. Kodery zaaprobowane przez ITU (oznaczenie standardu G.XXX) z reguły osiągają MOS > 4. Standardy LPC10 i MELP to wokodery predykcyjne. Koderami mowy i muzyki o szerszym paśmie zajmiemy się w następnym punkcie.
Rysunek 38 Wartości MOS dla wybranych koderów mowy [1]