Also known as: CELP, code-excited linear prediction
Code-excited linear prediction (CELP) is a speech-coding method that combines an LPC vocal-tract filter with an excitation signal selected from a codebook by analysis-by-synthesis — the encoder searches the codebook for the entry that, once filtered, best reproduces the original speech.1 This closed-loop search is what lets CELP sound natural at 4–16 kbps, and it underpins nearly every cellular and VoIP voice codec.
How it works
CELP keeps LPC’s insight that speech is an excitation passed through a vocal-tract filter, but replaces LPC’s crude voiced/unvoiced pulse-or-noise excitation with a much better one:
- Short-term (LPC) filter. Predictor coefficients modelling the spectral envelope (formants) are found per frame, exactly as in plain LPC.
- Long-term / adaptive codebook. A pitch predictor supplies the periodicity of voiced speech from recently synthesised excitation.
- Fixed codebook. A stochastic (or, in ACELP, algebraic) codebook supplies the residual detail. The encoder tries entries, gains, and pitch lags, filters each candidate through the LPC synthesis filter, and keeps the combination that minimises a perceptually weighted error — error energy is shaped to hide where the ear masks it.
- Transmit indices, not waveforms. Only the LPC coefficients, pitch lag, codebook indices, and gains are sent. The decoder is a simple copy of the encoder’s synthesis path, so it needs no search.
The genius is that both encoder and decoder share the same synthesis filter, so the encoder can hear its own output and optimise against it — the closed loop is why CELP outperforms open-loop LPC at the same rate.
Variants
The dominant flavour is ACELP (algebraic CELP), whose sparse algebraic codebook makes the search cheap and powers G.729, AMR (GSM/3G), AMR-WB, and EVS. Other members include Qualcomm’s EVRC/QCELP (CDMA cellular), LD-CELP (G.728, low delay), and the open Speex codec.
Relevance to SDR
CELP is the codec family of the phone network rather than trunked land-mobile radio, so it is worth contrasting with what a scanner actually decodes. GSM, UMTS, LTE VoLTE, and most VoIP run CELP variants. Public-safety radio instead uses the multi-band-excitation family — IMBE for P25 Phase 1 and AMBE+2 for DMR and P25 Phase 2 — which model the speech spectrum band-by-band rather than by codebook search. Open Codec 2 sits closer to the MBE philosophy than to CELP. GopherTrunk does not implement a CELP decoder, because the systems it targets do not use CELP; knowing the distinction clarifies why land-mobile vocoders sound different from a mobile-phone call.
Sources
-
Code-excited linear prediction — Wikipedia, for analysis-by-synthesis, codebooks, and the codec lineage. ↩