Is Continuous Keyword Classification Really Practical on Arduino Nano 33 BLE?

Question/Issue:

Hello, new user here. This platform looks amazing. I’ve trained an audio classification model with two simple keywords “lumos” (for turn on LED) and “nox” (for turn off LED). I’m deploying to an Arduino Nano 33 BLE Sense.

These Arduinos only have 256KB of RAM. Despite being listed in the documentation and specifically including examples when deploying to “Arduino Library” target, I can’t get any useful combination of classification accuracy combined with continuous (overlapping slices) audio monitoring.

Using the “nano_ble33_sense_microphone_continuous” sketch example, I haven’t been able to set EI_CLASSIFIER_SLICES_PER_MODEL_WINDOW above a value of 1 without running into the error:

Error sample buffer overrun. Decrease the number of slices per model window (EI_CLASSIFIER_SLICES_PER_MODEL_WINDOW)

I’ve tried reducing my window size down. It seems like a window size of ~300ms will allow a EI_CLASSIFIER_SLICES_PER_MODEL_WINDOW value of 2, but then my classification accuracy plummets to 40%. Seems like I’d be better off using sequential samples at that point.

So my overall question is this, is it really practical to use a Arduino Nano 33 BLE Sense to do continuous audio classification with more than one slice? Seems like they might not have enough memory for this to really be useful.

Project ID:

361892

Context/Use case:

Continuous keyword audio classification on Arduino Nano 33 BLE Sense.

Hi @quicksketch

In short no, while an excellent platform to start on the the ble 33 to be used as a starting point or proof of concept.

There have been many advancements in processors for audio event detection since the creation of the ble 33. Arduino Pro line for example has a number of options with the NDP 120 that you can consider if you want to stay in the Arduino space. We also support an increasing range of hardware.

Best

Eoin

Hi @Eoin, thanks for the honest answer!

I figured as much and upgraded to an ESP32S3 from seeed. That has 8MB of RAM, 240Mhz and keyword spotting seems to work much, much better. It’s not an EI officially supported platform but thanks to the forums here I got it running. I’ll also need to wire up my own sensors for gyro.

The Nano BLE (and similar nRF52840 chips) all sounded perfect with their array of sensors for my project, but the RAM/CPU is just too constrained. Seems like the only practical use of these chips would be for data capture and not for actual processing.

Thank you again for your response!

1 Like