cc [ flag... ] file... –lmlib [ library... ] #include <mlib.h> mlib_status mlib_SignalLPCPitchAnalyze_F32(mlib_s32 *pitch, const mlib_f32 *sigwgt, const mlib_s32 *region, mlib_s32 length);
The mlib_SignalLPCPitchAnalyze_F32() function performs open-loop pitch analysis.
The open-loop pitch analysis uses perceptual weighted signal and is done with following steps.
In the first step, three maxima of the correlation
N-1 R(k) = SUM sw(j) * sw(j-k) j=0
where N = length, is located for each of the three search regions.
In the second step, the retained maxima R(Ti), i=0,1,2 are normalized as following.
R(Ti) Rn(ti) = ---------------------, i=0,1,2 N-1 2 SQRT(SUM sw(j-Ti) ) j=0
where N = length.
In the third step, the best open-loop delay Topt is determined as following.
Topt = T0 if (Rn(t1) ≥ (0.85 * Rn(Topt)) Topt = t1 if (Rn(t2) ≥ (0.85 * Rn(Topt)) Topt = t2
See G.729, G.729A, GSM EFR standards.
The function takes the following arguments:
The speech pitch estimated.
The weighted signal vector. sigwgt points to the current sample of the weighted signal vector, length samples must be availabe after this point, and MAX{region[i],i=0,1,...,5} samples must be available before this point.
The lower/upper boundaries of the three search regions, where region[2*i] is the lower boundary of search region i and region[2*i+1] is the upper boundary of search region i.
The length of the signal vectors over which the correlation is calculated.
The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
|