www.pudn.com > exp_001.rar > exp_001.c


#include  
#include  
#include  
 
#define FRAME_SIZE		160 // 11KHz, 20ms 
#define FRAME_SHIFT		80 // 11KHz, 10ms 
 
#undef PI 
#define PI 3.1415926535897932384626434 
 
/* WAV文件读取 */ 
int ReadWaveFile( 
	char	*fn,	// I: 文件名 
	int		*fs,	// O: 文件大小 
	short	**dat	// O: 语音数据 
) 
{ 
    FILE	*fp; 
    int		dsize; 
     
    if ((fp = fopen(fn, "rb")) == NULL) { 
		fprintf(stderr, "%s: No such file \n", fn);	return(-1); 
    } 
    fseek(fp, 0L, SEEK_END); 
    dsize = ftell(fp)/2; 
    fseek(fp, 0L, SEEK_SET); 
     
    if ((*dat = (short *)malloc(sizeof(short)*dsize)) == NULL) { 
		fprintf(stderr, "Memory Error \n");	return(-1); 
    } 
    if (fread(*dat, sizeof(short), dsize, fp) != (unsigned int)dsize) { 
		free(*dat); 
		return(-1); 
    } 
		   
	fclose(fp); 
	*fs = dsize; 
     
    return(0); 
} 
 
/* 短时能量 */ 
float RawEnergy( 
	int		fm,		// I: 帧长 
	short	wav[]	// I: 帧波形数据wav[0]-wav[fm-1] 
) 
{ 
	int i; 
	float	raw_E; 
 
	raw_E = 0.0; 
	for (i=0;i