Four stages, each replaceable:
| Stage | What it does | Tools we use |
|---|---|---|
| Capture | Tune + demodulate RF to audio | HackRF One / Airspy Mini via SDR software |
| Transcribe | Speech → text, locally | Whisper (open source), no cloud |
| Understand | Classify intent/topics, alert on keywords | Small local classifier models |
| Archive | Searchable history + dashboards | SQLite + live dashboard |
Transmitter fingerprinting (identifying devices by signal characteristics) adds who-said-it on top of what-was-said.
| Setup | Cost (AUD) | What you get |
|---|---|---|
| RTL-SDR dongle | ~$40 | Receive-only, narrow bands — enough to start |
| Airspy Mini | ~$180 | Continuous 24/7 monitoring, better dynamic range |
| HackRF One | ~$450 | Wideband, transmit-capable for licensed use |
Any modern PC runs the AI side; a GPU matters only for 24/7 multi-channel transcription.
We built RFAI (v0.8.0) to do exactly this: SDR capture → Whisper transcription → intent classification → fingerprinting → searchable archive, as a desktop app with no cloud calls.
The RFAI dashboard as deployed: spectrum view, live transcription and classified signals.
The live demo runs the actual interface in your browser. Technical specifics so you can compare against your own build:
| Component | What we run |
|---|---|
| Speech-to-text | Whisper (open weights), local inference — no API keys anywhere in the pipeline |
| Architecture | Shared DSP library + SvelteKit/Tauri 2 desktop front end |
| Capture | Airspy Mini and HackRF One, continuous duty cycle |
| Archive | SQLite; text-only storage keeps a year of a busy band under ~1GB |
| Version | v0.8.0, in daily use at the studio since mid-2026 |
If you just need to transcribe a podcast or a meeting, use plain Whisper on the audio file — no radio hardware needed. If you need phone calls or encrypted traffic: stop, that's interception territory.
Can Whisper handle noisy radio audio? Yes, with practice — it's robust to compression and moderate noise; pre-filtering audio helps most.
How much storage does archiving need? Text is tiny — a year of monitoring a busy band is a few hundred MB of SQLite. Keep audio only if you must.