class_docstr: A low shelf filter is a filter that either boosts (increases amplitude) or cuts
  (decreases amplitude) frequencies below a certain center frequency. This transform
  applies a low-shelf filter at a specific center frequency in hertz.
  The gain at DC frequency is controlled by `{min,max}_gain_db` (note: can be positive or negative!).
  Filter coefficients are taken from the W3 Audio EQ Cookbook: https://www.w3.org/TR/audio-eq-cookbook/
docstr: :param min_center_freq: The minimum center frequency of the shelving filter
  :param max_center_freq: The maximum center frequency of the shelving filter
  :param min_gain_db: The minimum gain at DC (0 Hz)
  :param max_gain_db: The maximum gain at DC (0 Hz)
  :param min_q: The minimum quality factor q. The higher the Q, the steeper the
      transition band will be.
  :param max_q: The maximum quality factor q. The higher the Q, the steeper the
      transition band will be.
code: def __init__(
      self,
      min_center_freq: float = 50.0,
      max_center_freq: float = 4000.0,
      min_gain_db: float = -18.0,
      max_gain_db: float = 18.0,
      min_q: float = 0.1,
      max_q: float = 0.999,
      p: float = 0.5,
  ):
      """
      :param min_center_freq: The minimum center frequency of the shelving filter
      :param max_center_freq: The maximum center frequency of the shelving filter
      :param min_gain_db: The minimum gain at DC (0 Hz)
      :param max_gain_db: The maximum gain at DC (0 Hz)
      :param min_q: The minimum quality factor q. The higher the Q, the steeper the
          transition band will be.
      :param max_q: The maximum quality factor q. The higher the Q, the steeper the
          transition band will be.
      """
  
      assert (
          min_center_freq <= max_center_freq
      ), "`min_center_freq` should be no greater than `max_center_freq`"
      assert (
          min_gain_db <= max_gain_db
      ), "`min_gain_db` should be no greater than `max_gain_db`"
  
      assert (
          0 < min_q <= 1
      ), "`min_q` should be greater than 0 and less or equal to 1"
      assert (
          0 < max_q <= 1
      ), "`max_q` should be greater than 0 and less or equal to 1"
  
      super().__init__(p)
  
      self.min_center_freq = min_center_freq
      self.max_center_freq = max_center_freq
  
      self.min_gain_db = min_gain_db
      self.max_gain_db = max_gain_db
  
      self.min_q = min_q
      self.max_q = max_q
  
file_path: audiomentations/audiomentations/augmentations/low_shelf_filter.py
imports: import random
  import numpy
  from numpy.typing import NDArray
  from scipy.signal import sosfilt, sosfilt_zi
  from audiomentations.core.transforms_interface import BaseWaveformTransform
  from audiomentations.core.utils import convert_frequency_to_mel, convert_mel_to_frequency
label_desc: Use image node_id 1 to create a new LowShelfFilter object from inherited base classes: BaseWaveformTransform with example: obj = LowShelfFilter(min_center_freq, max_center_freq, min_gain_db, max_gain_db, min_q, max_q, p)