Skip to content

NeuralSPOT Features

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.

Contents

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.2.0, 4.3.0, 4.4.1, R3.3.1 See Release Notes
Tensorflow Lite for Microcontrollers 2.3.1, c046d6e, fecdd5d, d5f819d (latest)
Embedded RPC 1.9.1 Ambiq Fork Please use this fork.
SEGGER RTT 7.70a
CMSIS-NN 5.9.0
CMSIS-DSP 1.15.0

Hardware

Hardware Support Type Notes
Apollo4P_evb Ambiq Apollo4 Plus EVB
Apollo4B_evb Ambiq Apollo4 Rev B EVB See Release Notes
Apollo4P_blue_kbr_evb Ambiq Apollo4P Blue KBR EVB
Apollo4P_blue_kxr_evb Ambiq Apollo4P Blue KXR EVB
Apollo4 Lite Ambiq Apollo4 Lite EVB
Apollo4 Blue Lite Ambiq Apollo4 Lite EVB
Apollo3P Blue Ambiq Apollo3P Blue EVB
MPU6050 Invensense 6D accelerometer i2c support
MAX86150 Invensense ECG single-lead sensor i2c support

Compatibility

Feature Apollo4B Apollo4 Plus Apollo4 Blue Plus (KBR/KXR) Apollo4 Lite Apollo4 Blue Lite Apollo3P Blue
USB No Yes Yes n/a n/a n/a
BLE n/a n/a AmbiqSuite 4.3.0+ n/a Yes Yes
i2c Devices Yes Yes Yes Yes Yes Soon
Analog Audio Yes Yes Yes n/a n/a n/a
Digital Audio No AmbiqSuite 4.3.0+ AmbiqSuite 4.3.0+ AmbiqSuite 4.4.1+ AmbiqSuite 4.4.1+ Yes
TF Micro Profiler TF 0c46d6e+ TF 0c46d6e+ TF 0c46d6e+ TF 0c46d6e+ TF 0c46d6e+ Yes
AutoDeploy Profiling No Yes Yes No No No
AutoDeploy Power Measurement Yes Yes Yes No No No
AutoDeploy Library Export Yes Yes Yes Yes* Yes* Yes*

* Autodeploy automation relies on USB, so only platforms with USB1 can use automation. Libraries exported by the automation are platform-agnostic.

Examples

Examples are built entirely on NeuralSPOT's libraries and components, and are meant to showcase NeuralSPOT's features.

Examples

Example Description
basic_tf_stub NeuralSPOT's primary example, this audio-based AI model implements KWS to showcase 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.
har This example implements a simple Human Activity Recognition model. It collects data from an MPU6050 accelerometer and gyroscopic sensor, and classifies the data into one of 5 activities (sitting, standing, walking, jogging, go up stairs). This example is based on the Human Activity Recognition Model Zoo repository.
tflm_validator TF Lite for Microcontrollers Validation target. This isn't, strictly speaking, an example. Rather, it is a harness used by neuralSPOT automatic TFLite deployment, validation, and performance profiling tool.
web_ble Web BLE (bluetooth low energy) example application. This example turns the EVB into a bluetooth peripheral (in BLE terms, a 'server') communicating with a WebBLE dashboard running on the laptop browser.

Libraries

Library Location Description AP3 AP4 Usage Guide
ns_audio ns-audio AUDADC (low power analog audio input) and PDM configuration and audio sampling. Y Y Here
ns_audio_mfcc ns-audio Mel Spectrogram Feature Extraction Y Y Here
ns_malloc ns-utils malloc/free implementation Y Y Here
ns_timer ns-utils Reading clocks and setting periodic interrupts Y Y Here
ns_power_profile ns-utils Prints power-relevant register configuration for expert analysis N Y Here
ns_energy_monitor ns-utils Utility for marking regions of interest for external power monitors Y Y Here
ns_cache_profile ns-utils Tools to capture and analyze cache utilization statistics Y Y Here
ns_perf_profile ns-utils Tools to capture and analyze CPU perf utilization registers Y Y Here
ns_peripherals_power ns-peripherals Optimized, customizable Apollo4 power configuration for common AI applications. Y Y Here
ns_peripherals_button ns-peripherals Utility for reading EVB buttons via ISRs Y Y Here
ns_i2c_register_driver ns-i2c Generic Apollo4 i2c driver Y Y Here
ns_mpu6050_i2c_driver ns-i2c Minimal MPU6050 driver Y Y Here
ns_max86150_i2c_driver ns-i2c MAX86150 driver Y Y 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. N Y Here
ns_ambiqsuite_harness ns-harness Wrappers for common AmbiqSuite operations such as printing, deep-sleep compatible printing, adding delays, etc. Y Y Here
ns_micro_profiler ns-harness Tools for per-layer performance profiling N Y Here
ns_debug_log ns-harness Implementation of printf for Tensorflow debug prints Y Y Here
ns_usb ns-usb TinyUSB CDC (TTY) driver for USB port 1. N Y Here
ns_ble ns-ble Simple BLE library for creating BLE peripheral servers. Y Y Here
ns_ipc_ring_buffer ns-ipc Ring buffer IPC mechanism for getting peripheral data into AI applications Y Y Here

Tools

Tool Description Location
ns_autodeploy.py All-in-one tool for automatically deploying, validating, profiling, and packaging a TFLite-based model Tools
ns_mac_estimator.py Analyzes a TFLite file, estimates MACs per model layer, and exports a C header file for use with ns_micro_profiler Tools
generic_data.py Example PC-side script for interacting with EVB via remote procedure calls. Tools