Receiver online · 700 Hz · in-browser

Pull Morse out of
the noise floor

A neural decoder that copies CW down to −12 dB SNR — the noise carrying ~16× the power of the signal, well below where a tone stops being a tone to the ear. Try it right here: key a message, bury it, and watch the model copy it back.

CWNet· 808k · 3.1 MBruns in-browser
Spaces are keyed as word breaks. The model copies letters only, so they don’t count against it.
Signal
256
Slow signal fading, 0.16 Hz rate

This is a live demo. The full decoder ships as a desktop app — see below.

Train your copy

Two ways to drill — both scored

The demo proves the model can read CW. These put you on the key — each a trainer with its own public leaderboard.

Decode for realSoonThe demo above is in-browser; the full decoder ships as a desktop app.
The signal chain
01 · Generate

Key any text at 12–50 WPM, then bury it: set the SNR and add the impairments real bands throw at you — AWGN, QSB fading — all synthesized in-browser.

02 · Decode

CWNet — an 808k-param CNN→TCN→BiGRU with a CTC head (3.1 MB) — reads the signal envelope and copies the characters. Pure WASM, no server.

03 · Compare

The copy is graded against ground truth with a Levenshtein-aligned diff — character error rate, confidence, per-stage timing. No black box.

Nothing leaves your device

CWNet runs locally on the WASM backend of ONNX Runtime, threaded across your cores. There is no backend — your audio never leaves the tab. Pop open the network panel and watch: once the .onnx weights load, decoding fires zero requests.

Beat the Bot

A callsign, buried in static, keyed twice in one clip — yours eased to your tier, the bot’s cranked to Extra. You stitch the repeats together in your head on the fly; the model decodes each send on its own and merges them. Same trick, different hardware.

Is that a fair fight?

It's the interesting question, and we don't hide it — every round shows exactly how the bot used its two looks.