Personal Project · SDR · AI
·2026
Radio monitor with speech recognition — solving a very specific plant problem
RTL-SDR + Whisper speech-to-text pipeline that listens to plant UHF radios and alerts when keywords are called. Built mostly to tell me when my name comes over the radio.
RTL-SDR
Hardware
<$30 in parts
local Whisper
Transcription
no cloud egress
a few seconds
Latency
tunable per keyword
False-positive rate
At work, half the plant communicates by Motorola UHF radio. Handhelds are everywhere. My desk isn't. Between VPN sessions, meetings, and the ERP upgrade, I routinely miss calls over the radio and only find out later when someone walks over.
This project is the fix. An RTL-SDR demodulates the channel, Whisper transcribes the audio locally, a keyword matcher watches for my name and a configurable list of alert terms, and notifications fire to my desktop when anything interesting comes over the air.
Stack
- RTL-SDR dongle (NOAA-style v3)
- Python glue with rtl_fm + PyAudio piping
- whisper.cpp running locally
- Keyword match + rolling context buffer
- Notification backend (desktop + optional pushover)
Why
Because the problem is annoying enough to fix properly, the hardware is $30, and I wanted an excuse to run Whisper on an always-on pipeline. This is the kind of side project that's half genuinely useful and half homelab excuse.
What makes it work
- Running Whisper locally — cloud transcription would be impractical on continuous audio and would also send internal plant chatter outside the network.
- Keyword matching on transcripts, not audio fingerprints — dramatically easier to tune and robust to static / distance / accents.
- A rolling context buffer so when the alert fires, I can see the 10 seconds before + after, not just the keyword moment.
What it proves
That plant-floor problems are often solvable with $30 of hardware and a weekend. The same pipeline shape (SDR + local ASR + keyword watch) is also useful for OT alarm monitoring, handheld radio compliance audits, and a dozen other things.