cc [ flag... ] file... -lmlib [ library... ] #include <mlib.h> mlib_status mlib_SignalLPCAutoCorrel_F32(mlib_f32 *coeff, const mlib_f32 *signal, void *state);
The mlib_SignalLPCAutoCorrel_F32() function performs linear predictive coding with autocorrelation method.
In linear predictive coding (LPC) model, each speech sample is represented as a linear combination of the past M samples.
M s(n) = SUM a(i) * s(n-i) + G * u(n) i=1
where s(*) is the speech signal, u(*) is the excitation signal, and G is the gain constants, M is the order of the linear prediction filter. Given s(*), the goal is to find a set of coefficient a(*) that minimizes the prediction error e(*).
M e(n) = s(n) - SUM a(i) * s(n-i) i=1
In autocorrelation method, the coefficients can be obtained by solving following set of linear equations.
M SUM a(i) * r(|i-k|) = r(k), k=1,...,M i=1
N-k-1 r(k) = SUM s(j) * s(j+k) j=0
are the autocorrelation coefficients of s(*), N is the length of the input speech vector. r(0) is the energy of the speech signal.
Note that the autocorrelation matrix R is a Toeplitz matrix (symmetric with all diagonal elements equal), and the equations can be solved efficiently with Levinson-Durbin algorithm.
See Fundamentals of Speech Recognition by Lawrence Rabiner and Biing-Hwang Juang, Prentice Hall, 1993.
The function takes the following arguments:
The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
mlib_SignalLPCAutoCorrelInit_F32(3MLIB), mlib_SignalLPCAutoCorrelGetEnergy_F32(3MLIB), mlib_SignalLPCAutoCorrelGetPARCOR_F32(3MLIB), mlib_SignalLPCAutoCorrelFree_F32(3MLIB), attributes(5)