Views
No views yet
Wei Wang, Siyi Zhao, Yanmin Qian. Advancing Non-intrusive Suppression on Enhancement Distortion for Noise Robust ASR. ICASSP 2025.
ds4se/ds_module.py, Fig. 1b + Algorithm 1):
band-splits the original X and enhanced X̃ complex spectrograms, runs L
Time/Band-RNN groups, and a linear+sigmoid head emits per-(band, frame)
coefficients S ∈ [0,1]. Algorithm 1 interpolates X̂ = S·X + (1−S)·X̃.ds4se/ds4bsrnn.py, Fig. 2): reuses the BSRNN SE's
internal hidden representation H instead of a separate band-split — fewer
parameters.ds4se/bsrnn.py): self-contained, mirrors ESPnet's
BSRNNSeparator, exposes the hidden H.scripts/train_ds_real.py): SE and ASR are
frozen; only the DS module is trained on the ASR (cross-entropy) loss; SE
gradients are detached. Scheduled DS coefficients (warmup bias freeze)
avoid the trivial S→0 collapse.ds4se/asr_whisper.py): a differentiable log-mel
front-end wrapping openai/whisper-base.en for the ASR training loss and WER.noisy → frozen BSRNN SE → {OA | DS | DS4BSRNN} → frozen Whisper → WER. Data: LibriTTS (clean) + ESC-50 (noise), simulated at varying
SNR. OA (observation-adding) is the fixed-coefficient baseline X̂ = s·X + (1−s)·X̃, with s tuned on dev and applied to test.| Method | Test WER (%) | Params | vs OA |
|---|---|---|---|
| Noisy | 25.21 | — | — |
| SE-enhanced (BSRNN) | 26.11 | — | — |
| + OA (s=0.4, tuned on dev) | 20.43 | — | baseline |
| + DS (decoupled, sub-band) | 19.83 | 28.7K | −0.60 |
| + DS4BSRNN (coupled, sub-band) | 19.39 | 10.9K | −1.04 |
ds4se/ # the method (BSRNN, DS, DS4BSRNN, STFT, Whisper wrapper, losses, data)
scripts/ # prepare_manifests, train_se, train_ds_real, eval_wer, inspect_ds_coef, smoke_test
ckpt/ # pretrained: se_bsrnn.pt, ds_subband_wide.pt, ds4bsrnn_wide.pt, ds_subband_v5.pt
data/
clean/ # LibriTTS clips (train-clean-100 subset / dev-clean / test-clean) + transcripts
noise/ # ESC-50 (audio/ + meta/esc50.csv)
manifests/ # train.json (10k) / dev.json (150) / test.json (300), RELATIVE paths
run_all.sh # one-command end-to-end recipepip install -r requirements.txtopenai/whisper-base.en, ~290 MB) is downloaded from the HF Hub on first use;
for an offline machine, pre-fetch it (e.g. huggingface-cli download openai/whisper-base.en) and set HF_HUB_OFFLINE=1.1# Wide-SNR evaluation: OA tuned on dev -> applied to test; DS + DS4BSRNN
2python scripts/eval_wer.py --se ckpt/se_bsrnn.pt \
3 --ds ckpt/ds_subband_wide.pt --ds4 ckpt/ds4bsrnn_wide.pt \
4 --snr_lo -15 --snr_hi 25bash run_all.sh # SE -> DS (decoupled) -> DS4BSRNN -> eval, on the bundled data1# (0) manifests are shipped; regenerate only if starting from a full LibriTTS:
2# python scripts/prepare_manifests.py --libritts_root <LibriTTS> \
3# --n_train 10000 --n_dev 150 --n_test 300 --relative_to .
4
5# (1) train the BSRNN speech-enhancement front-end (SI-SDR loss)
6python scripts/train_se.py --epochs 40 --num_channel 64 --num_layer 6 \
7 --out ckpt/se_bsrnn.pt
8
9# (2) non-intrusive DS training against frozen Whisper (wide SNR, unlocked adaptivity)
10python scripts/train_ds_real.py --se ckpt/se_bsrnn.pt --updates 8000 \
11 --warmup 200 --mode sub-band --lr 1e-2 --cosine --weight_decay 1e-5 \
12 --s_tv 0.0 --bias_init 1.0 --dev_items 150 --snr_lo -15 --snr_hi 25 \
13 --out ckpt/ds_subband_wide.pt
14python scripts/train_ds_real.py --se ckpt/se_bsrnn.pt --coupled --updates 8000 \
15 --warmup 200 --mode sub-band --lr 1e-2 --cosine --weight_decay 1e-5 \
16 --s_tv 0.0 --bias_init 1.0 --dev_items 150 --snr_lo -15 --snr_hi 25 \
17 --out ckpt/ds4bsrnn_wide.pt
18
19# (3) evaluate
20python scripts/eval_wer.py --se ckpt/se_bsrnn.pt \
21 --ds ckpt/ds_subband_wide.pt --ds4 ckpt/ds4bsrnn_wide.pt \
22 --snr_lo -15 --snr_hi 25
23
24# (optional) inspect the learned DS coefficients (adaptivity diagnostic)
25python scripts/inspect_ds_coef.py --ds ckpt/ds_subband_wide.ptpython scripts/smoke_test.py| Aspect | Paper (Tables I / III) | This open reproduction |
|---|---|---|
| Data | private in-house Mandarin / licensed CHiME-4 + DNS | public LibriTTS + ESC-50 (simulated) |
| ASR back-end | Paraformer / large Whisper | frozen openai/whisper-base.en |
| Reported quantity | absolute CER/WER | runnable WER reproducing the same trends |
bias_init.DATA_LICENSES.md. ESC-50 is CC BY-NC, so the bundled
artifact as a whole is for non-commercial / academic use. The repository
code is MIT-licensed (see LICENSE).1@inproceedings{wang2025advancing,
2 title = {Advancing Non-intrusive Suppression on Enhancement Distortion for Noise Robust ASR},
3 author = {Wang, Wei and Zhao, Siyi and Qian, Yanmin},
4 booktitle = {ICASSP},
5 year = {2025}
6}