This project implements a siren detection system for German emergency vehicle sirens using a Raspberry Pi Pico and TensorFlow Lite for Microcontrollers (tflite-micro). It captures audio data from a PDM microphone, processes it to generate spectrograms, and uses a pre-trained machine learning model to classify the sound as "siren" or "no siren." The results are displayed via an integrated LED.
This repository contains submodules:
To clone the repository with submodules, use:
git clone --recurse-submodules https://github.com/thomas-w12/Siren-Detection-RaspberryPico.gitTo build the project, CMake and Ninja need to be installed and in the system PATH. The pico-sdk v2.2.0 (https://github.com/raspberrypi/pico-sdk) also needs to be installed and the PICO_SDK_PATH environment variable set to its location.
How to build:
mkdir build
cd build
cmake .. -G Ninja
cmake --build .To flash the program to the Raspberry Pi Pico, hold down the BOOTSEL button
while plugging it into your computer. It should mount as a mass storage device.
Then copy the siren_detection_pico.uf2 file from the build directory to the
mounted drive.
In CMakeLists.txt, you can enable or disable the use of the optimized CMSIS-NN
kernels by setting the USE_CMSIS_NN variable to ON or OFF. OFF will use
the default tflite-micro reference kernels.