Algebraic code-excited linear prediction

Algebraic code-excited linear prediction (ACELP) is a speech coding algorithm in which a limited set of pulses is distributed as excitation to a linear prediction filter. It is a linear predictive coding (LPC) algorithm that is based on the code-excited linear prediction (CELP) method and has an algebraic structure. ACELP was developed in 1989 by the researchers at the Université de Sherbrooke in Canada.

The ACELP method is widely employed in current speech coding standards such as AMR, EFR, AMR-WB (G.722.2), VMR-WB, EVRC, EVRC-B, SMV, TETRA, PCS 1900, MPEG-4 CELP and ITU-T G-series standards G.729, G.729.1 (first coding stage) and G.723.1. The ACELP algorithm is also used in the proprietary ACELP.net codec. Audible Inc. use a modified version for their speaking books. It is also used in conference-calling software, speech compression tools and has become one of the 3GPP formats.

The ACELP patent expired in 2018 and is now royalty-free.

Features
The main advantage of ACELP is that the algebraic codebook it uses can be made very large (> 50 bits) without running into storage (RAM/ROM) or complexity (CPU time) problems.

Technology
The ACELP algorithm is based on that used in code-excited linear prediction (CELP), but ACELP codebooks have a specific algebraic structure imposed upon them.

A 16-bit algebraic codebook shall be used in the innovative codebook search, the aim of which is to find the best innovation and gain parameters. The innovation vector contains, at most, four non-zero pulses.

In ACELP, a block of N speech samples is synthesized by filtering an appropriate innovation sequence from a codebook, scaled by a gain factor g c, through two time-varying filters.

The long-term (pitch) synthesis filter is given by:


 * $$\frac1{B(z)} = \frac1{ 1 - g_p z^{-T} }$$

The short-term synthesis filter is given by:
 * $$\frac1{A(z)} = \frac1{ 1 + \sum_{i=1}^P a_i z^{-i} }$$