www.pudn.com > producemfcc.rar > 13213.cpp


#include  
#include  
#include  
#include  
#include  
 
 
 
 
#define pi 3.1415926 
#define BFh 2595*log10(double(5512.5)/double(700)+1) 
#define Fh 5512.5 
#define Fs 22050               //采样频率 
#define max1(a,b) ((a)>=(b)?(a):(b)) 
#define abs1(a)		((a)>=(0) ? (a):(-a)) 
//#define maxdata  32768 
 
 
 
 
 
 
 
typedef struct  
{ 
	int   LenFrame;    //每帧的帧长 
	int   IncFrame;    // 每帧的帧移 
	int   dimension;   // 每帧的维数 
	char  VecPath[50];    // .mfcc文件的存储路径 
  }ConfigS; 
typedef struct 
{ 
	int   dimension;   // 每帧的维数 
	long  FraNum;      //每个.wav文件的帧数 
}MfccFormat; 
void readwav(char *name,WAVEFORMATEX &waveform,int &len) 
{ 
	ifstream ft(name,ios::binary); 
	 
	if(!ft) 
	{ 
		cerr<<"open error;"<0;num++) 
	{		 
		for(int k=0;k<256;k++) 
			i--; 
		i+=128;		 
	} 
	zhennum=num-2; 
} 
 
 
 
void findmax(char *name,int FraNum,ConfigS config,short &maxdata) 
{ 
 
    ifstream ft(name,ios::binary);	 
	if(!ft) 
	{ 
		cerr<<"open error;"<0)    //  b=  2^(L-1)   
		{	 
			b=b*2;   
			i--; 
		} 
		for(j=0;j<=b-1;j++)  //  for  (2)    
		{	 
			p=1;   
			i=8-L;   
			while(i>0)  // p=pow(2,7-L)*j;     
			{ 
				p=p*2;   
				i--; 
			}   
			p=p*j;   
			for(k=j;kf[m+1])) 
		return 0; 
	else if ((k >=f[m-1])&&(k <=f[m])) 
	{ 
		 
		return (k-f[m-1])/(f[m]-f[m-1]); 
	} 
	else 
		return (f[m+1]-k)/(f[m+1]-f[m]); 
     
 
} 
 
 
 
 
 
 
 
void  MelData(double *vector,double *mel ,double *meldata,int dimension,int fnum) 
{ 
//  char name[]={"meldata.txt"}; 
//	ofstream ft(name,ios::ate); 
	for(int j=0;j>config.dimension; 
	ft.getline(d,30,'='); 
	ft.ignore(); 
	ft>>config.IncFrame; 
	ft.getline(d,30,'='); 
	ft.ignore(); 
	ft>>config.VecPath; 
//	cout<=0)) 
		{ 
            NameOfMfcc1[j]=NameofWav[i]; 
			i--; 
			j++; 
		} 
        NameOfMfcc1[j]='\0'; 
 
     
    	int chn=strlen(NameOfMfcc1); 
		i=chn-1; 
		j=0; 
		while((NameOfMfcc1[i]!='.')&&(i>=0)) 
		{ 
			NameOfMfcc[j]=NameOfMfcc1[i]; 
			i--; 
			j++; 
		} 
		NameOfMfcc[j++]='.'; 
		NameOfMfcc[j++]='m'; 
		NameOfMfcc[j++]='f'; 
		NameOfMfcc[j++]='c'; 
		NameOfMfcc[j++]='c'; 
		NameOfMfcc[j]='\0'; 
 
        char *vecpath; 
		vecpath=(char *)malloc (50*sizeof(char)); 
		strcpy(vecpath,config.VecPath); 
		strcat(vecpath,NameOfMfcc); 
		 
        cout<<"VecPath   "<