Podręcznik
3. Predykcja i kodery ADPCM
3.2. Obliczanie predyktora
Jak skonstruować predyktor o wysokim zysku predykcji? Aby rozpatrzyć to zagadnienie, oddzielimy predyktor od układu ADPCM, przyjmując, że do przewidywania próbki sygnału wejściowego możemy wykorzystać poprzednie próbki tego samego sygnału , – rys.16.
Rysunek 16 Predykcja próbki sygnału
Predyktory wykorzystywane w koderach mowy należą do predyktorów liniowych, tzn. predykcja jest kombinacją liniową poprzednich próbek sygnału.
Najprostszy predyktor wykorzystuje wprost wartość poprzedniej próbki . Lepszym rozwiązaniem jest użycie poprzedniej próbki pomnożonej przez współczynnik predykcji . Ogólnie predyktor liniowy wyraża się wzorem:
(20) |
Współczynniki predykcji obliczamy na minimum mocy błędu predykcji:
(21) |
gdzie E – operator uśredniania, który w praktyce jest zastępowany obliczaniem wartości średniej w bloku próbek.
Przyjmijmy, że znamy współczynniki autokorelacji sygnału:
(22) |
Współczynnik jest równy mocy sygnału: .
Na początku obliczmy zysk predykcji najprostszego predyktora opisanego równaniem .
(23) |
Jeżeli , wówczas i stosowanie tego predyktora jest korzystne. Jeżeli , wówczas jakość sygnału na wyjściu układu ADPCM jest niższa niż ta, jaką oferuje sam kwantyzator.
Zajmijmy się teraz predyktorem ze współczynnikiem predykcji: . Próbka sygnału błędu predykcji wynosi: , a moc tego sygnału
Minimum mocy błędu predykcji obliczymy, różniczkując
(24) |
Zysk dla optymalnego współczynnika predykcji wynosi
(25) |
Jest on większy od 1, gdyż współczynniki autokorelacji spełniają nierówność . Wartość równą 1 osiąga dla nieskorelowanego sygnału, dla którego . Wówczas również . Predyktor nie jest w stanie przewidzieć próbki nieskorelowanego sygnału, w związku z tym wyłącza się.
Podobnie postępujemy w ogólnym przypadku, gdy predyktor ma p współczynników i jest opisany wzorem (20). Do wyznaczenia współczynników predykcji będą potrzebne współczynniki autokorelacji . Współczynniki predykcji są rozwiązaniem układu równań liniowych [1]. Np., dla p=3 jest to następujący układ równań:
(26) |
Wykonując symulacje w ramach ćwiczenia laboratoryjnego „Kwantyzacja skalarna” można będzie porównać działanie kodera ADPCM z działaniem samego kwantyzatora. Różnica wartości SNR[dB] to zysk predykcji wyrażony w decybelach (wzór 19). Zysk predykcji zależy od predyktora (jest tym większy im więcej poprzedzających próbek wykorzystamy do przewidywania próbki bieżącej). W głównej jednak mierze zależy od samego sygnału. W przypadku sygnału nieskorelowanego predykcja nie jest możliwa. Podstawiając zerowe wartości współczynników autokorelacji (poza wartością , która jest mocą sygnału) do równania (26) otrzymamy zerowy wektor prawej strony i zerowe wartości współczynników predykcji. Predykcja i zysk wynosi 1 (w decybelach 0). Z kolei sygnał o wartości stałej jest bezbłędnie przewidywalny z wykorzystaniem predykcji . Tu zysk jest nieskończony. Bezbłędnie przewidywalny jest też sygnał harmoniczny, wystarczy znać 2 poprzednie próbki, aby obliczyć kolejną próbkę jako kombinację liniową tych 2 poprzednich. Będzie się o tym można przekonać, symulując koder ADPCM z predyktorem o co najmniej 2 współczynnikach predykcji. Należy się wówczas spodziewać wysokich wartości SNR.