Skip to main content
Version: ACS CC

Embedded Audio Recognition System

Real-time audio fingerprint recognition on an STM32 Nucleo microcontroller.

info

Author: Andreea-Maria Pascu
GitHub Project Link: https://github.com/UPB-PMRust-Students/acs-project-2026-andreeaa-10.git

Description

The system captures audio through a microphone triggered by a button press. The analog signal is amplified by a MAX9814 module before being digitized by the STM32's ADC. Each fixed-length audio window is processed with FFT to extract frequency-domain features, which are then compared against precomputed fingerprints stored on the device. The closest match is displayed on the TFT screen in real time.

Motivation

I chose this project because it combines signal processing and embedded programming in a way that felt more challenging than a typical sensor project. Through university coursework I have worked with algorithms and low-level programming, and this project is a natural next step (applying those concepts under real hardware constraints). I also listen to a lot of music, so building something that can actually recognize songs made it a more personal goal.

Architecture

  • Audio Capture Module - reads the microphone signal through the MAX9814 amplifier (with automatic gain control), then samples the amplified analog signal via the ADC in fixed-length windows triggered by a button press.
  • FFT Module - applies a fast Fourier transform (FFT) on each sampled window to extract frequency-domain features.
  • Matching Module - compares extracted frequency-domain features against precomputed fingerprints of reference songs stored in flash or on the SD card.
  • Display Module - shows the identified song (or a no-match result) on the ST7735 TFT over SPI.
  • Logging Module (optional) - writes captured feature vectors to the SD card for offline analysis.

Log

Week 6 - 12 April

Defined project scope: audio fingerprinting on STM32 Nucleo-U545RE-Q using Rust and Embassy. Identified main components and risks.

Week 20 - 26 April

Performed initial research on required libraries and reviewed Embassy STM32 ADC examples.

Week 27 - 3 May

Completed initial documentation. Hardware components ordered and received.

Week 4 - 10 May

Connected all hardware components on the breadboard. Verified that each component powers up correctly and tested basic communication (SPI bus with the display and SD card module, ADC input from the microphone amplifier).

Week 11 - 17 May

Implemented basic ADC sampling and verified signal integrity using the MAX9814 module.

Week 18 - 24 May

Hardware

  • STM32 Nucleo-U545RE-Q - main microcontroller running firmware in Rust with the Embassy async framework.
  • MAX9814 Microphone Amplifier Module - amplifies the microphone signal and provides automatic gain control (AGC) before feeding it into the MCU ADC.
  • ST7735 TFT Display (1.8") - shows recognition result over SPI.
  • SD Card Module - optional storage for feature data, connected over SPI.
  • Push Button - triggers recording session.
  • Breadboard - solderless prototyping platform.
  • Jumper Wires (M-M, F-M, F-F) - electrical interconnections between components.
  • Resistors - used for biasing, current limiting, and voltage division.
  • Ceramic Capacitors - used for decoupling, filtering, and signal stabilization.

Hardware

Schematics

Schematic

Bill of Materials

DeviceUsagePrice
STM32 Nucleo-U545RE-QMain microcontrollerProvided by university
MAX9814 amplifier moduleMicrophone amplifier~24 RON
ST7735 TFT Display (1.8")Result display~41 RON
MicroSD Card moduleFeature logging~5 RON
Push buttonRecording trigger~2 RON
BreadboardPrototyping~10 RON
Jumper wires M-MComponent interconnections~7 RON
Jumper wires M-FComponent interconnections~7 RON
Jumper wires F-FComponent interconnections~7 RON
Ceramic Capacitor KitDecoupling, filtering, and signal stabilization~13 RON
Resistor KitBiasing, current limiting, and voltage division~15 RON

Estimated total: ~131 RON

Software

LibraryDescriptionUsage
daspDigital audio signal processing frameworkAudio processing abstraction for sampling, buffering and feature extraction pipeline
embedded-graphics2D graphics library for embedded displaysRendering structured UI elements and text on the ST7735 TFT display
mipidsiST7735 SPI display driverLow-level control of the TFT LCD (ST7735S) over SPI
microfftFFT implementation for no_std environmentsFrequency-domain feature extraction from audio windows
  1. Shazam algorithm overview