A Code Excited Linear Prediction ( CELP ) kódolás egy beszédkódoló algoritmus, amelyet eredetileg Manfred Schroeder és B. S. Atal javasoltak 1985-ben. Abban az időben az algoritmus lényegesen jobb minőséget nyújtott, mint a meglévő alacsony bitsebességű algoritmusok , mint például a RELP és az LPC audiokodekek (pl . FS-1015 ). Az olyan változatok mellett, mint az ACELP , RCELP , LD-CELP és VSELP , ez ma a legszélesebb körben használt beszédkódoló algoritmus. A CELP-t jelenleg az algoritmusok egy osztályának általános kifejezéseként használják, nem pedig egy konkrét kodekre .
A CELP algoritmus négy fő gondolaton alapul:
Schroeder és Atal eredeti algoritmusa 1983-ban, amikor a Cray I szuperszámítógépen futott, 150 másodpercet igényelt egy 1 másodperces beszédjel kódolásához. A kódtáblázatok megvalósításának hatékonyabb módjainak megjelenésével és a számítási képességek javulásával lehetővé vált az algoritmus futtatása beágyazott eszközökön, például mobiltelefonokon.
Mielőtt megvizsgálnánk a CELP kódolás összetett folyamatát, nézzük meg, hogyan működik a dekóder. Az ábra a CELP univerzális dekódert mutatja be. A gerjesztés az adaptív (egyébként órajelű ) kódtábla és a rögzített (egyébként sztochasztikus) kódtábla hozzájárulásainak összegzésével történik:
ahol az adaptív (óra) kódkönyvi hozzájárulás és a rögzített (sztochasztikus) kódkönyvi hozzájárulás. A rögzített kódkönyv egy vektorkvantálási szótár, amely (implicit módon vagy explicit módon) kódolva van egy kodekbe. Ez a kódkönyv lehet algebrai ACELP vagy explicit módon tárolt (pl . Speex ). Az adaptív kódkönyv bejegyzései a gerjesztés késleltetett változataiból állnak. Ez lehetővé teszi periodikus jelek, például emberi beszéd hatékony kódolását.
A gerjesztést generáló szűrőnek minden modellpólusa a formában van Ez a szűrő nemcsak azért alkalmazható, mert minden pólust felhasznál, hanem azért is, mert könnyen kiszámítható, és jól reprezentálja az emberi hangot.
A CELP alapelve az (Abszolút) "Analysis by Synthesis", ami azt jelenti, hogy a kódolást (analízist) perceptuálisan hajtják végre, optimalizálva a dekódolt jelet egy zárt hurokban. Elméletileg a legjobb CELP adatfolyamot úgy állítjuk elő, hogy az összes lehetséges bináris karakterkészletet kombináljuk, és kiválasztjuk azt, amelyik a legjobb hangzású dekódolt jelet produkálja. Ez nyilvánvalóan két okból nem lehetséges: a megvalósítás bonyolultsága meghaladja a jelenleg rendelkezésre álló hardvereket, és a "legjobb hangzású" kiválasztási kritérium az embert jelenti hallgatóként.
A valós idejű kódolás korlátozott számítási erőforrásokkal való megvalósítása érdekében a CELP keresést kisebb, jobban kezelhető, szekvenciális keresésekre bontják egy egyszerű észlelési súlyozási funkció segítségével. A kódolás általában a következő sorrendben történik:
A legtöbb (ha nem az összes) modern audiokodek megkísérli a kódolás torzítását úgy alakítani, hogy az elsősorban azokon a frekvenciatartományokon jelenjen meg, ahol az emberi fül nem tudja felfogni. Például a fül jobban tolerálja a torzítást a hangtartomány hangosabb részein, és fordítva. Éppen ezért a CELP a másodfokú hiba minimalizálása helyett minimalizálja a súlyozott területen lévő hibákat. A W(z) görbén a súlyozási eredmény általában az LKP szűrőből származik sávszélesség -kiterjesztésen keresztül :
ahol .
Tömörítési módszerek | |||||||
---|---|---|---|---|---|---|---|
Elmélet |
| ||||||
Veszteségmentes |
| ||||||
Hang |
| ||||||
Képek |
| ||||||
Videó |
|