📄 ivfilt.c
字号:
/**********************************************************************
*
* IVFILT Version 48
*
**********************************************************************
*
* 2nd order inverse filter, speech is decimated 4:1
*
* Inputs:
* LEN - Length of speech buffers
* NSAMP - Number of samples to filter
* LPBUF - Low pass filtered speech buffer
* Output:
* IVBUF - Inverse filtered speech buffer
* IVRC - Inverse filter reflection coefficients (for voicing)
*/
#include "config.ch"
#include "lpcdefs.h"
ivfilt( lpbuf, ivbuf, ivrc )
float ivbuf[], lpbuf[], ivrc[];
{
int i, j, k;
float r[3], pc1, pc2;
/* Calculate Autocorrelations */
for(i=0;i<=2;i++) {
r[i] = 0.;
k = 4*i;
for( j = (i+1)*4+PWLEN-LFRAME;j<=PWLEN;j+=2) {
r[i] += lpbuf[j]*lpbuf[j-k];
}
}
/* Calculate predictor coefficients */
pc1 = 0.;
pc2 = 0.;
ivrc[1] = 0.;
ivrc[2] = 0.;
if(r[0]>0.000001) {
ivrc[1] = r[1]/r[0];
ivrc[2] = (r[2]-ivrc[1]*r[1]) / (r[0]-ivrc[1]*r[1]);
pc1 = ivrc[1] - ivrc[1]*ivrc[2];
pc2 = ivrc[2];
}
/* Inverse filter LPBUF into IVBUF */
for(i=PWLEN+1-LFRAME;i<=PWLEN;i++) {
ivbuf[i] = lpbuf[i] - pc1*lpbuf[i-4] - pc2*lpbuf[i-8];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -