解决ESP32 Failed to allocate persistent buffer of size 576问题
·
esp32S3使用Edge Impulse实现唤醒词功能时,出现内存溢出错误,不断重启 ERR: Failed to allocate persistent buffer of size 576, does not fit in tensor arena and reached EI_MAX_OVERFLOW_BFER_COUNT

解决方案:
在导出的模型库找到这个文件tflite_learn_**_compiled.cpp;修改 kTensorArenaSize和EI_MAX_OVERFLOW_BUFFER_COUNT
参考配置

EI_MAX_OVERFLOW_BUFFER_COUNT 10到20左右就行
kTensorArenaSize根据自己单片机的ram配置,越大越好
改了之后就正常运行不再重启,如果后续报错
ERR: Failed to allocate scratch buffer of size 6440, reached EI_MAX_SCRATCH_BUFFER_COUNT
Failed to initialize the model (error code 1) AI 推理错误码: -6
解决方案:EI_MAX_SCRATCH_BUFFER_COUNT 值改为128,和上面同一个文件

程序正常跑之后还有一个坑,就是你的语音识别标签要对的上,下面代码可以把全部标签的识别值打印出来
Serial.println("模型内部的真实标签=");
for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
// 直接打印出模型认识的所有标签名字和对应的分数,不加任何过滤!
Serial.printf("发现标签: [%s], 当前得分: %.2f\n", result.classification[ix].label, result.classification[ix].value);
}
Serial.println("=====================================");
做完这几个细节,所有的坑就踩完了,成功实现kws离线唤醒功能!
更多推荐
所有评论(0)