3. Predykcja i kodery ADPCM

3.1. Działanie kodera ADPCM

Predykcja to przewidywanie – w tym przypadku przewidywanie wartości bieżącej próbki sygnału na podstawie obserwacji próbek poprzednich. Przewidywalnej części sygnału nie trzeba transmitować, można ją odtworzyć w odbiorniku, używając do tego celu poprzednich próbek. Transmitować należy jedynie nieprzewidywalną część sygnału. Tę ideę wykorzystano m.in. w koderze ADPCM (Adaptive Differential Pulse Code Modulation) – rys.15. 

 

Rysunek 15 Koder i dekoder ADPCM: Q - kwantyzator adaptacyjny, , P - predyktor

Kwantowaniu (z wykorzystaniem adaptacji kwantyzatora) podlega sygnał różnicowy \(\varepsilon_n=x_n-x_n^p\), gdzie \(x_n^p\) – predykcja bieżącej próbki \(x_n\). Po stronie odbiorczej ta sama predykcja jest dodawana do skwantowanego sygnału różnicowego. Predykcja w koderze i w dekoderze musi być obliczona w identyczny sposób. W dekoderze do przewidywania próbki bieżącej możemy wykorzystać poprzednie próbki sygnału wyjściowego \(x_n^\ast\), więc ten sam sygnał musimy wytworzyć po stronie nadawczej. Stąd częścią nadajnika jest kopia odbiornika, tzw. dekoder lokalny.  
Ponieważ sygnał predykcji jest odejmowany od sygnału mowy, a potem jest dodawany, to sygnał wyjściowy dekodera \(x_n^\ast\) różni się od sygnału wejściowego kodera \(x_n\) jedynie błędem kwantyzacji powstającym w kwantyzatorze adaptacyjnym:

\(x_n^\ast=x_n+e_n\) (17)

gdzie  \(e_n=\varepsilon_n^\ast-\varepsilon_n\)  - błąd kwantyzacji, powstający przy kwantowaniu sygnału różnicowego (zwanego sygnałem błędu predykcji). Jeśli predykcja jest skuteczna, czyli sygnał błędu predykcji \(\varepsilon_n=x_n-x_n^p\) ma mniejszą amplitudę niż sygnał wejściowy \(x_n\), wówczas kwantyzator adaptacyjny „zagęszcza” siatkę poziomów kwantyzacji i błąd kwantyzacji maleje. Tym samym poprawia się jakość sygnału na wyjściu dekodera.  Ta właściwość ADPCM wynika także ze wzoru (18):

\(SNR=\frac{\sigma_x^2}{\sigma_e^2}=\frac{\sigma_x^2}{\sigma_\varepsilon^2}\cdot\frac{\sigma_\varepsilon^2}{\sigma_e^2}=G_p\cdot SNR_q\) (18)

gdzie \(\sigma_x^2,\ \sigma_\varepsilon^2,\ \ \sigma_e^2\) -  moce sygnału wejściowego, różnicowego i szumu kwantyzacji, \(SNR_q=\frac{\sigma_\varepsilon^2}{\sigma_e^2}\)  - stosunek mocy sygnału wejściowego kwantyzatora do mocy szumu kwantyzacji (zależy głównie od liczby bitów na próbkę), \(G_p=\frac{\sigma_x^2}{\sigma_\varepsilon^2}\)  - stosunek mocy sygnału wejściowego do mocy błędu predykcji, zwany zyskiem predykcji.  
Logarytmując obie strony wzoru (18) i mnożąc przez 10, otrzymujemy wartości w decybelach:

\(SNR[dB]=SNR_q[dB]+G_p[dB]\) (19)

Jeśli błąd predykcji jest mniejszy od sygnału wejściowego, wówczas \(G_p>1\) i \(G_p[dB]>0\).  Następuje wówczas poprawa jakości sygnału skutkiem zastosowania predyktora.