code: def freq_mask(spec, F=30, num_masks=1, replace_with_zero=False):
      """Frequency masking
  
      :param torch.Tensor spec: input tensor with shape (T, dim)
      :param int F: maximum width of each mask
      :param int num_masks: number of masks
      :param bool replace_with_zero: if True, masked parts will be filled with 0,
          if False, filled with mean
      """
      cloned = spec.unsqueeze(0).clone()
      num_mel_channels = cloned.shape[2]
  
      for i in range(0, num_masks):
          f = random.randrange(0, F)
          f_zero = random.randrange(0, num_mel_channels - f)
  
          # avoids randrange error if values are equal and range is empty
          if f_zero == f_zero + f:
              return cloned.squeeze(0)
  
          mask_end = random.randrange(f_zero, f_zero + f)
          if replace_with_zero:
              cloned[0][:, f_zero:mask_end] = 0
          else:
              cloned[0][:, f_zero:mask_end] = cloned.mean()
      return cloned.squeeze(0)
  
file_path: espnet/espnet/utils/spec_augment.py
imports: import random
  import torch
label_desc: Use image node_id 3 for calling a global function with example usage: freq_mask(spec, F, num_masks, replace_with_zero) and returns: cloned, cloned