Forums

about fractional pitch search of melp

Started by tms3...@yahoo.com.cn December 15, 2008
hi all
I'm learning MELP source code.I am not able to understand the fractional pitch search algorithm in function

Shortword frac_pch(Shortword sig_in[],Shortword *pcorr,Shortword fpitch,
Shortword range,Shortword pmin,Shortword pmax,
Shortword pmin_q7,Shortword pmax_q7,Shortword lmin);

somebody can give me some hints about determining fractional pitch in Bandpass voicing analysis.
I alse have a question about 6th order lowpass Butterworth filter used in Global pitch search.the filter coefficient is below:
Shortword lpf_num[(LPF_ORD/2)*3] = {
713, 1426, 713,
798, 1600, 801,
1016, 2028, 1012};
/* sign of coefficients for lpf_den(denominator ) is reversed */
Shortword lpf_den[(LPF_ORD/2)*3] = {
-8192, 6884, -1543,
-8192, 7723, -2731,
-8192, 9793, -5657};

the filter coefficient is produced by two matlab commands lines as specified in the source code:
[z,p,k]=butter(6,1000/4000);
sos=zp2sos(z,p,k);
when i type the two command line in matlab version6.5.1, I cann't get the same coefficient as in the source code,the denominator is the same when converted into Q13,but the numerator is different.when reversed the sign of denominator ,the coefficient i got is below :
0.0011 0.0021 0.0011 -1.0000 0.8403 -0.1883
1.0000 2.0000 1.0000 -1.0000 0.9428 -0.3333
1.0000 2.0000 1.0000 -1.0000 1.1954 -0.6906
the left half part(numerator ) is different from in the source code.
how can i get the coefficients as in the source code?