The Unique Part: In-Browser ML The core feature is an "AI Skip Talk." Instead of processing audio on a server, it uses the Web Audio API to capture the stream locally and runs a lightweight classification model directly in your browser. It estimates the "music vs. speech" probability in near real-time.
If you have the filter enabled, it will automatically trigger a "next" command to hop to another station in your playlist or a random location on the globe the moment a DJ, news segment, or ad starts.
Privacy: No audio data ever leaves your machine; inference is entirely local.
The Tech Stack/Features: - WebGL + Point Clustering: To render 70,000 stations across 11,000 locations smoothly. - In-browser Inference: Uses a small model plus stream-level heuristics to handle edge cases. - Media Key Integration: Full support for physical keyboard and system-level Next/Prev buttons. - Persistence: Sign-in is available to sync playlists and favorites across devices, but the core explorer works without an account. - Online activity: You can see in real time other people on the site, where they are on the globe, what they listened to, and what stations they liked. - Simple games to kill the time as you are listening to stations, like Solitaire, Minesweeper, etc.
The Trade-offs & Challenges: Running a WebGL globe and real-time audio analysis simultaneously is heavy on the CPU. To handle this, I’ve implemented: - Automatic performance detection that downgrades visuals on lower-end machines. - A manual toggle to kill the audio processing if you just want to use the globe as a standard player. - A talk sensitivity slider for the ML model, so you can tweak it yourself.
What I’d love feedback on: - Performance: How does your CPU/fan react? Is it manageable? I’m looking for ways to further optimize the client-side ML or perhaps it is okay to bring even heavier models with more accuracy. - Classification Accuracy: How useful is it? Does it detect talking in most of the cases, or is it sometimes useless? On MacBook it works ok-ish. Ads with music are difficult but when music changes to pure talk, the site does its work and hops to another one.
Let me know what you think! I am interested if this project is worth further investment, building a mobile app, etc.