|
--- |
|
tags: |
|
- espnet |
|
- audio |
|
- audio-to-audio |
|
datasets: |
|
- VCTK_DEMAND |
|
- DNS2020 |
|
- WHAMR |
|
language: en |
|
license: cc-by-4.0 |
|
--- |
|
|
|
## ESPnet2 ENH model |
|
|
|
### `wyz/vctk_dns2020_whamr_bsrnn_tiny_noncausal` |
|
|
|
This model was trained by wyz based on the universal_se_v1 recipe in [espnet](https://github.com/espnet/espnet/). More information can be found at https://github.com/Emrys365/se-scaling. |
|
|
|
### Demo: How to use in ESPnet2 |
|
|
|
Follow the [ESPnet installation instructions](https://espnet.github.io/espnet/installation.html) |
|
if you haven't done that already. |
|
|
|
To use the model in the Python interface, you could use the following code: |
|
|
|
```python |
|
import soundfile as sf |
|
from espnet2.bin.enh_inference import SeparateSpeech |
|
|
|
# For model downloading + loading |
|
model = SeparateSpeech.from_pretrained( |
|
model_tag="wyz/vctk_dns2020_whamr_bsrnn_tiny_noncausal", |
|
normalize_output_wav=True, |
|
device="cuda", |
|
) |
|
# For loading a downloaded model |
|
# model = SeparateSpeech( |
|
# train_config="exp_vctk_dns20_whamr/enh_train_enh_bsrnn_tiny_noncausal_raw/config.yaml", |
|
# model_file="exp_vctk_dns20_whamr/enh_train_enh_bsrnn_tiny_noncausal_raw/xxxx.pth", |
|
# normalize_output_wav=True, |
|
# device="cuda", |
|
# ) |
|
|
|
audio, fs = sf.read("/path/to/noisy/utt1.flac") |
|
enhanced = model(audio[None, :], fs=fs)[0] |
|
``` |
|
|
|
<!-- Generated by ./scripts/utils/show_enh_score.sh --> |
|
# RESULTS |
|
## Environments |
|
- date: `Tue Feb 27 20:16:26 EST 2024` |
|
- python version: `3.8.16 (default, Mar 2 2023, 03:21:46) [GCC 11.2.0]` |
|
- espnet version: `espnet 202304` |
|
- pytorch version: `pytorch 2.0.1+cu118` |
|
- Git hash: `443028662106472c60fe8bd892cb277e5b488651` |
|
- Commit date: `Thu May 11 03:32:59 2023 +0000` |
|
|
|
|
|
## enhanced_test_16k |
|
|
|
|
|
|dataset|PESQ_WB|STOI|SAR|SDR|SIR|SI_SNR|OVRL|SIG|BAK|P808_MOS| |
|
|---|---|---|---|---|---|---|---|---|---|---| |
|
|chime4_et05_real_isolated_6ch_track|1.20|54.33|-2.60|-2.60|0.00|-31.64|2.95|3.27|3.86|3.68| |
|
|chime4_et05_simu_isolated_6ch_track|1.57|85.20|8.85|8.85|0.00|2.17|2.85|3.16|3.87|3.39| |
|
|dns20_tt_synthetic_no_reverb|3.06|97.43|18.29|18.29|0.00|18.30|3.30|3.56|4.08|4.02| |
|
|reverb_et_real_8ch_multich|1.16|69.08|2.20|2.20|0.00|-0.33|3.05|3.37|3.88|3.82| |
|
|reverb_et_simu_8ch_multich|2.18|93.68|10.21|10.21|0.00|-8.64|3.13|3.44|3.94|3.81| |
|
|whamr_tt_mix_single_reverb_max_16k|2.04|92.11|9.64|9.64|0.00|7.53|3.17|3.43|4.05|3.70| |
|
|
|
|
|
## enhanced_test_48k |
|
|
|
|
|
|dataset|STOI|SAR|SDR|SIR|SI_SNR|OVRL|SIG|BAK|P808_MOS| |
|
|---|---|---|---|---|---|---|---|---|---| |
|
|vctk_noisy_tt_2spk|95.08|19.15|19.15|0.00|17.85|3.12|3.42|3.98|3.53| |
|
|
|
## ENH config |
|
|
|
<details><summary>expand</summary> |
|
|
|
``` |
|
config: conf/tuning/train_enh_bsrnn_tiny_noncausal.yaml |
|
print_config: false |
|
log_level: INFO |
|
dry_run: false |
|
iterator_type: chunk |
|
output_dir: exp_vctk_dns20_whamr/enh_train_enh_bsrnn_tiny_noncausal_raw |
|
ngpu: 1 |
|
seed: 0 |
|
num_workers: 4 |
|
num_att_plot: 3 |
|
dist_backend: nccl |
|
dist_init_method: env:// |
|
dist_world_size: null |
|
dist_rank: null |
|
local_rank: 0 |
|
dist_master_addr: null |
|
dist_master_port: null |
|
dist_launcher: null |
|
multiprocessing_distributed: false |
|
unused_parameters: true |
|
sharded_ddp: false |
|
cudnn_enabled: true |
|
cudnn_benchmark: false |
|
cudnn_deterministic: true |
|
collect_stats: false |
|
write_collected_feats: false |
|
max_epoch: 100 |
|
patience: 42 |
|
val_scheduler_criterion: |
|
- valid |
|
- loss |
|
early_stopping_criterion: |
|
- valid |
|
- loss |
|
- min |
|
best_model_criterion: |
|
- - valid |
|
- loss |
|
- min |
|
keep_nbest_models: 1 |
|
nbest_averaging_interval: 0 |
|
grad_clip: 5.0 |
|
grad_clip_type: 2.0 |
|
grad_noise: false |
|
accum_grad: 1 |
|
no_forward_run: false |
|
resume: true |
|
save_interval: 1000 |
|
train_dtype: float32 |
|
use_amp: false |
|
log_interval: null |
|
use_matplotlib: true |
|
use_tensorboard: true |
|
create_graph_in_tensorboard: false |
|
use_wandb: false |
|
wandb_project: null |
|
wandb_id: null |
|
wandb_entity: null |
|
wandb_name: null |
|
wandb_model_log_interval: -1 |
|
detect_anomaly: false |
|
pretrain_path: null |
|
init_param: [] |
|
ignore_init_mismatch: false |
|
freeze_param: [] |
|
num_iters_per_epoch: 8000 |
|
num_iters_valid: null |
|
batch_size: 4 |
|
valid_batch_size: null |
|
batch_bins: 1000000 |
|
valid_batch_bins: null |
|
train_shape_file: |
|
- exp_vctk_dns20_whamr/enh_stats_16k/train/speech_mix_shape |
|
- exp_vctk_dns20_whamr/enh_stats_16k/train/speech_ref1_shape |
|
valid_shape_file: |
|
- exp_vctk_dns20_whamr/enh_stats_16k/valid/speech_mix_shape |
|
- exp_vctk_dns20_whamr/enh_stats_16k/valid/speech_ref1_shape |
|
batch_type: folded |
|
valid_batch_type: null |
|
fold_length: |
|
- 80000 |
|
- 80000 |
|
sort_in_batch: descending |
|
sort_batch: descending |
|
multiple_iterator: false |
|
chunk_length: 32000 |
|
chunk_shift_ratio: 0.5 |
|
num_cache_chunks: 1024 |
|
chunk_excluded_key_prefixes: [] |
|
chunk_discard_short_samples: false |
|
train_data_path_and_name_and_type: |
|
- - dump/raw/train_vctk_noisy_dns20_whamr/wav.scp |
|
- speech_mix |
|
- sound |
|
- - dump/raw/train_vctk_noisy_dns20_whamr/spk1.scp |
|
- speech_ref1 |
|
- sound |
|
- - dump/raw/train_vctk_noisy_dns20_whamr/utt2category |
|
- category |
|
- text |
|
- - dump/raw/train_vctk_noisy_dns20_whamr/utt2fs |
|
- fs |
|
- text_int |
|
valid_data_path_and_name_and_type: |
|
- - dump/raw/valid_vctk_noisy_dns20_whamr/wav.scp |
|
- speech_mix |
|
- sound |
|
- - dump/raw/valid_vctk_noisy_dns20_whamr/spk1.scp |
|
- speech_ref1 |
|
- sound |
|
- - dump/raw/valid_vctk_noisy_dns20_whamr/utt2category |
|
- category |
|
- text |
|
- - dump/raw/valid_vctk_noisy_dns20_whamr/utt2fs |
|
- fs |
|
- text_int |
|
allow_variable_data_keys: false |
|
max_cache_size: 0.0 |
|
max_cache_fd: 32 |
|
allow_multi_rates: true |
|
valid_max_cache_size: null |
|
exclude_weight_decay: false |
|
exclude_weight_decay_conf: {} |
|
optim: adam |
|
optim_conf: |
|
lr: 0.001 |
|
eps: 1.0e-08 |
|
weight_decay: 1.0e-05 |
|
scheduler: steplr |
|
scheduler_conf: |
|
step_size: 2 |
|
gamma: 0.99 |
|
init: null |
|
model_conf: |
|
normalize_variance_per_ch: true |
|
categories: |
|
- 1ch_8k |
|
- 1ch_8k_r |
|
- 1ch_16k_r |
|
- 1ch_48k |
|
- 1ch_24k |
|
- 1ch_16k |
|
- 2ch_8k |
|
- 2ch_8k_r |
|
- 2ch_16k |
|
- 2ch_16k_r |
|
- 5ch_8k |
|
- 5ch_16k |
|
- 8ch_8k_r |
|
- 8ch_16k_r |
|
criterions: |
|
- name: mr_l1_tfd |
|
conf: |
|
window_sz: |
|
- 256 |
|
- 512 |
|
- 768 |
|
- 1024 |
|
hop_sz: null |
|
eps: 1.0e-08 |
|
time_domain_weight: 0.5 |
|
normalize_variance: true |
|
wrapper: fixed_order |
|
wrapper_conf: |
|
weight: 1.0 |
|
- name: si_snr |
|
conf: |
|
eps: 1.0e-07 |
|
wrapper: fixed_order |
|
wrapper_conf: |
|
weight: 0.0 |
|
speech_volume_normalize: null |
|
rir_scp: null |
|
rir_apply_prob: 1.0 |
|
noise_scp: null |
|
noise_apply_prob: 1.0 |
|
noise_db_range: '13_15' |
|
short_noise_thres: 0.5 |
|
use_reverberant_ref: false |
|
num_spk: 1 |
|
num_noise_type: 1 |
|
sample_rate: 8000 |
|
force_single_channel: true |
|
channel_reordering: true |
|
categories: |
|
- 1ch_8k |
|
- 1ch_8k_r |
|
- 1ch_16k_r |
|
- 1ch_48k |
|
- 1ch_24k |
|
- 1ch_16k |
|
- 2ch_8k |
|
- 2ch_8k_r |
|
- 2ch_16k |
|
- 2ch_16k_r |
|
- 5ch_8k |
|
- 5ch_16k |
|
- 8ch_8k_r |
|
- 8ch_16k_r |
|
speech_segment: null |
|
avoid_allzero_segment: true |
|
flexible_numspk: false |
|
dynamic_mixing: false |
|
utt2spk: null |
|
dynamic_mixing_gain_db: 0.0 |
|
encoder: stft |
|
encoder_conf: |
|
n_fft: 960 |
|
hop_length: 480 |
|
use_builtin_complex: true |
|
default_fs: 48000 |
|
separator: bsrnn |
|
separator_conf: |
|
num_spk: 1 |
|
num_channels: 32 |
|
num_layers: 6 |
|
target_fs: 48000 |
|
ref_channel: 0 |
|
causal: false |
|
decoder: stft |
|
decoder_conf: |
|
n_fft: 960 |
|
hop_length: 480 |
|
default_fs: 48000 |
|
mask_module: multi_mask |
|
mask_module_conf: {} |
|
preprocessor: enh |
|
preprocessor_conf: {} |
|
required: |
|
- output_dir |
|
version: '202304' |
|
distributed: false |
|
``` |
|
|
|
</details> |
|
|
|
|
|
|
|
### Citing ESPnet |
|
|
|
```BibTex |
|
@inproceedings{watanabe2018espnet, |
|
author={Shinji Watanabe and Takaaki Hori and Shigeki Karita and Tomoki Hayashi and Jiro Nishitoba and Yuya Unno and Nelson Yalta and Jahn Heymann and Matthew Wiesner and Nanxin Chen and Adithya Renduchintala and Tsubasa Ochiai}, |
|
title={{ESPnet}: End-to-End Speech Processing Toolkit}, |
|
year={2018}, |
|
booktitle={Proceedings of Interspeech}, |
|
pages={2207--2211}, |
|
doi={10.21437/Interspeech.2018-1456}, |
|
url={http://dx.doi.org/10.21437/Interspeech.2018-1456} |
|
} |
|
|
|
|
|
@inproceedings{ESPnet-SE, |
|
author = {Chenda Li and Jing Shi and Wangyou Zhang and Aswin Shanmugam Subramanian and Xuankai Chang and |
|
Naoyuki Kamo and Moto Hira and Tomoki Hayashi and Christoph B{"{o}}ddeker and Zhuo Chen and Shinji Watanabe}, |
|
title = {ESPnet-SE: End-To-End Speech Enhancement and Separation Toolkit Designed for {ASR} Integration}, |
|
booktitle = {{IEEE} Spoken Language Technology Workshop, {SLT} 2021, Shenzhen, China, January 19-22, 2021}, |
|
pages = {785--792}, |
|
publisher = {{IEEE}}, |
|
year = {2021}, |
|
url = {https://doi.org/10.1109/SLT48900.2021.9383615}, |
|
doi = {10.1109/SLT48900.2021.9383615}, |
|
timestamp = {Mon, 12 Apr 2021 17:08:59 +0200}, |
|
biburl = {https://dblp.org/rec/conf/slt/Li0ZSCKHHBC021.bib}, |
|
bibsource = {dblp computer science bibliography, https://dblp.org} |
|
} |
|
|
|
|
|
``` |
|
|
|
or arXiv: |
|
|
|
```bibtex |
|
@misc{watanabe2018espnet, |
|
title={ESPnet: End-to-End Speech Processing Toolkit}, |
|
author={Shinji Watanabe and Takaaki Hori and Shigeki Karita and Tomoki Hayashi and Jiro Nishitoba and Yuya Unno and Nelson Yalta and Jahn Heymann and Matthew Wiesner and Nanxin Chen and Adithya Renduchintala and Tsubasa Ochiai}, |
|
year={2018}, |
|
eprint={1804.00015}, |
|
archivePrefix={arXiv}, |
|
primaryClass={cs.CL} |
|
} |
|
``` |
|
|