Základný princíp kódovanie LD-CELP spočíva vo vytvorení a prehľadávaní kódovej tabuľky. Po linke sa prenáša iba index do kódovej tabuľky, čím sa dosiahne úspora v potrebnej šírke pásma. Vektor v kódovej tabuľke sa skladá z piatich vzoriek. LD-CELP využíva spätnú adaptáciu prediktorov a zosilnenia na dosiahnutie oneskorenia menšieho ako 0,625 ms. Koeficienty prediktoru sú aktualizované pomocou LPC analýzy predchádzajúceho kvantizovaného hovorového signálu. Zosilnenie sa upravuje na základe hodnoty predchádzajúcich vektorov v procese kvantizácie. Parametre detekčného váhovacieho filtra sa získajú pomocou LPC analýzy nekvantovaného hovorového signálu.
Po konverzii z A alebo m typu PCM do jednotnej PCM je vstupný signál rozdelený do blokov po piatich po sebe nasledujúcich vzoriek. Každý vstupný blok (signálový vektor) kodér porovnáva s 1024 vektormi uloženými v kódovej tabuľke (kódový vektor). Porovnávanie je realizované syntetizačným filtrom a jednotkou nastavenia zosilnenia (gain scaling). Zo všetkých výsledných kandidátov sa vyberie ten, ktorý má minimálnu frekvenčne váhovanú mieru strednej kvadratickej odchýlky od signálového vektora. Do dekódera sa prenesie príslušný 10 bitový index vybraného najlepšieho kódového vektora do kódovej tabuľky. Samotný najlepší kódový vektor prechádza cez syntetizačný filter a jednotku nastavenia zosilnenia, aby sa upravili parametre filtra na zakódovanie ďaľšieho signálového vektora. Parametre syntetizačného filtra a zosilnenie sú periodicky upravované na základe spätnej adaptácie na predchádzajúci kvantizovaný signál a budenie s upravenou hodnotou (gain-scaled excitation).
Dekódovanie je rovnako ako kódovanie vykonávané po blokoch. Po získaní každého 10 bitového indexu vyhľadá dekóder v kódovej tabuľke zodpovedajúci kódový vektor. Ten ďalej prechádza cez jednotku nastavenia zosilnenia (gain scaling) a syntetizačný filter, aby sa získal výsledný dekódovaný blok (signálový vektor). Koeficienty syntetizačného filtra a zosilnenie sa upravujú rovnakym spôsobom ako v kóderi. Dekódovaný signálový vektor prechádza adaptívnym postfiltrom za účelom zvýšenia kvality. Koeficienty postfiltra sú aktualizované preiodicky na základe informácií dostupných v dekóderi. Päť vzoriek signálového vektora po prechode postfiltrom sa následne konvertuje na päť výsledných vzoriek A alebo m typu PCM.
Index do kódovej tabuľky prislúchajúci kódovému vektoru je jediná informácia explicitne prenášaná z kódera do dekódera. Ďaľšie tri typy parametrov sú upravované periodicky: zosilnenie, koeficienty syntetizačného filtra a koeficienty detekčného váhovacieho filtra. Tieto parametre sú odvodené na základe spätnej adaptácie z predchádzajúcich signálových vektorov. Zosilnenie sa mení po každom spracovaní vektora, kým koeficienty syntetizačného filtra a koeficienty detekčného váhovacieho filtra sa upravujú až po prechode štyroch vektorov (po 20 vzorkách alebo po 2,5 ms). Napriek tomu je základná veľkosť vyrovnávacej pamäte stále jeden vektor (5 vzoriek), vďaka čomu sme schopní dosiahnuť oneskorenie menšie ako 2 ms.
Tento blok konvertuje vstupný PCM signal
typu A alebo m do jednotnej PCM
.
Pri konverzii z PCM typu A alebo m do lineárnej PCM sú možné rozličné reprezentácie v závislosti od zariadenia. Napríklad štandardné tabuľky pre PCM typu m definujú lineárny rozsah od –4 015.5 do +4 015.5. Zodpovedajúci rozsah pre PCM typu A je od –2 016 do +2 016. Pri obidvoch spôsoboch niektoré výstupné hodnoty majú desatinnú časť 0.5. Tieto desatinné časti nemôžu byť reprezentované v zariadení využívajúcom hodnoty typu integer pokiaľ nie je celá tabuľka hodnôt vynásobená 2, aby žiadna hodnota nemala desatinnú časť. V skutočnosti je tento spôsob najviac využívaný v digitálnych signálových procesoroch (DSP) s pevnou rádovou čiarkov. Na druhej strane DSP s pohyblivou rádovou čiarkou môžu reprezentovať rovnakú tabuľku hodnôt. Predpokladaný je maximálny rozsah vstupného signálu od –4 095 do +4 095 v prípade typu A ako aj typu m. V prípade A to znamená že, ak lineárnou konverziou získame rozsah od –2 016 do +2 016, tak by mali byť tieto hodnoty zväčšené 2-násobne pred pokračovaním kódovania signálu. V prípade vstupu typu m do procesora s pevnou rádovou čiarkou, kde je vstup konvertovaný na hodnoty od –8 031 do +8 031, by mali byť zmenšené 2-násobne. Inou alternatívou je zaobchádzanie s týmito hodnotami ako by boli v Q1 formáte, čo znamená prítomnosť jedného bitu napravo od desatinnej čiarky. Pri všetkých výpočtoch sa potom bude musieť brať tento bit do úvahy.
Ak má vstupný signál plne dynamický rozsah od –32768 do +32767, vstupné hodnoty považujeme za Q3 formát. Tieto hodnoty sú preto zmenšené 8-násobne. Na výstupe dekódera sa zasa musí obnoviť pôvodný rozsah signálu.
Tento blok uchováva päť po sebe idúcich vzoriek signálu ,
,
,
,
, vyjadrených
signálovým vektorom
Jeho úlohou je po každých 4 signálových vektoroch vyrátať koeficienty detekčného váhovacieho filtra na základe lineárnej predikčnej analýzy (LPC) nekvantizovaného signálu. Koeficienty sa menia pri 3. signálovom vektore každého 4-vektorového adaptačného cyklu, inak zostávajú konštantné.
Ich výpočet prebieha nasledovne:Vstupný signálový vektor sa po prechode detekčným váhovacím filtrom mení na
váhovaný vektor
. Okrem inicializácie nesmie byť pamäť filtra (vnútorné stavové
premenné alebo hodnoty držané v oneskorovacích článkoch) nikdy vynulovaná. Pre
modemové alebo iné nehovorové signály CCITT odporúča nepoužívať detekčný váhovací
filter, čo sa realizuje nastavením
.
Syntetizačný filter má na svojej spätnej väzbe umiestnený LPC prediktor. Prenosová
funkcia syntetizačného filtra je , kde
je prenosová funkcia LPC prediktora.
Jeho úlohou je upravovať koeficienty syntetizačného filtra. Zo vstupného kvantovaného signálu (syntetizovaného) určí skupinu koeficientov syntetizačného filtra. Priníp fungovania je podobný ako pri adaptéri detekčného váhovacieho filtra. Funkcia modulu hybridného okna a Levinson-Durbin rekurzného modulu sa líši len v týchto bodoch:
Obnovovacia perióda je stále 20 vzoriek a korekčný faktor bieleho šumu má tiež
rovnakú hodnotu. Prenosová funkcia LPC prediktora potom vyzerá nasledovne: ,
kde
sú koeficienty vypočítané
LPC prediktorom.
Podľa vstupného excitačného prírastku ovplyňuje svojím výstupom
vektor
(zrejmé
z obr. 1). V podstate sa snaží predpovedať prírastok
na základe predchádzajúcich
hodnôt
,
, ... použitím lineárnej predikcie v logaritmickej oblasti.
Z 1024 kódových vektorov uložených v kódovej tabuľke VQ budenia vyhľadá najlepší vektor najlepšie aproximujúci kvantovaný vstupný signálový vektor. Kvôli redukovaní zložitosti vyhľadávania je celá tabuľka popísaná 10 bitovým indexom (obsahujúca 1024 vektorov) rozdelená na 2 menšie popísané 7 bitovým (128 nezávislých vektorov) resp. 3 bitovým (8 skalárnych hodnôt symetrických okolo nuly – 1 znamienkový bit, 2 bity vyjadrujúce veľkosť) indexom. Výsledný výstupný vektor vznikne vybratím najlepšieho vektora s 1. tabuľky popisujúcou tvar a najlepšieho vektora s 2. tabuľky popisujúcou úroveň aproximovaného vektora.
V princípe vyhľadávací modul kódovej tabuľky váhuje každý z 1024 kódových vektorov
na základe hodnoty a následne
ich posiela postupne cez kaskádový filter pozostávajúci zo syntetizačného filtra
a detekčného váhovacieho
filtra
. Pamäť filtra je
inicializovaná na nulu zakaždým keď modul pošle nový kódový vektor do kaskádového
filtra s prenosovou funkciou
.
Napriek tomu že kóder našiel a poslal na výstup najlepší index do kódovej tabuľky
musia byť ešte vykonané niektoré dodatočné úlohy, aby sa mohlo pokračovať v
kódovaní ďaľšieho vstupného signálového vektora. Najprv je poslaný najlepší
index (ten istý čo bol poslaný na výstup dekódera) do kódovej tabuľky VQ budenia,
ktorá nájde príslušný najlepší kódový vektor. Ten je váhovaný hodnotou , pričom
vektor
. Vektor
je potom poslaný do syntetizačného filtra za účelom získania
aktuálneho kvantovaného signálového vektora
. Bloky kódová tabuľka budenia,
zosilňovač, spätná adaptácia zosilnenia, syntetizačný filter a spätná adaptácia
prediktorov sú vlastne simulovaný dekóder (obr. 1). Spätno-väzobný adaptér syntetizačného
filtra potrebuje tento kvantovaný signálový vektor
na upravenie koeficientov
syntetizačného filtra. Podobne potrebuje spätno-väzobný adaptér zosilnenia vektor
na úpravu koeficientov lineárneho prediktora zosilnenia.
Účelom tohto dodatku je popísať možnosť použitia aritmetickej jednotky s pevnou rádovou čiarkou pri kódovaní hovorového signálu na rýchlosť 16kbit/s s použitím LD – CELP. Implementácie založené na aritmetických jednotkách s pohyblivou alebo pevnou rádovou čiarkou musia byť schopné navzájom spolupracovať a produkovať signál s rovnakou kvalitou.
Pri použití aritmetickej jednotky s pevnou rádovou čiarkou sa predpokladá dĺžka slova 16 bitov. Vnútorné pracovné registre (napríklad akumulátor) môžu mať inú dĺžku. Dodatok udáva ako vykonávať operácie na výpočet parametrov, ktoré sú uvedené v odporúčaní G.728 (pre aritmetickú jednotku s pohyblivou rádovou čiarkou), s použitím DSP s pevnou rádovou čiarkou s jedným 32 bitovým registrom a aspoň dvomi 32 bitovými (prípadne viac bitovými) akumulátormi.
Dodatok obsahuje modifikácie kódovacieho algoritmu potrebné na redukciu prenosovej rýchlosti na 12,8 kbit/s prípadne 9,6 kbit/s. Uvedený problém sa rieši zmenou dĺžky indexu vektora v katalógu, ktorý sa prenáša medzi kóderom a dekóderom. Index sa v podstate skladá z dvoch častí. Sedem bitov (3. až 9.) sa používa na indexovanie v katalógu vektorov a ostatné 3 bity na indexovanie v katalógu zosilnení. Z dĺžok indexov vyplývajú počty položiek jednotlivých katalógov. Na redukciu prenosovej rýchlosti na rýchlosť 12,8 kbit/s je potrebné skrátiť dĺžku indexu o 2 bity. Preto sa vynechá 9. bit indexu a počet položiek katalógu zosilnení sa redukuje na štyri (2 bity na indexáciu namiesto troch). Redukcia prenosovej rýchlosti na 9,6 kbit/s sa dosiahne použitím indexov s dĺžkou 6 bitov. Počet položiek katalógu zosilnení je ako pri rýchlosti 12,8 kbit/s čím sa dosiahne úspora jedného bitu. O ďalšie tri bity sa skráti index do katalógu vektorov (vypustí sa 9., 8. a 5. bit indexu). Bity indexu, ktoré sú v obidvoch prípadoch vynechávané boli určené podľa pravdepodobnosti výskytu jednotlivých vektorov, aby sa čo najviac obmedzil vplyv na kvalitu kódovaného signálu.
Dodatok popisuje digitálne testovacie postupnosti a merací softvér na implementáciu verifikácie. V odporúčaní je definovaný algoritmus kódovania v použitím LD – CELP tak, aby bola zachovaná možnosť imlementovať kóder na rôznom hardvéri. Z toho vyplýva, že žiadne riešenie nie je úplne zhodné s referenčným riešením. Pri verifikácii sa preto posudzuje miera rozdielnosti medzi referenčnými výsledkami a výsledkami testu. Ak je odchýlka výsledkov dostatočne malá, môže daná implementácia spĺňať podmienky verifikácie. Keďže pri verifikácii sa testuje iba určitá podskupina možných vstupov, nie je možné výsledok verifikácie pokladať za stopercentný.
V dodatku je porovnávaná kvalita kódovania kóderom používajúcim LD – CELP (G.728) s kódovaním s použitím ADPCM (G.726) a klasickým PCM kódovaním (G.711). Kvalitatívne je 16 kbit/s kódovanie s použitím LD – CELP porovnateľné s 32 kbit/s ADPCM, je však odolnejšie voči chybám. Ďalej dodatok popisuje vlastnosti kodéra používajúceho LD – CELP v kombinácii s inými kódermi.
![]() |
G.728 E | G.728 NGE | G.728 NHE | G.728 P1E | G.728 P2E |