12 November 2022
NeuralSPOT Features
Tags
This is a detailed list of the features spread out over neuralSPOT. If you'd like to see a new feature, please file an issue on the repo.
Supported Hardware and Software
Generally, neuralSPOT will maintain support for the last 2 versions of AmbiqSuite, and will stay within 3 months of TFLM's latest releases.
Software
External Component | Versions | Notes |
---|---|---|
AmbiqSuite | 4.1.0, 4.3.0 | See Release Notes |
Tensorflow Lite for Microcontrollers | 2.3.1, c046d6e | |
Embedded RPC | 1.9.1 Ambiq Fork | Please use this fork. |
SEGGER RTT | 7.70a |
Hardware
Hardware Support | Type | Notes |
---|---|---|
Apollo4P_evb | Ambiq EVB | |
Apollo4B_evb | Ambiq EVB | See Release Notes |
Apollo4P_blue_kbr_evb | Ambiq EVB | Coming soon |
Apollo4P_blue_kxr_evb | Ambiq EVB | Coming soon |
MPU6050 | Invensense 6D accelerometer | i2c support |
MAX86150 | Invensense ECG single-lead sensor | i2c support |
Examples and Projects
neuralSPOT includes examples and projects. Examples are built entirely on neuralSPOT's libraries and components, and are meant to showcase neuralSPOT's features. Projects, on the other hand, are meant as demonstrations of how to integrate externally generated AI components (from EdgeImpulse, for exa
Examples
Example | Description |
---|---|
basic_tf_stub | neuralSPOT’s primary example, this audio-based AI model showcases Tensorflow integration, audio sampling and feature extraction, RPC, IPC, and more. It is used as the ‘egg’ for neuralSPOT nests. |
mpu_data_collection | Shows how to configure and read sensor values from the MPU6050, and how to use RPC to send those values to a PC. This is useful for creating accelerometer/gyroscope datasets, for example. |
rpc_client | Shows how to use ns-rpc when the EVB is a client and the PC is the server to collect audio data from the AUDADC and dump it into a WAV file (useful for generating audio datasets). In this configuration, the EVB calls remote procedures and the PC executes those procedures . This example is designed to work with generic_data.py (part of ns-rpc), a python script running on the PC that can be run as server or client. |
rpc_server | Shows how to use ns-rpc when the EVB is the server and the PC is the client. In this configuration, the PC calls remote procedures and the EVB executes those procedures . This example is designed to work with generic_data.py (part of ns-rpc), a python script running on the PC that can be run as server or client. |
Projects
Project | Description |
---|---|
ei_basic_example | Shows how to integrate an EdgeImpulse model exported as generic C++ to neuralSPOT |
ei_anomaly_detection | Shows a practical fan speed anomaly detector built in EdgeImpulse and using MPU6050 data collected using our MPU data collector. |
ei_yes_no | Shows a continuous inference audio model detecting whether ‘yes’ or ‘no’ was spoken, built in EdgeImpulse and using neuralSPOT’s libraries including low powerAUDADC audio sampling. |
hello_ambiq (WIP) | Shows a continuous inference audio model detecting whether ‘hello Ambiq’ was spoken, built in EdgeImpulse using transfer learning and using neuralSPOT’s libraries including AUDADC audio sampling. |
Libraries
Library | Location | Description | Usage Guide |
---|---|---|---|
ns_audio | ns-audio | AUDADC (low power analog audio input) configuration and audio sampling. | Here |
ns_audio_mfcc | ns-audio | Mel Spectrogram Feature Extraction | Here |
ns_malloc | ns-utils | malloc/free implementation | Here |
ns_timer | ns-utils | Reading Apollo4 clocks and setting periodic interrupts | Here |
ns_power_profile | ns-utils | Prints power-relevant register configuration for expert analysis | Here |
ns_energy_monitor | ns-utils | Utility for marking regions of interest for external power monitors | Here |
ns_cache_profile | ns-utils | Prints cache utilization statistics | Here |
ns_peripherals_power | ns-peripherals | Optimized, customizable Apollo4 power configuration for common AI applications. | Here |
ns_peripherals_button | ns-peripherals | Utility for reading EVB buttons via ISRs | Here |
ns_peripherals_led | ns-peripherals | Utility for controlling EVB LEDs | Here |
ns_i2c_register_driver | ns-i2c | Generic Apollo4 i2c driver | Here |
ns_mpu6050_i2c_driver | ns-i2c | Minimal MPU6050 driver | Here |
ns_max86150_i2c_driver | ns-i2c | MAX86150 driver | Here |
ns_rpc_generic_data | ns-rpc | A generic data RPC implementation offering both client and server modes for sending blocks of data, computing on a block a data and getting a result, and printing remote message. | Here |
ns_ambiqsuite_harness | ns-harness | Wrappers for common AmbiqSuite operations such as printing, deep-sleep compatible printing, adding delays, etc. | Here |
ns_debug_log | ns-harness | Implementation of printf for Tensorflow debug prints | Here |
ns_usb | ns-usb | TinyUSB CDC (TTY) driver for USB port 1. | Here |
ns_ipc_ring_buffer | ns-ipc | Ring buffer IPC mechanism for getting peripheral data into AI applications | Here |