Arduino Nicla Voice

The Arduino Nicla Voice is a development board with a high-performance microphone and IMU, a Cortex-M4 Nordic nRF52832 MCU and the Syntiant® NDP120 Neural Decision Processor™ (NDP). The NDP120 supports multiple Neural Network architectures and is ideal for always-on low-power speech recognition applications. You'll be able to sample raw data, build models, and deploy trained embedded machine learning models directly from the Edge Impulse studio to create the next generation of low-power, high-performance audio interfaces.

The Edge Impulse firmware for this development board is open source and hosted on GitHub.

Arduino Nicla Voice

Installing dependencies

To set this device up in Edge Impulse, you will need to install the following software:

Connecting to Edge Impulse

1. Download the firmware

Download the Nicla Voice firmware for audio or IMU below and connect the USB cable to your computer:

The archive contains different scripts to flash the firmware on your OS, ie for macOS:

  • install_lib_mac.command: script will install the Arduino Core for the Nicla board and the pyserial package required to update the NDP120 chip. You only need to run this script once.

  • flash_mac.command: to flash both the MCU and NDP120 chip. You should use this script on a brand new board

The additional scripts below can be used for specific actions:

  • flash_mac_mcu.command: to flash only the Nordic MCU, ie if you recompiled the firmware and doesn't need to update the NDP120 model.

  • flash_mac_model.command: to flash only the NDP120 model.

  • format_mac_ext_flash.command: to format the external flash that contains the NDP120 model

2. Setup the Arduino Nicla Voice Board to collect data

After flashing the MCU and NDP chips, connect the Nicla Voice directly to your computer's USB port. Linux, Mac OS, and Windows platforms are supported. From a command prompt or terminal, run:


This will start a wizard which will ask you to log in and choose an Edge Impulse project. If you want to switch projects run the command with --clean.

Alternatively, recent versions of Google Chrome and Microsoft Edge can collect data directly from your development board, without the need for the Edge Impulse CLI. See this blog post for more information.

That's all! Your device is now connected to Edge Impulse. To verify this, go to your Edge Impulse project, and click Devices. The device will be listed here.

Device connected to Edge Impulse

Next steps: building a machine learning model

Use syntiant compatible pre-processing blocks

The Arduino Nicla Voice is based on the Syntiant NDP120 Neural Decision Processor™ and needs to use dedicated Syntiant DSP blocks.

With everything set up you can now build your first machine learning model and evaluate it using the Arduino Nicla Voice Board with this tutorial:


  • How to use Arduino-CLI with macOS M1 chip? You will need to install Rosetta2 to run the Arduino-CLI. See details on Apple website.

  • How to label my classes? The NDP chip expects one and only negative class and it should be the last in the list. For instance, if your original dataset looks like: yes, no, unknown, noise and you only want to detect the keyword 'yes' and 'no', merge the 'unknown' and 'noise' labels in a single class such as z_openset (we prefix it with 'z' in order to get this class last in the list).

  • If you get quarantine warnings on MacOS when flashing the device try this command to unquarantine the files and then rerun the flashing command

sudo xattr -r -d *

Last updated