--- tags: - espnet - audio - audio-to-audio language: en datasets: - VCTK_DEMAND - DNS2020 license: cc-by-4.0 --- ## ESPnet2 ENH model ### `wyz/vctk_dns2020_bsrnn_medium_noncausal` This model was trained by wyz using 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_bsrnn_medium_noncausal", normalize_output_wav=True, device="cuda", ) # For loading a downloaded model # model = SeparateSpeech( # train_config="exp_vctk_dns20/enh_train_enh_bsrnn_medium_noncausal_raw/config.yaml", # model_file="exp_vctk_dns20/enh_train_enh_bsrnn_medium_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] ``` # RESULTS ## Environments - date: `Tue Feb 27 22:36:44 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.19|53.80|-2.46|-2.46|0.00|-31.04|3.07|3.40|3.91|3.72| |chime4_et05_simu_isolated_6ch_track|1.58|84.56|9.02|9.02|0.00|2.74|2.94|3.25|3.92|3.33| |dns20_tt_synthetic_no_reverb|3.28|97.86|19.82|19.82|0.00|19.74|3.35|3.59|4.13|4.03| |reverb_et_real_8ch_multich|1.74|82.86|10.32|10.32|0.00|6.55|2.73|3.20|3.53|3.51| |reverb_et_simu_8ch_multich|1.62|85.32|9.20|9.20|0.00|-10.54|2.78|3.27|3.49|3.60| |whamr_tt_mix_single_reverb_max_16k|1.56|85.42|8.02|8.02|0.00|2.64|2.98|3.34|3.83|3.68| ## enhanced_test_48k |dataset|STOI|SAR|SDR|SIR|SI_SNR|OVRL|SIG|BAK|P808_MOS| |---|---|---|---|---|---|---|---|---|---| |vctk_noisy_tt_2spk|95.75|19.55|19.55|0.00|18.72|3.16|3.47|3.97|3.55| ## ENH config
expand ``` config: conf/tuning/train_enh_bsrnn_medium_noncausal.yaml print_config: false log_level: INFO dry_run: false iterator_type: chunk output_dir: exp_vctk_dns20/enh_train_enh_bsrnn_medium_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: 40 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/enh_stats_16k/train/speech_mix_shape - exp_vctk_dns20/enh_stats_16k/train/speech_ref1_shape - exp_vctk_dns20/enh_stats_16k/train/dereverb_ref1_shape valid_shape_file: - exp_vctk_dns20/enh_stats_16k/valid/speech_mix_shape - exp_vctk_dns20/enh_stats_16k/valid/speech_ref1_shape - exp_vctk_dns20/enh_stats_16k/valid/dereverb_ref1_shape batch_type: folded valid_batch_type: null fold_length: - 80000 - 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/wav.scp - speech_mix - sound - - dump/raw/train_vctk_noisy_dns20/spk1.scp - speech_ref1 - sound - - dump/raw/train_vctk_noisy_dns20/dereverb1.scp - dereverb_ref1 - sound - - dump/raw/train_vctk_noisy_dns20/utt2category - category - text - - dump/raw/train_vctk_noisy_dns20/utt2fs - fs - text_int valid_data_path_and_name_and_type: - - dump/raw/valid_vctk_noisy_dns20/wav.scp - speech_mix - sound - - dump/raw/valid_vctk_noisy_dns20/spk1.scp - speech_ref1 - sound - - dump/raw/valid_vctk_noisy_dns20/dereverb1.scp - dereverb_ref1 - sound - - dump/raw/valid_vctk_noisy_dns20/utt2category - category - text - - dump/raw/valid_vctk_noisy_dns20/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: 128 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 ```
### 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} } ```