Code Excited Linear Prediction ( CELP )-kodning er en talekodningsalgoritme, der oprindeligt blev foreslået af Manfred Schroeder og B.S. Atal i 1985. På det tidspunkt leverede algoritmen markant bedre kvalitet end eksisterende lav bitrate algoritmer såsom RELP og LPC audio codecs (f.eks . FS-1015 ). Sammen med varianter som ACELP , RCELP , LD-CELP og VSELP , er det den mest udbredte talekodningsalgoritme i dag. CELP bruges i øjeblikket som en generel betegnelse for en klasse af algoritmer i stedet for et specifikt codec .
CELP-algoritmen er baseret på fire hovedideer:
Schroeder og Atals originale algoritme i 1983, når den blev kørt på Cray I supercomputeren, krævede 150 sekunder for at kode et 1 sekunds talesignal. Med fremkomsten af mere effektive måder at implementere kodetabeller på og forbedringen af beregningsmulighederne er det blevet muligt at køre algoritmen i indlejrede enheder såsom mobiltelefoner.
Før vi udforsker den komplekse proces med CELP-kodning, lad os se på, hvordan en dekoder fungerer. Illustrationen beskriver CELP universaldekoderen. Excitationen udføres gennem summeringen af bidragene fra den adaptive (ellers ur ) kodetabel og den faste (ellers stokastiske) kodetabel:
hvor er det adaptive (ur) kodebogsbidrag og er det faste (stokastiske) kodebogsbidrag. En fast kodebog er en vektorkvantiseringsordbog, der (implicit eller eksplicit) er hårdkodet til et codec. Denne kodebog kan være algebraisk ACELP eller eksplicit lagret (f.eks . Speex ). Indtastningerne i den adaptive kodebog består af forsinkede versioner af excitationen. Dette gør det muligt effektivt at indkode periodiske signaler såsom menneskelig tale.
Filteret, der genererer excitationen, har alle modelpoler i formen Dette filter er anvendeligt, ikke kun fordi det bruger alle poler, men også fordi det er nemt at beregne og er en god repræsentation af den menneskelige stemme.
Grundprincippet bag CELP kaldes (Absolut) "Analysis by Synthesis", hvilket betyder, at kodning (analyse) udføres perceptuelt, hvilket optimerer det afkodede signal i en lukket sløjfe. I teorien ville den bedste CELP-strøm blive produceret ved at kombinere alle mulige binære tegnsæt og vælge den, der producerer det bedst klingende afkodede signal. Dette er åbenbart ikke muligt af to grunde: implementeringskompleksiteten er ud over enhver aktuelt tilgængelig hardware, og det "bedst lydende" udvælgelseskriterium indebærer et menneske som lytteren.
For at implementere realtidskodning ved brug af begrænsede computerressourcer er CELP-søgningen opdelt i mindre, mere håndterbare, sekventielle søgninger ved hjælp af en simpel perceptuel vægtningsfunktion. Typisk sker kodning i følgende rækkefølge:
De fleste (hvis ikke alle) moderne audio-codecs forsøger at forme forvrængningen i kodningen, så den primært vises i de frekvensområder, hvor den ikke kan opfanges af det menneskelige øre. For eksempel er øret mere tolerant over for forvrængning i dele af lydområdet, der er højere og omvendt. Det er derfor, i stedet for at minimere den kvadratiske fejl, minimerer CELP fejlene på det vægtede område. Vægtningsresultatet på W(z)-kurven er typisk afledt af LKP-filteret via båndbreddeudvidelse :
hvor .
Kompressionsmetoder _ | |||||||
---|---|---|---|---|---|---|---|
Teori |
| ||||||
Tabsfri |
| ||||||
Lyd |
| ||||||
Billeder |
| ||||||
Video |
|