Problem
DeepSC-S (arXiv:2012.05369) transmits the meaning of speech rather than its bits, but the paper leaves key choices unspecified. Reproducing it means resolving each one with evidence rather than guessing.
Approach
- Hypothesis-test every open choice against the official TensorFlow reference. For example, the paper's "4×32" turns out to mean cardinality × filter count, not kernel size.
- Five staged notebooks: audio framing round trip → autoencoder with no channel → power constraint + AWGN → Rayleigh/Rician fading tested across channels → real-data SDR/PESQ results.
- Documented deviations: Adam instead of SGD for speed at this scale, and training SNR sampled uniformly from 0–20 dB each step instead of a fixed 8 dB, so the encoding stays robust across the whole range.
- Reproducible tooling: a tested
deepscs/package, a training script logging to Weights & Biases, and a script reproducing the paper's Fig. 4 with identical noise draws per model.
Results
- 7.5–10.5 dB SDR on AWGN across the experiment grid (AWGN, Rayleigh, and Rician at 0–20 dB SNR).
- Less than 1 dB gap between matched and mismatched channels, so one model generalizes across channels without retraining.
- The curves cross near 11–12 dB rather than the paper's ~8 dB. This is explained by training across SNRs instead of at a single one.
- Final AWGN, Rayleigh, and Rician weights published on Hugging Face.