首页 wav文件读取C++源代码

wav文件读取C++源代码

举报
开通vip

wav文件读取C++源代码wav文件读取C++源代码 /**************************************************************************/ /* Function for reading data from WAV_PCM file */ /* Return value: */ /* (short int*): Pointer to the data buffer,if success */ /* NULL : If fail */ /***************...

wav文件读取C++源代码
wav文件读取C++源代码 /**************************************************************************/ /* Function for reading data from WAV_PCM file */ /* Return value: */ /* (short int*): Pointer to the data buffer,if success */ /* NULL : If fail */ /**************************************************************************/ #include #include #include struct wavehead { char sign[4]; //"RIFF"?êÖ? long int flength; //ÎÄ?þ???È char wavesign[4]; //"WAVE"?êÖ? char fmtsign[4]; //"fmt"?êÖ? long int unused; // ?ý?É×Ö?Ú???????? short formattype; //?ñÊ?Àà?ð??10HΪPCMÐÎÊ?µÄÉùÒôÊý?Ý) short channelnum; //Í?µÀÊý??µ?ÉùµÀΪ1??Ë?ÉùµÀΪ2 long int samplerate; //?ÉÑùÂÊ??Ã?ÃëÑù??Êý?????íÊ?Ã??öÍ?µÀµÄ???ÅËÙ?È long int transferrate;//??ÐÎÒôƵÊý?Ý??ËÍËÙÂÊ??ÆäֵΪÍ?µÀÊý?ÁÃ?ÃëÊý?ÝÎ?Êý?ÁÃ?Ñù //??µÄÊý?ÝÎ?Êý??8?????ÅÈí?þÀûÓÃ?ËÖµ?ÉÒÔ?À?Æ?º?åÇøµÄ?óÐ? short int adjustnum; //Êý?Ý?éµÄµ?ÕûÊý????×Ö?ÚËãµÄ????ÆäֵΪÍ?µÀÊý?ÁÃ?Ñù??µÄÊý?ÝÎ?Öµ??8?? //???ÅÈí?þÐèÒªÒ??Î??Àí?à?ö?ÃÖµ?óÐ?µÄ×Ö?ÚÊý?Ý??ÒÔ?ã??ÆäÖµÓÃÓÚ?º?åÇøµÄµ?Õû?? short int databitnum; //Ã?Ñù??µÄÊý?ÝÎ?Êý???íÊ?Ã??öÉùµÀÖÐ???öÑù??µÄÊý?ÝÎ?Êý char datasign[4]; //Êý?Ý?ê?Ç?û??data?? long int datalength; //ÓïÒôÊý?ݵÄ???È(×Ö?Ú?? }wavhead; void rm_dc(short sample[],long int dataszize); //Ïû?ýÖ?Á??ÖÁ? //================================================================ ============ //?ÁÈ?wavÎÄ?þ void waveread(char filename[],int *FS,long int *size,short **wavdata) { wavehead wavhead; FILE *fp; //char filename[]="E:\\SpeechNoise\\F07B522.wav"; //char filename[]="E:\\noise\\white.wav"; //char filename[20]; //printf("Please input the wave filename:"); //scanf("%s",filename); if((fp=fopen(filename,"rb"))==NULL) { printf("cannot read wave file\n"); exit(0); } int headnum; headnum=sizeof(wavhead); //WAVEÎÄ?þÍ?00H~28H. fread(&wavhead,headnum,1,fp); short int bitnum; long int datasize; //?Ö?ð??Òå?ÉÑùÂÊ??ÓïÒôÊý?ݵÄ???È??Ã?Ñù??µÄÊý?ÝÎ?Êý?? *FS=wavhead.samplerate; bitnum=wavhead.databitnum; datasize=wavhead.datalength; *size=datasize/sizeof(short int); //µÃµ?ËùÓÐÊý?ÝÑùµãµÄ?öÊý??Ã??öÑùµãÓÃshort int?íÊ??? printf("The total wave data length:%d\n",datasize/sizeof(short int)); //printf("The sample rate is:"); //printf("%d\n",*FS); //int tt; //float total_t=float(datasize)/((*FS)*2); short int *data=new short int[datasize/sizeof(short int)]; //WAVEÎÄ?þµÄÃ??öÑù??Öµ?üº?ÔÚÒ??öÕûÊýiÖÐ //?æÈ?µÃµ?µÄÊý?Ý; //16Î?PCM int 32768 long int offset=sizeof(wavehead); fseek(fp,offset,0); //ÒªÇóÎ?ÒÆÁ?ÊÇlongÐÍÊý?Ý if(fread(data,datasize,1,fp)!=1) { if(feof(fp)) exit(0); printf("filereaderror\n"); } // rm_dc(data,datasize); //Ïû?ýÖ?Á??ÖÁ? *wavdata=data; fclose(fp); } void WavHeadRead(char filename[],int *FS,long int *size) { wavehead wavhead; FILE *fp; //char filename[]="E:\\SpeechNoise\\F07B522.wav"; //char filename[]="E:\\noise\\white.wav"; //char filename[20]; //printf("Please input the wave filename:"); //scanf("%s",filename); if((fp=fopen(filename,"rb"))==NULL) { printf("cannot read wavehead file\n"); exit(0); } int headnum; headnum=sizeof(wavhead); //WAVEÎÄ?þÍ?00H~28H. fread(&wavhead,headnum,1,fp); short int bitnum; long int datasize; //?Ö?ð??Òå?ÉÑùÂÊ??ÓïÒôÊý?ݵÄ???È??Ã?Ñù??µÄÊý?ÝÎ?Êý?? *FS=wavhead.samplerate; bitnum=wavhead.databitnum; datasize=wavhead.datalength; *size=datasize/sizeof(short int); //µÃµ?ËùÓÐÊý?ÝÑùµãµÄ?öÊý??Ã??öÑùµãÓÃshort int?íÊ??? printf("The total wave data length:%d\n",datasize/sizeof(short int)); //printf("The sample rate is:"); //printf("%d\n",*FS); //int tt; //float total_t=float(datasize)/((*FS)*2); fclose(fp); } //?ÔÓÚ8Î?PCMÇé?öÈçÏÂ?º //8Î?PCM unsigned int 225 0 //?éÒ???dat.Data = (dat.Data-128)/128; [-1,1) /* remove DC by removing the average of the whole utterance */ void rm_dc(short sample[],long int datasize) { long i,total=0; long no_samples=datasize/sizeof(short); for(i=0;i
本文档为【wav文件读取C++源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_005190
暂无简介~
格式:doc
大小:21KB
软件:Word
页数:0
分类:互联网
上传时间:2017-09-16
浏览量:29