DEV Community

Cover image for bird caller recorder and offline identifier

bird caller recorder and offline identifier

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

What I Built

I built Bird Caller, a beautiful offline web application designed to get you out into nature. It listens to your microphone and identifies bird songs, wildlife, and even weather elements (like rain, streams, or wind) in real-time.

When you discover something cool, you can click the + button to save it to your Field Journal—a local logbook that tracks your encounters.

The coolest part? It uses open-weight models running entirely in your browser. Once you load the app, you don't need an internet connection to use it. This means you can hike deep into the woods, far away from any cell towers, and still identify the nature sounds around you!

It's built for hikers, birdwatchers, and anyone curious about the wildlife in their local parks.

Code

🌲 Bird & Nature Caller

An offline-first Progressive Web App (PWA) built for the Hacktoberfest Open-Source AI Challenge (Week 1: Touch Grass).

Bird Caller listens to your microphone and identifies bird songs, wildlife, and weather elements (like rain, streams, or wind) in real-time. Because it runs an open-weight model entirely in your browser using Transformers.js, it works 100% offline—perfect for taking into the deep woods where there's no cell service!

✨ Features

  • Real-Time Classification: Identifies nature sounds around you within seconds.
  • Privacy-First & Offline: Inference runs directly in your browser. No audio data is ever sent to a server.
  • Field Journal: Click the + button next to any identified sound to log it in your persistent offline Field Journal.
  • Smart Filtering: The underlying model (AST) recognizes 527 classes, but we filter the predictions specifically for birds, insects, amphibians, and weather.

🛠️ Tech Stack

  • Frontend…

How I Built It

I used React (via Vite) for the frontend and integrated Transformers.js (@xenova/transformers) to run machine learning inference locally in the browser.

The project uses the Xenova/ast-finetuned-audioset-10-10-0.4593 open-weight model, an Audio Spectrogram Transformer that can classify hundreds of sounds. I wrote a custom classification filter in the worker script to narrow down the model's 527 classes to specifically look for birds, weather, insects, and water elements, turning a generic model into a nature guide.

To keep the UI buttery smooth, the heavy lifting is done inside a Web Worker. Because Transformers.js caches the model in the browser using the Cache API, the app only needs the internet the very first time it loads. After that, it's a completely offline experience. The Field Journal uses localStorage to ensure your findings persist even if you lose signal.

Why Does Open Innovation Matter?

Open innovation is the core enabler for this project! If I had used a closed API for audio classification, this app would be utterly useless on a remote trail without cell service. Because I used an open-weight model running on a local open-source inference engine, the audio data never leaves the user's device, preserving their privacy and allowing the app to work 100% offline. It also costs $0 to run inference, meaning I don't have to worry about API bills if the app gets popular.

Open AI models empower us to build tools that augment our physical world without tying us to a server rack.

Prize Categories

Touch Grass

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.