[Question] A couple of questions about MarbleNet VAD
State: closed | Pull request: no

Hello!

I have been training a VAD but the results I am getting are not optimal as I have done prior data-preprocessing like trimming and Noise Injection. My dataset totals to 7 hours of speech and 7 hours of background. Is that enough for training the VAD?

Also, I would like to know how to be sure that Noise Augmentation is activated, because when I start training, I see the following:

![ccc](https://user-images.githubusercontent.com/43903002/113395380-6b5a5800-93a2-11eb-9c93-a14f518321ea.png)

Spectrogram Augmentation has 0 params, does that mean it is not activated?

Here's my configuration **yaml** model file:

```yml
name: &name "MarbleNet-3x2x64"

model:
  sample_rate: 16000
  repeat: 2
  dropout: 0.3
  kernel_size_factor: 1.0

  labels: ['background', 'speech']

  train_ds:
    manifest_filepath: ???
    sample_rate: 16000
    labels: ['background', 'speech']
    batch_size: 16
    shuffle: True
    is_tarred: False
    tarred_audio_filepaths: null
    tarred_shard_strategy: "scatter"
    augmentor:
      shift:
        prob: 0.5
        min_shift_ms: -5.0
        max_shift_ms: 5.0
      white_noise:
        prob: 0.5
        min_level: -90
        max_level: -46

  validation_ds:
    manifest_filepath: ???
    sample_rate: 16000
    labels: ['background', 'speech']
    batch_size: 16
    shuffle: False
    val_loss_idx: 0

  test_ds:
    manifest_filepath: null
    sample_rate: 16000
    labels: ['background', 'speech']
    batch_size: 128
    shuffle: False
    test_loss_idx: 0

  preprocessor:
    _target_: nemo.collections.asr.modules.AudioToMFCCPreprocessor
    window_size: 0.025
    window_stride: 0.01
    window: "hann"
    n_mels: &n_mels 64
    n_mfcc: *n_mels
    n_fft: 512

  spec_augment:
    _target_: nemo.collections.asr.modules.SpectrogramAugmentation
    freq_masks: 2
    time_masks: 2
    freq_width: 15
    time_width: 25
    rect_masks: 5
    rect_time: 25
    rect_freq: 15

  encoder:
    _target_: nemo.collections.asr.modules.ConvASREncoder
    feat_in: *n_mels
    activation: relu
    conv_mask: true

    jasper:
      - filters: 128
        repeat: 1
        kernel: [11]
        stride: [1]
        dilation: [1]
        dropout: 0.3
        residual: false
        separable: true
        kernel_size_factor: 1.0

      - filters: 64
        repeat: 2
        kernel: [13]
        stride: [1]
        dilation: [1]
        dropout: 0.3
        residual: true
        separable: true
        kernel_size_factor: 1.0

      - filters: 64
        repeat: 2
        kernel: [15]
        stride: [1]
        dilation: [1]
        dropout: 0.3
        residual: true
        separable: true
        kernel_size_factor: 1.0

      - filters: 64
        repeat: 2
        kernel: [17]
        stride: [1]
        dilation: [1]
        dropout: 0.3
        residual: true
        separable: true
        kernel_size_factor: 1.0

      - filters: 128
        repeat: 1
        kernel: [29]
        stride: [1]
        dilation: [2]
        dropout: 0.3
        residual: false
        separable: true
        kernel_size_factor: 1.0

      - filters: &enc_final_filters 128
        repeat: 1
        kernel: [1]
        stride: [1]
        dilation: [1]
        dropout: 0.3
        residual: false

  decoder:
    _target_: nemo.collections.asr.modules.ConvASRDecoderClassification
    feat_in: *enc_final_filters
    return_logits: true
    pooling_type: 'avg'

  optim:
    name: sgd
    lr: 0.01
    # optimizer arguments
    weight_decay: 0.001
    momentum: 0.9

    # scheduler setup
    sched:
      name: PolynomialHoldDecayAnnealing
      # Scheduler params
      power: 2.0
      warmup_ratio: 0.05
      hold_ratio: 0.45
      min_lr: 0.001
      last_epoch: -1

trainer:
  gpus: 0 # number of gpus
  max_epochs: 150
  max_steps: null # computed at runtime if not set
  num_nodes: 1
  accelerator: ddp
  accumulate_grad_batches: 1
  checkpoint_callback: False  # Provided by exp_manager
  logger: False  # Provided by exp_manager
  log_every_n_steps: 1  # Interval of logging.
  val_check_interval: 1.0  # Set to 0.45 to check 4 times per epoch, or an int for number of iterations

exp_manager:
  exp_dir: null
  name: *name
  create_tensorboard_logger: True
  create_checkpoint_callback: True
  create_wandb_logger: False
  wandb_logger_kwargs:
    name: null
    project: null

hydra:
  run:
    dir: .
  job_logging:
    root:
      handlers: null
```

Would appreciate your help.

Omar.

Hi @OmarHory  Thanks for your questions. 

> My dataset totals to 7 hours of speech and 7 hours of background. Is that enough for training the VAD?

In [MarbleNet](https://arxiv.org/pdf/2010.13886.pdf)  we have intotal 160,994 segments (160,994 * 0.63s /60/60=28.2h) for training. I'm not sure if 14 hours data is enough. Maybe you can do more data augmentation such as noise augmentation and RIR augmentation as described [here](https://github.com/NVIDIA/NeMo/blob/main/tutorials/asr/05_Online_Noise_Augmentation.ipynb), or you can also use other datasets such as [MUSAN](https://arxiv.org/abs/1510.08484) and [AMI meeting corpus](https://groups.inf.ed.ac.uk/ami/corpus/)  to enlarge your dataset. 

> I would like to know how to be sure that Noise Augmentation is activated

Yes I see you have them in your config so they should be activated. 

> Spectrogram Augmentation has 0 params, does that mean it is not activated?

Params here is the trainable parameters.

Thank you so much for your useful answer @fayejf ! 
I am closing the issue.