AuralNest – Bioacoustic Recording System Using ESP32
AuralNest is a DIY bioacoustic project designed to capture natural soundscapes — especially bird vocalizations — using low-cost ESP32-based devices. The goal is to provide a modular, internet-free solution for field recording and species identification through onboard analysis tools.
Github Link : https://github.com/ghassanirfan/ESP32_bioacoustic_recorder
🔧 Project Overview
This system records environmental sounds using an INMP441 microphone connected to an ESP32, storing high-quality audio (44.1 kHz / 32-bit) to an SD card. Devices are controlled and accessed via a local Wi-Fi network, requiring no internet connection.
All data can be downloaded and analyzed using a custom Python-based client app, which integrates the BirdNET Analyzer to automatically identify bird species from the recorded sound files.
- Overview the firmware
The firmware is built using PlatformIO. Several libraries are utilized, including i2s for the MEMS microphone, SPI for SD card handling, and AsyncTCP for Wi-Fi communication on the ESP32. Communication is handled via HTTP over TCP, allowing for remote commands such as starting or stopping a recording, syncing time with the internal RTC, accessing SD card data, and downloading recorded files.
The firmware also includes logic for gain adjustment and recording normalization. (This is implemented because I couldn’t achieve better recording volume; I’m still unsure how to troubleshoot the low volume issue with 32-bit samples.) Github page
- Overview the PCB design
The PCB was designed using EasyEDA. The main components include the ESP32, an INMP441 module, a standalone SD card slot with a 74VHC125 buffer IC, and a buck converter (4.2–5V down to 3.3V) for stable power and current supply. Basic status LEDs are also included.
For version 2, I’m using an ESP32-S3 with an external antenna for improved Wi-Fi range. Here’s what the PCB looks like:


- Overview the Client Program
The client program is built using the Python programming language. It uses Tkinter for the graphical user interface (GUI) and ZeroConf (mDNS) for automatically detecting recording devices on the local network.
The app integrates the BirdNET Analyzer (also written in Python) to analyze the recorded audio files. It supports batch analysis for multiple files in a folder, making it efficient for processing large datasets.
As of version 1.2, the client app includes several new features:
Automatic detection of device information
OTA (Over-The-Air) firmware updates
Auto-scan and scheduled recording triggers
See Github
Here’s what the client program looks like:
- Overview the results
✨ Features
🎛️ Start/Stop Recording from your PC or laptop
📥 Download/Manage Files (list, delete, rename) on the ESP32
📊 Run BirdNET Analyzer directly from the client to identify bird species
⏱️ Time Sync between PC and ESP32 for accurate timestamps
📂 Merge CSV Results for larger datasets
🌐 Works entirely offline — great for remote areas
⚙️ How to Use
Upload Firmware to ESP32 using PlatformIO
Run the Python Client App
Scan Devices over local network
Control Recordings and Analyze Results
Instructions for dependencies (Python, ffmpeg, pip requirements) are included in the repository.
🚧 Project Status
This project is still under active development. Features may change as improvements are made. Contributions and testing are welcome!
👥 Contributors
Ghassan Irfan Nauval Al Althaf – Developer & Researcher
Special Thanks: BirdNET Analyzer team, K. Lisa Yang Center for Conservation Bioacoustics
Supported by: Department of Biology, Sebelas Maret Univers


