上回书说到,我们将录音保存成wav文件,上传到SPIFFS,再用HTTPClient,用RAW方式上传文件数据到百度语音是被API进行识别。然而,问题发生了,这个识别率很低。上一章中我列举出了我猜想的几个原因,在测试过其他原因无果之后,就只剩下一个——SPIFFS的读写速度问题。这次我们弃用SPIFFS,将录音数据存入buffer中,再传到服务端。此过程中,由于使用的buffer过大,不能将buffer放在内存当中,所幸查了官方资料,有片外RAM的存在,所以顺带也学习了一下片外RAM的调用和调试。
片外RAM的调用
官方文件里的调用函数贴在下方:
根据官方的指示,可以得到如下调用代码:
byte* i2s_read_buff = (byte*) heap_caps_malloc(i2s_read_len, MALLOC_CAP_8BIT);
// 是否分配成功
if(i2s_read_buff == NULL)
Serial.println("read buffer allocate error!");
else
Serial.println("read buffer allocate success.");
byte* sound_buff = (byte*) heap_caps_malloc