Sigtera is under active development — signals may be inaccurate.
RF Signal Simulation

Training data for RF, without the radio.

Generate unlimited, perfectly-labeled IQ and spectrograms for signal-classification models and DSP test benches.

The problem

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.

Expensive to capture

Collecting real signals means SDR hardware, spectrum access, and field time — for every scenario you need.

Painful to label

Hand-labeling captures is slow and error-prone, and the ground truth is often uncertain to begin with.

Edge cases are rare

Low-SNR, rare modulations, and specific interference geometries almost never show up when you need them.

The solution

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
Hands-off

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.

n_bits = 1500–5800 → range, sampled per signal
center_frequency = -25000, 0, 25000 → set, pick one
n_bits = 1500
center_frequency = 25000
n_bits = 2800
center_frequency = -25000
n_bits = 4500
center_frequency = 0
n_bits = 5800
center_frequency = 25000

Four PSK signals from one config.

Two products

Pick what you need to build.

How it works

Three steps to a labeled dataset.

01
Configure

Choose modulations, sample rate, noise, and timing — or place transmitters and receivers in space.

02
Generate

Get isolated signals, wideband composites, or fully mixed and time-aligned environment recordings.

03
Use

Download a labeled zip, or stream straight into your training pipeline through the API.

Web interface

Configure in the browser. Download a zip.

Open the app →
Streaming 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 →