cc [ flag... ] file... lmlib [ library... ] #include <mlib.h> mlib_status mlib_SignalLPCCovariance_S16(mlib_s16 *coeff, mlib_s32 cscale, const mlib_s16 *signal, void *state);
mlib_status mlib_SignalLPCCovariance_S16_Adp(mlib_s16 *coeff, mlib_s32 *cscale, const mlib_s16 *signal, void *state);
Each function performs linear predictive coding with covariance 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(ni) + 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(ni) i=1
In covariance method, the coefficients can be obtained by solving following set of linear equations.
M SUM a(i) * c(i,k) = c(0,k), k=1,...,M i=1
where
Nk1 c(i,k) = SUM s(j) * s(j+ki) j=0
are the covariance coefficients of s(*), N is the length of the input speech vector.
Note that the covariance matrix R is a symmetric matrix, and the equations can be solved efficiently with Cholesky decomposition method.
See Fundamentals of Speech Recognition by Lawrence Rabiner and BiingHwang Juang, Prentice Hall, 1993.
Note for functions with adaptive scaling (with _Adp postfix), the scaling factor of the output data will be calculated based on the actual data; for functions with nonadaptive scaling (without _Adp postfix), the user supplied scaling factor will be used and the output will be saturated if necessary.
Each function takes the following arguments:
coeff
cscale
signal
state
Each function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:

mlib_SignalLPCCovarianceInit_S16(3MLIB), mlib_SignalLPCCovarianceFree_S16(3MLIB), attributes(5)