
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
- 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:--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 blocksThe Arduino Nicla Voice is based on the Syntiant NDP120 Neural Decision Processor™ and needs to use dedicated Syntiant DSP blocks.
FAQ
- 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 asz_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