DEV Community

Nairitya Jai Singh
Nairitya Jai Singh

Posted on

Birdsong Field Kit: Listen Closer, Look Up

What I Built

Birdsong Field Kit is a small, phone-friendly birding companion. Tap Start listening and it records six seconds of ambient sound, then runs an open audio model in the browser to suggest a broad sound category. You can also choose an existing recording. Observations stay in local browser storage, and the interface encourages you to look up and listen for yourself instead of staring at a results screen.

This is for casual birders, curious walkers, and anyone who hears a call they cannot place.

Demo

Run locally with node server.mjs, then open http://127.0.0.1:5173/. Microphone access requires localhost or HTTPS. The app shell and model need an online first visit; please verify model caching and offline behavior on your own phone before relying on it in the field.

Code

GitHub logo nairitya-singh / Birdsong-Field-Kit-Hacktobestfest-2026

Birdsong Field Kit is a small, phone-friendly birding companion. Tap **Start listening** and it records six seconds of ambient sound, then runs an open audio model in the browser to suggest a broad sound category.

Birdsong — Field Kit

A phone-friendly birding companion built around Google's open YAMNet audio event classifier. Record a short sound, run inference in the browser, and get a broad bird-call suggestion. Audio stays on-device; observation notes use localStorage.

Run it

Serve this folder from localhost or HTTPS (microphone access requires a secure context), for example node server.mjs. Open the app online once so TensorFlow.js and the model assets can be cached. Tap Start listening for a six-second recording or choose an audio file. Verify offline operation on the target browser before heading out.

Model and limits

YAMNet is a general AudioSet sound-event model, not a species classifier. Results are broad labels such as bird vocalization or chirping and can be wrong in wind or overlapping sound. First setup needs internet; cached assets enable repeat offline use.

Stack

Vanilla JS/CSS/HTML, TensorFlow.js, open YAMNet, service-worker app shell, local observation history. The…

The project files are in this repository. The main experience is index.html, field-kit.css, and app.js; service-worker.js caches the app shell. The pre-existing arcade game remains in game.js.

How I Built It

The app uses TensorFlow.js to run Google's open YAMNet audio event classifier in the browser. It resamples audio to 16 kHz, scores short chunks, then looks for bird-related AudioSet labels. The microphone recording is analyzed in memory and is not sent to a server. A service worker caches the app shell, and the browser's model asset cache supports later offline use after first loading the model.

YAMNet is a general sound-event model, not a species identifier. Its output is intentionally presented as a clue such as “bird call” or “chirping bird,” not a definitive species. Wind, overlapping sounds, device microphones, and model label coverage can all affect the result.

Why Does Open Innovation Matter?

An open model that runs in the browser makes the core experience possible without sending location or audio to a birding service. Once the app and model have been cached, the inference path can work without a live API connection, which matters on trails with poor reception. The browser-based approach also keeps the project small and lets another developer inspect or replace the model and adjust the label mapping.

The trade-off is that first-time setup still needs a connection to download TensorFlow.js and the model. I could not verify a full offline recording session on a phone in this build environment, so that remains a field check rather than a claim of tested performance.

Prize Categories

No partner prize category entered. This submission is for the overall challenge.

Top comments (0)