Kódování Code Excited Linear Prediction ( CELP ) je algoritmus kódování řeči původně navržený Manfredem Schroederem a B. S. Atalem v roce 1985. Algoritmus v té době poskytoval výrazně lepší kvalitu než stávající algoritmy s nízkou bitovou rychlostí , jako jsou zvukové kodeky RELP a LPC (např . FS-1015 ). Spolu s variantami jako ACELP , RCELP , LD-CELP a VSELP je dnes nejrozšířenějším algoritmem kódování řeči. CELP se v současnosti používá spíše jako obecný termín pro třídu algoritmů než jako specifický kodek .
Algoritmus CELP je založen na čtyřech hlavních myšlenkách:
Původní algoritmus Schroedera a Atala z roku 1983, když byl spuštěn na superpočítači Cray I, vyžadoval 150 sekund na zakódování 1sekundového signálu řeči. S příchodem efektivnějších způsobů implementace kódových tabulek a zlepšením výpočetních schopností se algoritmus stal možným ve vestavěných zařízeních, jako jsou mobilní telefony.
Než prozkoumáme složitý proces kódování CELP, podívejme se, jak funguje dekodér. Obrázek popisuje univerzální dekodér CELP. Buzení se provádí sčítáním příspěvků z adaptivní (jinak hodinové ) kódové tabulky a pevné (jinak stochastické) kódové tabulky:
kde je adaptivní (hodinový) příspěvek kódové knihy a je fixní (stochastický) příspěvek kódové knihy. Pevný kódový seznam je vektorový kvantizační slovník, který je (implicitně nebo explicitně) pevně zakódován do kodeku. Tento číselník může být algebraický ACELP nebo explicitně uložený (např . Speex ). Záznamy v adaptivním kódovém seznamu se skládají ze zpožděných verzí buzení. To umožňuje efektivně kódovat periodické signály, jako je lidská řeč.
Filtr, který generuje buzení, má ve tvaru všechny póly modelu Tento filtr je použitelný nejen proto, že využívá všechny póly, ale také proto, že se snadno počítá a dobře znázorňuje lidský hlas.
Základní princip CELP se nazývá (Absolute) "Analysis by Synthesis", což znamená, že kódování (analýza) se provádí percepčně, optimalizuje dekódovaný signál v uzavřené smyčce. Teoreticky by nejlepší tok CELP byl vytvořen kombinací všech možných binárních znakových sad a výběrem té, která produkuje nejlépe znějící dekódovaný signál. To samozřejmě není možné ze dvou důvodů: složitost implementace přesahuje jakýkoli aktuálně dostupný hardware a kritérium výběru „nejlépe znějící“ implikuje lidskou bytost jako posluchače.
Aby bylo možné implementovat kódování v reálném čase pomocí omezených výpočetních zdrojů, je vyhledávání CELP rozděleno na menší, lépe ovladatelná, sekvenční vyhledávání pomocí jednoduché funkce percepčního vážení. Obvykle se kódování provádí v následujícím pořadí:
Většina (pokud ne všechny) moderních audio kodeků se pokouší tvarovat zkreslení v kódování tak, aby se objevovalo hlavně v těch frekvenčních oblastech, kde je lidské ucho nezachytí. Například ucho lépe snáší zkreslení v částech zvukového rozsahu, které jsou hlasitější a naopak. Proto CELP místo minimalizace kvadratické chyby minimalizuje chyby ve vážené oblasti. Výsledek vážení na křivce W(z) je obvykle odvozen z filtru LKP prostřednictvím rozšíření šířky pásma :
kde .
Kompresní metody | |||||||
---|---|---|---|---|---|---|---|
Teorie |
| ||||||
Bezztrátový |
| ||||||
Zvuk |
| ||||||
snímky |
| ||||||
Video |
|