Figure 1. NeuroCW at a glance. All CER numbers are from synthetic test sets.
▶ New: watch the first on-air test of the NeuroCW test build
NeuroCW is an end-to-end neural CW decoder: audio in, text out. One Conformer-CTC model copies English, Korean (Hangul) and Japanese (Wabun). It was trained for about two weeks on an NVIDIA DGX Spark, exported to ONNX, and a Windows release is planned for early November. This post walks through how it was built, mostly in pictures.
1. The problem
Classic decoders do fine on clean signals. They struggle once QSB, QRM and a human fist get involved. NeuroCW was trained on the bottom case.
Figure 2. The same transmission, clean (top) and after the synthetic HF channel (bottom).
Figure 3. End-to-end pipeline: generator → spectrogram → Conformer → CTC text.
2. Synthetic data, generated on the fly
No dataset sits on disk. Every batch is generated fresh and is deterministic per seed. The text, the operator's fist and the radio channel are all randomized.
Figure 4. Language and text-source mix. Callsigns use real EN/KO/JA prefixes.
Figure 5. Three simulated key types, each with its own timing jitter, weight and rise time.
Figure 6. The HF channel simulator. Percentages are the share of clips that get each impairment.
Figure 7. Five real recorded band-noise beds (20 m, 40 m, CW band), cleaned of embedded CW.
Figure 8. Five generated training clips across languages, SNRs and fists.
3. Model
A 5 ms STFT frontend (156–1406 Hz) feeds 16 Conformer blocks. The model is trained with CTC plus two auxiliary losses: intermediate CTC and a key-up/key-down detector.
Figure 9. NeuroCW large: 384-dim, 16 layers, 6 heads, 55.3M parameters, 144-token vocab, greedy CTC decoding.
4. Training on a DGX Spark
Training starts easy and moves down into the noise. Ten runs took about 128 GPU-hours. The final model is the final checkpoint of run 10.
Figure 10. SNR curriculum: the lower limit slides from +5 dB to −20 dB over the first 25% of training.
Figure 11. All 10 runs on one time axis, with each run's benchmark CER.
Figure 12. Training loss across the run chain.
Figure 13. Benchmark CER per checkpoint: 84.63% (first attempt) → 5.07% (final checkpoint).
5. Results
NeuroCW and DeepCW decoded the same 450 synthetic clips (machine keying + AWGN). The gap widens as the noise goes up.
| Test set | NeuroCW (final) | DeepCW |
|---|---|---|
| Benchmark, all SNRs (450 clips) | 5.07% | 18.33% |
| Benchmark @ −12 dB | 10.18% | 52.24% |
| Realistic channel EN / KO / JA | 8.42 / 5.87 / 9.21% | 26.80 / — / — |
Table 1. Character error rate (lower is better). DeepCW does not support Korean or Japanese.
Fairness note: the test clips come from the same family of simulator NeuroCW was trained on, so this setting favors NeuroCW. A real-air comparison comes with the Part 2 benchmark.
Figure 14. CER vs SNR. NeuroCW stays at or below 0.35% down to −8 dB.
Figure 15. Left: CER by speed (12–40 WPM). Right: the realistic synthetic HF channel.
Figure 16. Two real recordings exposed a weakness on heavy-weight keying. On a synthetic keying-weight test (weight 0.55), one targeted fine-tune cut the error from 13.4% to 0.1% (DeepCW: 13.3%). An independent real-air test is pending.
Limits: every test set is synthetic, and real on-air CER has not been measured yet. The real-air benchmark and all its measurement data will be published openly. Known weak spots are very tight spacing and phantom characters on long tuning carriers. Input must be in 156–1406 Hz.
6. Coming in early November
Figure 17. NeuroCW for Windows (ONNX). Preview mockup; the design is still changing.
First on-air test (test build)
Video. NeuroCW test build decoding KiwiSDR web audio (receiver in SSB mode). Watch on YouTube
Before release, I ran a pre-release test build of NeuroCW on real off-air signals. The audio came from a KiwiSDR web receiver and was played on the PC, then fed to NeuroCW through a loopback device. The receiver was set to SSB mode, because the current model was trained mainly on SSB-received audio. Decoding with the receiver in CW mode has not been tested yet.
Figure A. A strong station at about 1080 Hz. NeuroCW copies "DE DL1ZAL" at 40 WPM, and the station panel identifies Germany. The last repeat is misread as KL1ZAL.
Figure B. A 22 WPM ragchew at about 757 Hz. Mostly readable ("…WHEN I GOT MY TICKET WAS AGE 15"), with small word and spacing errors.
Figure C. Pileup mode decodes two signals at once. Track A (506 Hz) reads well. The weaker Track B (1119 Hz) comes out garbled.
Figure D. A long QSO at about 667 Hz. Phrases like "QRZ.COM PAGE PICS" and "OK ON SPELLING" come through, but errors pile up in longer passages.
Honest notes. This is a test build, not a finished decoder. Early parts of the session decoded well, but later portions sometimes degraded, with garbled word endings and misread repeats. These results are from one informal session and are not a benchmark. Next, I will test with the receiver in CW mode. The public release is planned within one month.
Real-world copy like this is exactly where more training data helps. If you have real CW recordings with 100% verified transcripts, please email kd8cec@gmail.com with the subject "NeuroCW data". 73, Ian Lee, KD8CEC
7. Related work & references
| Approach | Examples | Where NeuroCW sits |
|---|---|---|
| Classical DSP decoders | fldigi [7], CW Skimmer [8] | Baseline idea: no learning, hand-tuned timing |
| CNN/LSTM + CTC for Morse | AG1LE [5], MorseNet [6] | Same CTC idea, bigger encoder and data |
| Neural CW decoder (ONNX) | DeepCW [9] | Comparison baseline in Table 1 |
| Speech-recognition encoders | Conformer [2], CTC [1] | Backbone and loss used here |
Table 2. Prior work. NeuroCW borrows ASR building blocks [1–4] and applies them to CW audio.
- A. Graves, S. Fernández, F. Gomez, J. Schmidhuber, "Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks," ICML 2006. PDF
- A. Gulati et al., "Conformer: Convolution-augmented Transformer for Speech Recognition," Interspeech 2020. arXiv:2005.08100
- J. Su et al., "RoFormer: Enhanced Transformer with Rotary Position Embedding," 2021. arXiv:2104.09864
- J. Lee, S. Watanabe, "Intermediate Loss Regularization for CTC-based Speech Recognition," ICASSP 2021. arXiv:2102.03216
- M. Niininen (AG1LE), "Training a Computer to Listen and Decode Morse Code," 2019. blog · code
- W. Li, K. Wang, L. You, "MorseNet: A Unified Neural Network for Morse Detection and Recognition in Spectrogram," IEEE Access, vol. 8, 2020. DOI
- fldigi, W1HKJ. sourceforge.net/projects/fldigi
- CW Skimmer, VE3NEA. dxatlas.com/CwSkimmer
- DeepCW, e04. github.com/e04/web-deep-cw-decoder · engine
73, Ian Lee / KD8CEC
Comments
Post a Comment