Field Guide · algorithm

Also known as: ACELP, Algebraic CELP

ACELP (Algebraic Code-Excited Linear Prediction) is a variant of code-excited linear prediction in which the fixed excitation codebook is not a stored table but an algebraic structure: a small number of unit pulses whose positions and signs are chosen on the fly.1 Because the codebook is defined by a rule rather than memory, the encoder can search a very large excitation space cheaply, which is why ACELP became the dominant low-bitrate speech algorithm in cellular and land-mobile radio — it is the engine inside AMR, G.729, and the TETRA voice codec.

algebraiccodebook adaptive(pitch) Σ · gains LPCsynth minimise weighted error ≈ speech
ACELP excites an LPC synthesis filter from a sparse algebraic pulse codebook plus an adaptive pitch codebook, choosing pulses by analysis-by-synthesis.

How it works

ACELP inherits the CELP frame: linear predictive coding models the vocal-tract spectrum as a short-term synthesis filter, an adaptive (pitch) codebook supplies the periodic component of the excitation, and a fixed codebook supplies the remaining noise-like innovation. What makes it algebraic is the form of that fixed codebook. Each excitation subframe is divided into interleaved tracks, and each track may hold exactly one non-zero pulse of amplitude +1 or −1 at one of a few allowed positions. A codeword is therefore just a list of pulse positions and signs — no vectors are stored at all.

The encoder runs analysis-by-synthesis: it tries candidate excitations, synthesises speech through the LPC filter, and keeps the one that minimises a perceptually weighted error (weighting deemphasises error near the formant peaks where it is masked). A brute-force search over every pulse combination would be huge, so ACELP’s key trick is that the sparse, signed-unit structure lets the search be reformulated as maximising a simple correlation term, pruned with nested loops and depth-first pulse placement. That is the whole reason the algorithm exists: it delivers near-optimal excitation quality at a search cost cheap enough for a 1990s DSP.

Variants

  • Bitrate families — G.729 uses 8 kbps narrowband ACELP; AMR spans 4.75–12.2 kbps by changing the number of pulses and gain resolution; AMR-WB and 3GPP EVS extend ACELP to 16 kHz wideband and beyond.
  • Algebraic vs stored codebooks — earlier CELP coders (e.g. the original DoD CELP) searched stored Gaussian codebooks; ACELP replaced them with the pulse-track structure, cutting both memory and search complexity.
  • Hybrid coders — modern super-wideband codecs switch between an ACELP core for speech and a transform/MDCT core for music, choosing per frame.

In practice

ACELP is heavily patented (originally by Université de Sherbrooke / VoiceAge), which shaped the whole ecosystem: standards bodies licensed it for cellular and TETRA, while royalty-free projects deliberately avoided it. Its analysis-by-synthesis loop makes the encoder far more expensive than the decoder, so a scanner only ever needs the lightweight synthesis side.

Relevance to SDR

ACELP is not a modulation but the speech-compression core carried inside several digital-radio payloads a receiver may meet. TETRA voice frames carry an ACELP codec at 4.567 kbps (plus AMR-style channel coding), and GSM cellular voice moved to AMR’s ACELP modes. GopherTrunk’s decode focus is land-mobile trunking whose vocoders are the MBE family rather than ACELP, so ACELP appears here as background on how competing digital-voice systems compress speech, not as a codec GopherTrunk itself renders.

Sources

  1. Algebraic code-excited linear prediction — Wikipedia, on the algebraic fixed codebook, pulse-track structure, and standards that use ACELP. 

See also