Context/Use case: I am working on a project using an ESP32 where I need to implement a two-stage voice recognition system:
- Stage 1 (Always-on): A Wakeword model (Keyword Spotting) similar to “Alexa” or “Siri”.
- Stage 2 (Action): A Command Classification model that is triggered only after the specific wakeword is detected in Stage 1.
Details: My goal is to have the ESP32 listening for the wakeword. Once detected, the system should switch context and run the second model to interpret the specific command/action the user wants to perform.
Questions:
- Deployment Structure: What is the best practice to deploy two different models on the same ESP32 using Edge Impulse?
- SDK Management: Do I need to export and include two separate C++ libraries (SDKs), one for each project? I am concerned about code size and potential conflicts. Is there a “cleaner” way to combine two impulses in a single firmware?
- Memory Management: Since the ESP32 has limited RAM, do you have any suggestions on how to manage the Tensor Arena allocation when switching between these two models to avoid memory overflow?