SSTVAE
A hybrid-digital SSTV mode for HF radio: images are sent as the continuous-valued latents of a convolutional autoencoder, modulated onto OFDM carrier amplitudes. The decoder is trained with a simulated HF channel in the loop, so quality degrades gradually with SNR instead of falling off a digital cliff. Inspired by FreeDV RADE.
โ ๏ธ Working beta. Decoded successfully over the air, but the on-air format is not frozen โ expect incompatible changes. Both stations must run the same code and the same checkpoint; there's no handshake, so a mismatch decodes to noise rather than erroring.
Contents
v1.ptโ the published checkpoint (10.3 M params, 640ร480)sstvae/,scripts/train.py,pyproject.tomlโ model and training code, matching this checkpoint
The command-line tools (encode / decode / live receive) and full
documentation live in the project repository,
github.com/arodland/SSTVAE, not
here. The tools fetch v1.pt from this repo automatically, so there's
nothing to download by hand.
Performance
Measured end-to-end through the real modem and a simulated channel, on validation images, PSNR in dB:
| mode | time | clean | 10 dB | 6 dB | 0 dB |
|---|---|---|---|---|---|
| A | 32 s | 24.7 | 24.4 | 24.0 | 22.3 |
| B | 64 s | 25.7 | 25.4 | 25.0 | 23.5 |
| C | 95 s | 26.0 | 25.8 | 25.5 | 24.1 |
~1200 Hz occupied bandwidth, ~4.5 dB envelope PAPR, >ยฑ50 Hz frequency offset tolerance. Below about โ2 dB SNR the limit is acquisition โ you get no image rather than a poor one.
Output is a reconstruction, not a photograph: fine detail, small text especially, can come back subtly wrong rather than merely blurry. Don't use it where exactness matters.