Skip to content

reachjalil/speechglow-mac

Repository files navigation

SpeechGlow

A private macOS menu-bar app that gives you a quiet visual cue when speech is happening around your Mac.

On-device. No recording. No transcription. No upload. Just awareness.

platform license built with on-device

SpeechGlow lives in your menu bar like Amphetamine: one small icon, one simple menu. When speech is likely happening near you, the icon quietly changes — and, if you want, a soft cyan glow breathes at the edge of your screen. That’s it. It is a sense, not a recorder.


Why I built this

I’ve worked alongside hard-of-hearing teammates, and I have hard-of-hearing family. Over the years I’ve watched the same quiet struggle again and again: when you’re deep in a hard problem — headphones on, eyes locked to the screen — you lose the ambient thread of the room. Someone walks up. Someone says your name. A colleague has been trying to get your attention. For hearing people that thread is automatic and free. For my friends and family it costs constant, draining vigilance — a background process always running just to notice that something is being said.

SpeechGlow is the small tool I wished existed for them: a calm, honest, private nudge that says “speech is happening near you” — without recording a single second, without putting words on a screen, without turning their Mac into a surveillance device. It lets you spend your focus on the work, not on watching the room.

The problem

The World Health Organization estimates that over 1.5 billion people live with some degree of hearing loss today — a number projected to keep rising. (Exact, sourced figures are added in the data section — see Roadmap.)

But awareness isn’t only an accessibility issue. Anyone wearing noise-cancelling headphones, anyone with auditory-processing differences, anyone in deep focus in a shared home or office faces a version of the same gap: you can’t notice what you can’t hear, and constantly checking is exhausting.

Existing tools mostly solve the opposite problem — they transcribe everything (captions, meeting notes) or alarm on specific sounds (doorbells, alerts). Those are great, but they’re heavy, wordy, and often feel like recording. SpeechGlow deliberately sits in the gap between them.

What SpeechGlow is — and isn’t

SpeechGlow is SpeechGlow is not
A speech-presence indicator A transcription / captioning app
An ambient, glanceable cue A “someone is talking to you” detector
Fully on-device & private A recorder, uploader, or cloud service
Honest about uncertainty (“likely / possible / quiet”) A claim of “confirmed speech”, distance, or identity

It answers exactly one question, honestly: is speech likely happening around your Mac right now?

Who it helps

  • Deaf and hard-of-hearing people — the primary audience and the reason it exists.
  • People with auditory-processing differences who find constant listening tiring.
  • Anyone in noise-cancelling headphones or deep focus mode in a shared space.
  • Remote workers, coders, writers, and gamers who want to stay heads-down and reachable.

Private by design

SpeechGlow is built so that trusting it is easy:

  • On-device only. Audio is analyzed locally with a small voice-activity model. It runs fully offline.
  • No recording. Audio is processed frame-by-frame in memory and immediately discarded.
  • No transcription, no captions, no words ever leave (or enter) the screen.
  • No upload, no network, no telemetry. The model and runtime are bundled; nothing phones home.
  • No speaker identification or voiceprints.
  • The menu bar always shows the truth: “Mic: On — processed locally, not recorded.”

The only thing SpeechGlow ever stores is derived, audio-free settings and counters (e.g. how many speech events occurred, a rolling confidence average) to tune itself locally.

How it works

 microphone (getUserMedia)
        │
        ▼
 buffer normalize ──▶ Silero VAD (on-device, WASM)
        │                    │  speech probability 0..1
        ▼                    ▼
 noise-floor / RMS    smoothing + hysteresis
        └──────────┬─────────┘
                   ▼
          speech state machine        ← the real product
        (threshold · sustain · hold)
                   ▼
        quiet → possible → likely
                   ▼
     menu-bar icon  +  screen-edge glow

The model isn’t the hard part — the state machine is. SpeechGlow uses per-awareness thresholds with sustain (how long speech must persist before the cue raises) and hold (how long it lingers after) so the cue feels calm and trustworthy instead of flickery.

Awareness VAD threshold Sustain Hold
Low 0.75 700 ms 1.0 s
Medium 0.60 400 ms 1.5 s
High 0.45 200 ms 2.0 s

Features

  • Three modes: Off (mic disabled) · Quiet Cue (menu-bar icon) · Strong Cue (icon + edge glow)
  • Awareness levels: Low / Medium / High
  • Signature cyan edge-glow overlay — position, intensity, and gentle-pulse motion, with Reduce Motion support
  • Pause for 15 minutes / 1 hour / until tomorrow — for private conversations and calls
  • Preview cues — test the menu-bar icon and the glow before relying on them
  • First-run calibration — tune to a quiet room, shared office, or noisy café
  • Local self-tuning — “Useful / Too sensitive / Missed speech” nudges thresholds, no audio involved
  • Advanced timing — sustain & hold controls
  • Ignore Mac speaker audio heuristic, Follow Focus (best-effort), Launch at login, global shortcuts
  • Local stats — derived metrics only

Install & run (from source)

macOS. Built and tested with Node 24 and npm 11.

git clone https://github.com/reachjalil/speechglow-mac.git
cd speechglow-mac
npm install
npm start

On first launch macOS will ask for microphone permission — SpeechGlow needs it to detect speech presence, and (as promised) never records it. The app runs in the menu bar (no Dock icon); click the icon to open settings.

To build a local app bundle:

npm run package   # → out/SpeechGlow-darwin-arm64/SpeechGlow.app

Tech stack

  • Electron + Electron Forge (Vite plugin) — packaging & dev
  • TypeScript end to end
  • React for the settings & onboarding UI
  • Silero VAD via onnxruntime-web (WASM) — on-device voice-activity detection
  • Hardened security: contextIsolation, sandbox, no nodeIntegration, a single narrow preload bridge, and Zod-validated IPC

Accessibility

SpeechGlow is an accessibility tool, so it tries to practice what it preaches: color-independent shape cues in the menu bar (ring → dot → disc), honored prefers-reduced-motion, keyboard-reachable controls, and a glanceable status that never requires reading words.

Human + AI collaboration

SpeechGlow is a small example of human augmentation: a lightweight AI model (voice-activity detection) extends a human sense — awareness that speech is happening — without ever taking over, surveilling, or recording. The AI does one narrow, honest job on-device; the human stays fully in control of when it listens, how eager it is, and what the cue looks like. It’s assistive intelligence as a quiet sixth sense, not a data funnel.

Roadmap

  • Verified, cited impact statistics + screenshots / demo GIF
  • Custom 10-second “listen to my room” calibration
  • Per-display glow on multi-monitor setups
  • Signed & notarized build + auto-update
  • Refined speaker-audio rejection (echo cancellation)

Acknowledgements

License

MIT © 2026 Jalil

About

A private macOS menu-bar app that gives you a quiet visual cue when speech is happening around your Mac. On-device Silero VAD — no recording, no transcription, no upload.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors