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
 
Result from recording devices, recording sample from distance 10 meter with sample recording :
Result from BirdNet analyzer 
 

✨ 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

  1. Upload Firmware to ESP32 using PlatformIO

  2. Run the Python Client App

  3. Scan Devices over local network

  4. 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

Share:

Facebook
Twitter
LinkedIn
WhatsApp

More Posts

Send Us A Message

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *