Предсказване и грешка
Приближи думата: съседните отчети почти не се различават. Значи следващият може да се отгатне от предишните. Ако предавателят и приемникът отгатват по едно и също правило, не трябва да пращаме самия отчет – стига грешката на отгатването: e = x − x̂.
Най-простото правило е „същото като предишния“. Тогава грешката е просто разликата между два съседни отчета – и тя е 10,6 dB по-тиха от думата. По-тих сигнал иска по-малко битове (6 dB ≈ 1 бит).
Входът: звукът, както е записан
входът x(n)
Изходът: звукът само разликата
изходът y(n)
Разликата е много по-тиха и звучи като съскане: ниските честоти (които носят силата на гласа) са най-лесни за отгатване и изчезват. Пробвай тона 440 Hz – него разликата почти изтрива.
корелация на съседите ρ = 0,97
Стойностите: ≈ 8 бита
x(i)
Разликите: ≈ 6 бита
e(i)
Самите стойности са пръснати по целия обхват (8 бита), а разликите – тясна камбана около нулата (3–4 бита). Намали корелацията ρ – камбаната се разширява и печалбата изчезва.
DPCM – диференциална ИКМ
DPCM прави точно това: предсказва x̂ = ρ·(предишния възстановен отчет), квантува грешката и праща нея. С 3 бита на отчет и стъпка 0,08 сега SNR = 17,2 dB (DPCM). Превключи между двете: при 3 бита обикновената ИКМ дава около 9 dB, а DPCM – около 17 dB, т.е. с повече от 1 бит по-добре.
Важно: кодерът предсказва от възстановената стойност, а не от оригинала – защото приемникът има само нея. Иначе грешките се натрупват и сигналът „отплава“.
Входът: звукът, както е записан
входът x(n)
Изходът: звукът след декодера
изходът y(n)
С 3 бита обикновената ИКМ е силно зашумена; DPCM е чувствително по-чиста. Дръпни стъпката: твърде малка – изходът не смогва при силните части (претоварване по фронт); твърде голяма – в тишината се чува зърнест шум.
предсказател ρ = 1
b = 3 бита → 7 нива на грешката
стъпка Δ = 4
3 бит/пиксел (CR = 8/3 = 2,67) → PSNR = 28,9 dB
оригинал x възстановен x̃
Грешката на предсказване
грешка e квантувана ẽ (предава се)
Сиво – оригиналният ред; синьо – възстановеният. Включи „грешен кодер“ (предсказва от оригинала) – декодерът отплава. С 3 бита и Δ = 2 рязкият ръб изостава; с Δ = 20 плавните части стават на стъпала (лъжливи контури).
| Изкривяване | Къде | Защо |
|---|---|---|
| зърнест шум | в тишина / равни области | най-малката стъпка не е 0 |
| лъжливи контури | плавни преходи | грубата стъпка се вижда |
| претоварване по фронт | резки преходи | най-голямата стъпка е малка |
| натрупване на грешки | след грешен бит | сумата пази грешката |
Против натрупването: коефициент на утечка α < 1 – старите грешки постепенно се „забравят“.
Делта модулация (DM и ADM)
Крайният случай на DPCM: 1 бит – само „нагоре“ или „надолу“ със стъпка 0,02. За да смогва, сигналът се снима 4 пъти по-често (64 kbit/s). Сега SNR = 8,32 dB. Адаптивната DM (ADM) гледа последните 3 бита: три еднакви подред → стъпката се удвоява (бърз фронт); редуване → намалява наполовина (тишина).
Входът: звукът, както е записан
входът x(n)
Изходът: звукът след DM
изходът y(n)
DM с малка стъпка: думата е заглушена – стъпалото не смогва. С голяма – силно зърнесто съскане. ADM с малка стъпка е ясна: стъпката сама расте на силните места.
стъпка Δ = 4
DM, 1 бит/отчет, Δ = 4: MSE = 370
оригинал DM
На скока стъпалото изостава (претоварване); в равните части трепери ±Δ (зърнест шум). Включи ADM – стъпката се удвоява на фронта.
Линейно предсказване от ред p (LPC)
По-умното правило гледа няколко предишни отчета: x̂ = a₁·x(n − 1) + … + aₚ·x(n − p). Най-добрите коефициенти идват от автокорелацията (колко сигналът прилича на себе си, изместен) чрез уравненията на Юл–Уокър, решени бързо с Левинсон–Дърбин.
С 10 коефициента грешката е 19,6 dB по-тиха от думата – печалбата от предсказване Gₚ.
Входът: звукът, както е записан
входът x(n)
Изходът: звукът само грешката
изходът y(n)
С p = 1 грешката още звучи като дума. С 10 – почти като равно бръмчене с шум: предсказателят е „изял“ всичко предвидимо – тембъра на гласа. Остава само бръмченето на гласните струни и съскането.
ред p = 2
f = 200 Hz
шум = 0,05
a = [1,71; −0,761]
p = 2: печалба Gp = 16,1 dB (≈ 2,7 бита спестени)
x[n] предсказано x̂[n] грешка e[n]
Спектър: сигналът и грешката
сигнал грешка (по-„бяла“ и по-слаба)
p = 1 → 2: печалбата скача – един синус се предсказва точно от 2 отчета. Вдигни шума – шумът не може да се предскаже.
LPC вокодер: само коефициентите
Щом грешката е почти само „бръмчене или шум“, може изобщо да не я пращаме! На всеки 20 ms пращаме само p-те коефициента, силата и дали звукът е звучен (гласна – бръмчене) или беззвучен („с“, „з“ – шум). Приемникът пуска бръмчене от 120 Hz или шум през филтъра с тези коефициенти. Така се пращат ≈ 3 kbit/s вместо 128 kbit/s – така са работили военните радиостанции и „говорещите“ играчки.
Входът: звукът, както е записан
входът x(n)
Изходът: звукът синтезирана
изходът y(n)
Роботският глас казва „Здравей“, макар никой отчет на думата да не е пратен. Само шум: думата е прошепната. Само бръмчене: и „з“-то бръмчи. Смени височината – гласът става по-нисък или по-висок. Запиши своя глас и пробвай.
В картинки: 2D предсказателят „равнина“ x̂ = A + C − B (ляво + горе − горе-ляво): A = 100, B = 101, C = 104 → x̂ = 103. Ползва се в Lossless JPEG и PNG.
Адаптивно предсказване (LMS)
Речта сменя звуците, затова най-добрите коефициенти се менят. LMS ги учи отчет по отчет: всеки коефициент се побутва срещу грешката, a ← a + 2μ·e·s. Декодерът прави същото от същите данни, затова коефициентите не се пращат. Стъпката μ е колко бързо се учи; ако е твърде голяма, коефициентите избухват.
стъпка на адаптация μ = 0,001
μ = 0,001 (граница 0,01): учи се и следва смяната на звука
a(1) a(2)
Грешката на предсказване
грешка e(i)
Синусът по средата сменя честотата – „нова фонема“. При μ = 0,001 коефициентите се преучват; при 0,0001 – твърде бавно; над 0,01 избухват.
Самопроверка
1. Колко са 12 dB печалба от предсказване в битове?
≈ 2 бита по-малко на отчет при същото качество.
2. Защо при бял шум предсказването не помага?
Отчетите не са свързани: R(l) = 0 за l ≠ 0, най-доброто предсказание е 0, Gₚ = 0 dB.
3. Защо кодерът на DPCM предсказва от възстановената, а не от истинската стойност?
Приемникът има само възстановената. Ако кодерът ползва друга, двете страни се разминават и грешките се натрупват.
4. A = 100, B = 101, C = 104. Какво предсказва „равнината“?
x̂ = A + C − B = 103.