📄 mel.c
字号:
/* ---------------------------------------------
The correlating functions in SpeechRecognition
EndPoint Detection
------------------------------------------------
*/
#include <math.h>
#include <stdio.h>
#define FLOW 0
#define FHIGH 4000
#define FRAMELENGTH 256
#define BANDSUM 20
#define SAMPLING 8000
void main(void)
{
float fFmelLow,fFmelHigh,fFmelBandWid;
float fFlow,fHigh;
float fFmel[BANDSUM + 1],fFrequency[BANDSUM + 1];
float fBoundaryPoint[BANDSUM + 1];
float fFrameTime;
float fFilter[BANDSUM][FRAMELENGTH];
int i,k;
fFlow = 1 + (float)FLOW/(float)700;
fHigh = 1 + (float)FHIGH/(float)700;
fFmelLow = (float)(1127 * log(fFlow));
fFmelHigh = (float)(1127 * log(fHigh));
fFmelBandWid = (fFmelHigh-fFmelLow)/(float)(BANDSUM + 1);
for(i = 0; i <= BANDSUM; i++)
{
fFmel[i] = fFmelLow + i * fFmelBandWid;
fFrequency[i] = (float)(700 * (exp(fFmel[i]/1127) - 1));
fFrameTime =(float)FRAMELENGTH/(float)SAMPLING;
fBoundaryPoint[i] = fFrequency[i] * fFrameTime;
}
for(i = 1; i <= BANDSUM; i ++)
{
for(k = 0; k <FRAMELENGTH; k ++)
{
if(k >= fBoundaryPoint[i-1] && k <= fBoundaryPoint[i])
fFilter[i][k] = (k - fBoundaryPoint[i-1])/(fBoundaryPoint[i] - fBoundaryPoint[i-1]);
else if(k >= fBoundaryPoint[i] && k <= fBoundaryPoint[i + 1])
fFilter[i][k] = (fBoundaryPoint[i + 1] - k)/(fBoundaryPoint[i + 1] - fBoundaryPoint[i]);
else fFilter[i][k] = 0;
}
}
printf("Now to the end of this program\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -