Podręcznik
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.