Picovoice Shepherd - STM32H747
The STM32H747 discovery kit is a development board featuring a dual-core processor with Arm Cortex-M7 and Cortex-M4. It processor has 2MB of on-chip flash memory and 1MB of RAM. The Cortex-M7 core operates at up to 480 MHz. Picovoice uses Cortex-M7 core for voice recognition.

Picovoice Shepherd is the first no-code platform for building voice interfaces on microcontrollers. It enables creating voice experiences similar to Alexa that run entirely on microcontrollers. Picovoice Shepherd accelerates prototyping, mitigates technical risks, and shortens time to market. Paired with Picovoice Console users can deploy custom voice models into microcontrollers instantly.
Requirements
- Python 3
Compatibility
- Linux (x86_64)
- macOS (x86_64)
- Windows (x86_64)
Installation
Install the Picovoice Shepherd:
pip3 install pvshepherd
Note for macOS
Install Python using either the official installer or Homebrew. Shepherd cannot run using the Python shipped with macOS. If using the Homebrew Python, make sure that /usr/local/bin
is in the PATH
variable before installing Shepherd.
Note for Windows
The default Python installation options do not add it to the Windows PATH
variable. To fix the issue, refer to this link.
Usage
Run the following command from the terminal:
pvshepherd
Upload the Picovoice Firmware
First, connect the board to the computer using a MICRO-USB Type-B cable. STM32H747 discovery has three USB ports on it; Make sure that the USB port on the top left side of the board is used as shown in the figure below:

Select STM32H747I-DISCO
.

Press the Upload Firmware
button and wait for the operation to complete. One complete, the LCD on the board updates.

Upload The Default Models
The unique universal identifier (UUID) of Microcontroller on the board is at the top. You need this UUID to create custom models using Picovoice Console. It is also displayed on the board's LCD. For now, let's continue with the default models. Upload the default voice models to the board by pressing Use Default Models
.

Test the Default Models
The board is ready. It has started processing the audio input from the microphone in real-time. It writes to the Shepherd console and on-board LCD when the Picovoice engine detects utterances of the given wake word and follow-on voice commands. Say:
Picovoice, make the living room color purple
Picovoice will detect the occurrence of the custom wake word (Picovoice), and then extracts the intent from the follow-on spoken command:
{is_understood : True,intent : changeColor,slots {location : living room,color : purple,}}

The Show Context
button opens a new window and lists all the available voice commands.

The volume and CPU usage are on the top left. The inference sensitivity of the engines can be changed on the fly. The sensitivity parameter controls the tradeoff between the miss rate and false alarm. A higher sensitivity reduces the miss rate (false reject rate) at the cost of increased false alarm rate.
Audio Debugging
You can record and save the audio fed to the Picovoice from Shepherd. Go to the Audio debugging
tab and click on the Record Audio
button.

Create Custom Models
- Go back to the
Upload Model
page and copy the UUID to the clipboard using theCopy
button. - Go to Picovoice Console to create models for Porcupine wake word engine and Rhino Speech-to-Intent engine.
- Select
Arm Cortex-M
as the platform when training the model. - Select
STM32
as the board type and provide the UUID of the chipset on the board.

Upload the Custom Models
- Download your custom voice model(s) from Picovoice Console.
- Decompress the zip file. The model file is either
.ppn
for Porcupine wake word or.rhn
for Rhino Speech-to-Intent. - Go to the
Upload Model
page and select the models. - Press the
Upload
button.
