CELP

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 8. juni 2019; checks kræver 4 redigeringer .

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 .

Introduktion

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.

CELP-dekoder

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.

CELP encoder

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:

Støjforvrængning

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 .

Links