G.728
Kódovanie hovorového signálu na rýchlosť 16kbit/s použitím kódovo-závislej lineárnej predpovede s malým oneskorením (LD-CELP)

Popis LD-CELP (Low-Delay Code Excited Linear Prediction)

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.


Kóder LD-CELP

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).


Obr. 1: kóder LD-CELP


Dekóder LD-CELP

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.


Obr. 2: dekóder LD-CELP


Princíp kódovania LD-CELP

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.


Konverzia do spoločného formátu PCM

Tento blok konvertuje vstupný PCM signal typu A alebo m do jednotnej PCM .


Interné lineárne PCM úrovne

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.


Pamäť pre vektory

Tento blok uchováva päť po sebe idúcich vzoriek signálu , , , , , vyjadrených signálovým vektorom


Adaptér detekčného váhovacieho filtra

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:

Detekčný váhovací filter

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

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.


Spätno-väzobný adaptér syntetizačného filtra

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:

    a) vstupný signál je nekvantovaný
    b) veľkosť predikcie je 50, nie 10
    c) hybridné okno má rozdielne parametre N a a

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.


Spätno-väzobný adaptér zosilnenia

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.


Vyhľadávací modul kódovej tabuľky

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 .


Simulovaný dekóder

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.


Dodatok G – Použitie aritmetického zariadenia s pevnou rádovou čiarkou (Fixed Point Specification)

Úč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 H - Kódovanie s použitím LD – CELP s variabilnou prenosovou rýchlosťou do 16 kbit/s hlavne pre DCME (násobiace zariadenie digitálnych okruhov)

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 I - Programy a testovacie postupnosti na implementáciu verifikácie algoritmu kódera hovorového signálu LD – CELP

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ý.


Dodatok II - Vlastnosti kódera používajúceho LD – CELP

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.


Štandardy ITU-T v anglickom jazyku

G.728 E G.728 NGE G.728 NHE G.728 P1E G.728 P2E