Training data for RF, without the radio.
Generate unlimited, perfectly-labeled IQ and spectrograms for signal-classification models and DSP test benches.
Real RF data is scarce, costly, and hard to label.
Models that detect and classify signals need large, balanced, ground-truth datasets — exactly what the real world won't give you.
Collecting real signals means SDR hardware, spectrum access, and field time — for every scenario you need.
Hand-labeling captures is slow and error-prone, and the ground truth is often uncertain to begin with.
Low-SNR, rare modulations, and specific interference geometries almost never show up when you need them.
Generate it instead.
Describe the signals you want — modulation, bandwidth, SNR, timing, geometry — and Sigtera synthesizes them with ground-truth labels baked in. You specified them, so they're exact, every time.
- ✓ Unlimited, perfectly-labeled samples
- ✓ Full control of modulation, noise, and channel
- ✓ Output as raw IQ or spectrograms
Set a range, not a value.
Give any parameter a range or a list, and Sigtera samples it independently for every signal — one config becomes a large, varied, balanced dataset with no hand-tuning.
Four PSK signals from one config.
Pick what you need to build.
Isolated narrowband signals or composite wideband recordings across 12 modulations, with a metadata label for every file.
Learn more →Place transmitters and receivers in space; propagation delay, path loss, and interference are computed from the geometry.
Learn more →Three steps to a labeled dataset.
Choose modulations, sample rate, noise, and timing — or place transmitters and receivers in space.
Get isolated signals, wideband composites, or fully mixed and time-aligned environment recordings.
Download a labeled zip, or stream straight into your training pipeline through the API.
Stream signals straight into your code.
from sigtera import SigteraClient
client = SigteraClient()
nb = client.narrowband(sample_rate=100000, noise=-20)
nb.PSK(baud=9600, modulation_order=8, signal_count=2)
for params, iq in client.simulate():
train(params, iq)
API docs →