小E开发板wifi音箱四解决声音难听的问题

外话:各位手头上没有esp8266的开发板注意了,目前开发快正在进行“免费开发板活动”,本人就是在他们那里申请到的开发板,开发快提供的不单单是开发板,还有他们强大的云端服务功能,实现了微信、云平台等物联网所需要的所有功能,其功能齐全,代码简洁,对于想用wifi作为产品和互联网沟通的桥梁的我们来说,确实是一个很好的选择,另外他们还有其他的模块,比如2G通信和GPS。目前论坛活动地址:http://bbs.kaifakuai.com/forum.php?mod=viewthread&tid=981&extra=page%3D1,开发快官网地址:http://www.kaifakuai.com/》》》》》》写于2017年1月12日之前

在前面的文章中我基本实现了wifi播放wav音乐的功能,但是在此之前的博客中听到的声音都十分的难听,到这里我都十分的纳闷:为什么声音会怎么难看,有关这个项目之前的内容请看:小E开发板wifi音箱三与wifi整合,缩短内存(http://blog.csdn.net/chengdong1314/article/details/54426561)。最后我搞清楚了,确定是音乐文件的问题,我们这里使用《艾奇音频转换器全能大师》软件来生成wav文件,正确的设置如下:
小E开发板wifi音箱四解决声音难听的问题
文章图片

【小E开发板wifi音箱四解决声音难听的问题】这里最终生成了3个wav文件,测试后发现声音真的好听了很多,完全没有问题了!这里文件如下:
小E开发板wifi音箱四解决声音难听的问题
文章图片

其中的mp3是原文件,即从网上直接下载下来的文件,而紧跟着的WAV文件就是通过《艾奇音频转换器全能大师》转换出来的wav文件。这里已经把这些文件上传到资源里了,文件如下:http://download.csdn.net/detail/chengdong1314/9743398
这里上传目前测试OK的代码:http://download.csdn.net/detail/chengdong1314/9743364


接下来将适应两种情况,一种是适应不一样的采样率,比如8K和44.1K,另外将要适应有没有fact这两种wav文件,这里最终的代码主要部分如下:
recv_buf[recbytes] = 0;
recv_buf_temp=recv_buf;
os_printf("ESP8266 TCP client task > recv data %d bytes!\n", recbytes);
if(download_file_size==0){
if((strstr(recv_buf,"RIFF")==recv_buf) && (strstr((recv_buf+8),"WAVE")==(recv_buf+8)) && (strstr((recv_buf+12),"fmt ")==(recv_buf+12))){
PCMWAVEFORMAT *wav_format;
os_printf("WAV file\n");
recv_buf_temp=recv_buf+16;
wav_format =(PCMWAVEFORMAT *)(recv_buf_temp+4);
i2sSetChannel(wav_format->wf.nChannls);
if(wav_format->wf.nChannls ==1){
i2sSetRate(wav_format->wf.nSamplesPerSec,1);
}else if(wav_format->wf.nChannls ==2){
i2sSetRate(wav_format->wf.nSamplesPerSec *2,1);
}
os_printf("%dHz samply\n",wav_format->wf.nSamplesPerSec);

recv_buf_temp +=*(et_uint32 *)recv_buf_temp +4;
if((*recv_buf_temp =='f') && (*(recv_buf_temp+1) =='a') && (*(recv_buf_temp+2) =='c') && (*(recv_buf_temp+3) =='t')){
recv_buf_temp +=4;
recv_buf_temp +=(et_uint32)((*recv_buf_temp) | (*(recv_buf_temp+1)<<8) | (*(recv_buf_temp+2)<<16) | (*(recv_buf_temp+3)<<24))+4;
os_printf("have fatm\n");
}
if((*recv_buf_temp =='d') && (*(recv_buf_temp+1) =='a') && (*(recv_buf_temp+2) =='t') && (*(recv_buf_temp+3) =='a')){
recv_buf_temp +=4;
download_file_size= (et_uint32)((*recv_buf_temp) | (*(recv_buf_temp+1)<<8) | (*(recv_buf_temp+2)<<16) | (*(recv_buf_temp+3)<<24))-8;
recv_buf_temp +=4;
//os_printf("recv_buf_temp1:%x\n",recv_buf_temp);
if((et_uint32)recv_buf_temp%4 !=0){
download_file_size -=4-(et_uint32)recv_buf_temp%4;
recv_buf_temp +=4-(et_uint32)recv_buf_temp%4;
//os_printf("recv_buf_temp2:%x\n",recv_buf_temp);
}
recbytes -=recv_buf_temp-recv_buf;
file_total_size100=0;
sector100 = AUDIO_FLASH_START_SECTOR;
os_printf("have data\n");
}
}
}

这里上传全部代码:http://download.csdn.net/detail/chengdong1314/9744121
这里上传本实验用的wav文件,其中的带有44.1khz的文件就是转换出来的44.1khz频率的文件,可以直接使用:http://download.csdn.net/detail/chengdong1314/9744489


这个项目到这里要停一下了,我有更加重要的事情去做了!

    推荐阅读