AI Signal Classifier
What it is
A machine-learning system that classifies amateur-radio modes directly from RF (IQ) data, and — increasingly — decodes them. The aim is a pipeline that can look at a stretch of spectrum, find the signals in it, identify each mode, and extract the message: capture → detect → extract → decode → annotate.
It combines two complementary views of a signal:
- a wideband spectrogram detector that locates signals in time and frequency across a span, and
- a narrowband IQ classifier that identifies the exact mode of an individual signal and validates it by decoding.
Why I built it
It grew out of watching FT8 decode stations I couldn’t even hear, and wondering how much of the “which mode is this?” work could be done automatically. The long-term goal is a live assistant that can scan a band, tell you what’s on it, and decode what it finds — eventually as an overlay for an SDR such as a FlexRadio.
Current status & goals
- Validated mode generators — accurate generators for the core keyed modes (RTTY, PSK31/63, Navtex, Morse) that are decode-validated to zero character error rate, so the training data is faithful rather than a generic approximation.
- Narrowband classifier — a length-agnostic CNN reaches ~99% on clean 1-second captures and confirmed a key hypothesis: distinguishing baud rates (e.g. RTTY45 vs RTTY50) that shorter captures can’t resolve.
- Wideband detector — a spectrogram object-detector (YOLO) trained purely on synthetic scenes transfers to real off-air signals and stays quiet on noise.
- Frequency-prior / band-plan layer — narrow, frequency-defined modes like FT8/FT4 are routed straight to a decoder from their known dial frequencies rather than relying on the detector.
- Voice-to-text — SSB/AM audio is demodulated and transcribed with Whisper, a differentiator I haven’t seen elsewhere.
- Goals: add FT8/FT4 structural handling, harden real-world capture and rejection of out-of-class signals, and close the loop into a live identify-and-decode interface.