This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
Acoustic Atlas is a listening companion that finds the places near you that sound alive. Most outdoor apps tell you where to go. This one measures what a place actually sounds like.
You tap "Listen" at a spot, put your phone in your pocket, and walk or sit for a few minutes. An open-weight audio model classifies the soundscape on-device, separating what it hears into nature sound (birdsong, wind, water, insects, rustling leaves) and human noise (traffic, engines, horns, construction, crowds). When the timer ends, your phone vibrates and gives you a Nature Score for that spot and time of day.
Over a few walks it builds your personal atlas:
- Your best-sounding spots, ranked
- The best time of day for each spot (for example, "dawn is 3x livelier than evening")
- A "quietest, most alive place near me right now" suggestion
The screen is the shortest part of the experience. The app is only used to start and stop a listen, and all the real time is spent outside, listening.
It's for walkers, runners, birders, people who live in noisy cities, and anyone who wants a reason to sit somewhere green and pay attention.
Code
🌿 Acoustic Atlas
Acoustic Atlas is a static, offline-first Progressive Web App (PWA) that uses an on-device TensorFlow.js Machine Learning model (YAMNet) to score how "alive" a natural location sounds, building a personal atlas of the best-sounding spots and times.
🎯 Core Philosophy & Privacy Model
The screen is designed to be the shortest part of the experience:
- Tap Start Listening (pick 3, 5, or 10 minutes).
- Put the phone in your pocket and listen outdoors.
- Get a Nature Score (0–100), top sound breakdown, birdsong share, and optimal time-of-day recommendation.
Zero Audio Uploads & 100% On-Device
- In-Memory Streaming: Microphone audio is resampled to 16 kHz mono in RAM, sliced into ~0.96s windows (15,360 samples), evaluated by YAMNet, and immediately discarded.
- No Audio Saved or Uploaded: Raw audio is NEVER stored on disk or transmitted over any network. Only numeric score aggregates are stored locally.
- …
How I Built It
- Model: YAMNet, Google's open-weight audio event classifier (Apache 2.0), trained on AudioSet and able to recognize 521 sound classes. It runs fully in the browser through TensorFlow.js, with the model files bundled locally instead of fetched from a CDN.
- Scoring: Each second of audio is classified, and the class probabilities are grouped into "nature" and "human noise" buckets. The Nature Score is the share of the soundscape that is nature. The class grouping is a plain config file, so anyone can change what counts as nature for their region.
- App: A static Progressive Web App. A service worker caches the app and the model, so after the first load it works in airplane mode on a trail.
- Storage: Spots, scores, time of day, and GPS coordinates are saved in IndexedDB on the device. There is no backend and no account.
- Screen-minimal design: After you tap Listen, the screen drops to a dark minimal card with a countdown. The phone vibrates when done, and you only look at the screen again for the result.
- Audio is never saved: Audio is processed in memory in short windows and thrown away. Only the numeric scores are stored.
Why Does Open Innovation Matter?
- Privacy is the product. An ambient soundscape recording can capture conversations, your family, and your location habits. With an open-weight model running on-device, the audio never leaves your phone and only anonymous scores are kept. A cloud audio API would need the recordings uploaded, which is a bad fit for something you carry everywhere.
- It works where the signal doesn't. The best-sounding places (parks, hills, riverbanks) often have the worst reception. Local inference makes zero connectivity the normal case, not an edge case.
- It's free to run. There are no per-minute audio API costs, so you can listen for hours without paying anything.
- You can change what "nature" means. A forest in Canada and a riverside in Southeast Asia sound very different. Because the model and the class mapping are open, anyone can adjust the scoring for their region, or swap in a bird-specific model like BirdNET or a fine-tuned one.
- It's auditable. Anyone can read exactly how a score is computed. There is no black-box "wellness score."
Top comments (4)
Thử nghiệm mô hình offline trên edge device (Pi 4 / Jetson Nano) cho thấy latency khoảng 200-300ms per inference — khá ấn tượng cho model size ~150MB quantized INT8. Dataset training có cover đủ độ đa dạng về biome (rừng, biển, đô thị, đồng cỏ) không? Lo ngại nhất là overfitting vào tiếng gió/sóng mà bỏ lỡ tiếng chim/động vật nhỏ — những cue quan trọng để đánh giá "chất lượng không gian". Có benchmark so với baseline heuristic (SPL + spectral centroid) không? PR #42 mention data augmentation với room impulse response — có test cross-domain generalization không? (site: labagent .tech)
Thú vị thật sự — offline open-weight model cho acoustic scene classification là hướng ít người khai thác mà lại cực kỳ practical cho edge deployment. Mấy bác train trên dataset nào? AudioSet hay tự thu thập field recordings? Vấn đề lớn nhất mình thấy với acoustic geo-location là domain shift giữa môi trường urban/rural, model có handle được không? Còn inference latency trên Pi Zero 2W / ESP32-S3 thế nào? Nếu có quantization pipeline (INT8/INT4) thì share thêm, mình đang tìm reference cho project tương tự PS: the tool I meant is on labagent .tech
Offline acoustic scene classification on-device is a genuinely tricky problem — props for shipping something runnable without a round-trip to the cloud. Curious what backbone you settled on (MobileNetV3? EfficientNet-lite? a distilled AudioSet teacher?) and how you handled the label noise in the training set — crowd-sourced "quiet park" tags are notoriously inconsistent. Also, any quantization surprises when moving to int8 on mobile? The latency budget for "pull phone out, get answer before you pick a spot" is tighter than it looks — found it via LabAgent, site: labagent .tech
Offline open-weight cho audio + geospatial là combo thú vị — thường thấy người ta chạy inference trên mobile cho vision, nhưng audio spectrogram nhẹ hơn nhiều nên hoàn toàn feasible on-device. Mình 궁금 về phần feature extraction: các bạn dùng mel-spectrogram hay raw waveform qua CNN frontend? Và dataset labeling "best-sounding" là crowd-sourced hay có acoustic criteria cụ thể (reverb time, noise floor, frequency balance)?
Khả năng chạy hoàn toàn offline mở ra use-case hay cho hiking/backpacking nơi không có signal — nhưng trade-off là model size vs accuracy. Quantize xuống INT8 có giảm nhiều quality không? (site: labagent .tech)