| --- |
| license: mit |
| library_name: pytorch |
| tags: |
| - speech |
| - semantic-communication |
| - joint-source-channel-coding |
| - audio |
| - reproduction |
| datasets: |
| - JacobLinCool/VoiceBank-DEMAND-16k |
| pipeline_tag: audio-to-audio |
| --- |
| |
| # DeepSC-S β Semantic Communication for Speech (reproduction) |
|
|
| PyTorch reproduction of **DeepSC-S** (Weng, Qin & Li, 2021 β |
| [arXiv:2012.05369](https://arxiv.org/abs/2012.05369)), a neural joint source-channel |
| coding system for speech: instead of separate compression + error-correction + modulation, |
| a single network learns to encode speech directly into channel symbols and reconstruct it |
| at the receiver, trained end-to-end through a simulated noisy channel. |
|
|
| - **Code:** https://github.com/prashantrajbista/semantic-communication |
| - **Write-up (all 5 stages, with results):** https://prashantrajbista.github.io/semantic-communication/ |
| - **Paper:** [arXiv:2012.05369](https://arxiv.org/abs/2012.05369) |
| - **License:** MIT |
|
|
| ## Checkpoints |
|
|
| Three final-weights checkpoints, each trained with a different simulated channel during |
| training (`ChannelLayer` in `deepscs/channel.py`): |
|
|
| | file | trained on | |
| |---|---| |
| | `deepsc_s_awgn_final.pt` | AWGN | |
| | `deepsc_s_rayleigh_final.pt` | Rayleigh fading | |
| | `deepsc_s_rician_final.pt` | Rician fading (K=1) | |
|
|
| All three share the same architecture (`DeepSC_S` in `deepscs/model.py`): |
|
|
| - SemanticEncoder / SemanticDecoder: 4 SE-ResNet blocks, feature depth D=32, 5Γ5 kernels, |
| cardinality 4, SE reduction ratio r=4 |
| - ChannelEncoder / ChannelDecoder: compression knob `depth=8` (8 real channel symbols per |
| frame-column position) |
| - Trained with Adam (lr=1e-3), MSE loss, SNR sampled uniformly in [0, 20] dB per batch |
|
|
| Where the paper underspecifies (kernel size, r, D, Rician K, optimizer), the official |
| [TensorFlow repo](https://github.com/Zhenzi-Weng/DeepSC-S) was used as ground truth |
| instead of guessing β see `docs/initial_plan.md` in the code repo for the full list of |
| flagged choices. |
|
|
| ## Training data & scale |
|
|
| Trained on a 2,000-clip subset of the Edinburgh DataShare / VoiceBank-DEMAND clean |
| 28-speaker set (~10k clips available), 40 epochs. This is a deliberate scope choice for a |
| tractable single-session reproduction, not the paper's full-scale run β expect lower |
| absolute quality (PESQ ~1.0β1.35) than the paper reports. SDR/PESQ curves and the |
| matched-vs-mismatched-channel robustness results are in the write-up linked above. |
|
|
| ## Usage |
|
|
| ```python |
| import torch |
| from deepscs.model import DeepSC_S # from github.com/prashantrajbista/semantic-communication |
| |
| model = DeepSC_S(depth=8, n_blocks=4, cardinality=4, r=4) |
| model.load_state_dict(torch.load("deepsc_s_awgn_final.pt", map_location="cpu")) |
| model.eval() |
| |
| # x: (B, 1, F, L) framed audio β see deepscs/audio.py for the framing/deframing utilities |
| # and deepscs/channel.py for ChannelLayer to simulate the transmission channel. |
| ``` |
|
|
| ## Scope |
|
|
| **In:** neural transceiver, end-to-end MSE training, AWGN + Rayleigh + Rician, SDR |
| (+ PESQ), cross-channel robustness evaluation. |
|
|
| **Out:** traditional PCM+Turbo/64-QAM baseline, exact numeric paper reproduction, real RF |
| hardware, estimated-CSI channels, full-scale (~10k clip) training. |
|
|