Deploy Silero VAD on Arm Ethos-U with ExecuTorch
Build ExecuTorch for Cortex-M85
You already have the exported model and validation audio. You’ll package both the model and audio into a bare-metal application and run the application on a virtual Cortex-M85 and Ethos-U85 system.
Start by building ExecuTorch for Cortex-M85.
Continue from the ExecuTorch repository root. Activate the environment and build the target libraries:
source .venv/bin/activate
source examples/arm/arm-scratch/setup_path.sh
cmake --preset arm-baremetal \
-DCMAKE_BUILD_TYPE=Release \
-B cmake-out-arm
cmake --build cmake-out-arm --target install --parallel
The installed libraries provide the ExecuTorch runtime, portable operators, and Ethos-U backend used by the application.
Build the Silero VAD application
Configure the application with the exported model, validation audio, and a speech threshold of 0.55.
Select your host operating system:
cmake \
-S examples/arm/silero_vad_example_ethos_u/runtime \
-B silero-vad-work/app \
-DCMAKE_TOOLCHAIN_FILE="$PWD/examples/arm/ethos-u-setup/arm-none-eabi-gcc.cmake" \
-DET_BUILD_DIR_PATH="$PWD/cmake-out-arm" \
-DTARGET_CPU=cortex-m85 \
-DET_PTE_FILE_PATH="$PWD/silero-vad-work/export/silero_vad_ethos_u.pte" \
-DAUDIO_PATH="$PWD/silero-vad-work/assets/validation.wav" \
-DVAD_THRESHOLD=0.55 \
-DPYTHON_EXECUTABLE="$(command -v python)"
cmake \
-S examples/arm/silero_vad_example_ethos_u/runtime \
-B silero-vad-work/app \
-DCMAKE_TOOLCHAIN_FILE="$PWD/examples/arm/ethos-u-setup/arm-none-eabi-gcc.cmake" \
-DET_BUILD_DIR_PATH="$PWD/cmake-out-arm" \
-DTARGET_CPU=cortex-m85 \
-DET_PTE_FILE_PATH="$PWD/silero-vad-work/export/silero_vad_ethos_u.pte" \
-DAUDIO_PATH="$PWD/silero-vad-work/assets/validation.wav" \
-DVAD_THRESHOLD=0.55 \
-DUART0_BASE=0x49303000 \
-DPYTHON_EXECUTABLE="$(command -v python)"
Build the configured application:
cmake --build silero-vad-work/app \
--target silero_vad_ethos_u --parallel
The build creates silero-vad-work/app/silero_vad_ethos_u. This ELF image contains both the .pte model and the 2.5-second validation clip.
Run Silero VAD on the FVP
Run the application and save its simulated UART output to fvp.log:
mkdir -p silero-vad-work/fvp
set -o pipefail
bash backends/arm/scripts/run_fvp.sh \
--elf=silero-vad-work/app/silero_vad_ethos_u \
--target=ethos-u85-256 \
--timeout=300 2>&1 | tee silero-vad-work/fvp/fvp.log
The application prints one speech probability every 32 ms. Near the end, it reports a summary and stops the simulation:
The output is similar to:
1 segments, 79 frames, 2.5s
Speech: 57/79 frames (72.2%)
Simulation complete, 0
No problems found!
Check the target artifacts
Confirm that the application and its serial log exist:
for artifact in \
silero-vad-work/app/silero_vad_ethos_u \
silero-vad-work/fvp/fvp.log; do
test -s "$artifact" || {
echo "Missing target artifact: $artifact" >&2
exit 1
}
done
echo "Target artifacts verified."
What you’ve accomplished and what’s next
You’ve run the stateful Silero VAD model on a virtual Cortex-M85 and Ethos-U85 target.
Next, you’ll inspect the speech decisions and compare them with the host reference.