SE-AGCNet is an end-to-end framework for joint speech enhancement (SE) and automatic gain control (AGC), designed for meeting scenarios with large loudness variation.
- Audio demos: https://jinming00.github.io/SE-AGCNet/
For SE-AGC data generation details, see DATAGEN/README.md.
Conventional audio pipelines often cascade SE and AGC as separate modules. Applying AGC before SE may amplify background noise, while applying SE before AGC may over-suppress quiet speech. SE-AGCNet jointly optimizes enhancement and loudness control so that quiet speech is preserved while output loudness remains consistent.
This repository includes:
SE_AGCNet/: model, training, inference, metrics, and validation code.single_agc/: standalone AGC model training and inference code.DATAGEN/: SE-AGC data simulation scripts.pyagc/: Python implementation of time-frequency automatic gain control.docs/: static demo page assets with audio examples.
conda env create -f environment.yml
conda activate seagcnetUpdate data paths and training parameters in train.sh, then run:
./train.shUpdate checkpoint and input paths in inference.sh, then run:
./inference.shPre-trained checkpoints are currently stored under SE_AGCNet/ckpt/.
The standalone AGC model is under single_agc/.
For inference, update INPUT_PATH, OUTPUT_PATH, and MODEL_PATH in single_agc/infer.sh, then run:
bash single_agc/infer.shINPUT_PATH can be either a single .wav file or a directory containing .wav files.
Real-time factor (RTF) was measured on a single NVIDIA L40S GPU.
| Model | RTF |
|---|---|
| MP-SENet | 0.0329 |
| SE-AGCNet | 0.0357 |
The pyagc/ directory contains the Python 3 implementation of time-frequency automatic gain control. See pyagc/README.md for details.
This project benefited from the following open-source projects:
This repository also includes a vendored DNSMOS ONNX model for local evaluation. Please refer to the original repositories for license, citation, and implementation details.
Citation information will be added after publication.