class_docstr: Apply a Lowpass-like filterbank with variable octave attenuation that simulates attenuation of
  higher frequencies due to air absorption. This transform is parametrized by temperature,
  humidity, and the distance between audio source and microphone.
  
  This is not a scientifically accurate transform but basically applies a uniform
  filterbank with attenuations given by:
  
  att = exp(- distance * absorption_coefficient)
  
  where distance is the microphone-source assumed distance in meters and `absorption_coefficient`
  is adapted from a lookup table by pyroomacoustics [1]. It can also be seen as a lowpass filter
  with variable octave attenuation.
  
  Note: This only "simulates" the dampening of high frequencies, and does not
  attenuate according to the distance law. Gain augmentation needs to be done separately.
  
  [1] https://github.com/LCAV/pyroomacoustics
docstr: :param min_temperature: Minimum temperature in Celsius (can take a value of either 10.0 or 20.0)
  :param max_temperature: Maximum temperature in Celsius (can take a value of either 10.0 or 20.0)
  :param min_humidity: Minimum humidity in percent (between 30 and 90)
  :param max_humidity: Maximum humidity in percent (between 30 and 90)
  :param min_distance: Minimum microphone-source distance in meters.
  :param max_distance: Maximum microphone-source distance in meters.
  :param p: The probability of applying this transform
code: def __init__(
      self,
      min_temperature: float = 10.0,
      max_temperature: float = 20.0,
      min_humidity: float = 30.0,
      max_humidity: float = 90.0,
      min_distance: float = 10.0,
      max_distance: float = 100.0,
      p=0.5,
  ):
      """
      :param min_temperature: Minimum temperature in Celsius (can take a value of either 10.0 or 20.0)
      :param max_temperature: Maximum temperature in Celsius (can take a value of either 10.0 or 20.0)
      :param min_humidity: Minimum humidity in percent (between 30 and 90)
      :param max_humidity: Maximum humidity in percent (between 30 and 90)
      :param min_distance: Minimum microphone-source distance in meters.
      :param max_distance: Maximum microphone-source distance in meters.
      :param p: The probability of applying this transform
      """
      assert float(min_temperature) in [
          10.0,
          20.0,
      ], "Sorry, the only supported temperatures are either 10 or 20 degrees Celsius"
      assert float(max_temperature) in [
          10.0,
          20.0,
      ], "Sorry, the only supported temperatures are either 10 or 20 degrees Celsius"
      assert min_temperature <= max_temperature
      assert 30 <= min_humidity <= max_humidity <= 90
      assert min_distance > 0.0
      assert max_distance > 0.0
      assert min_distance <= max_distance
  
      super().__init__(p)
  
      self.min_temperature = min_temperature
      self.max_temperature = max_temperature
  
      self.min_humidity = min_humidity
      self.max_humidity = max_humidity
  
      self.min_distance = min_distance
      self.max_distance = max_distance
  
file_path: audiomentations/audiomentations/augmentations/air_absorption.py
imports: import librosa
  import numpy
  from numpy.typing import NDArray
  from audiomentations.core.transforms_interface import BaseWaveformTransform
label_desc: Use image node_id 1 to create a new AirAbsorption object from inherited base classes: BaseWaveformTransform with example: obj = AirAbsorption(min_temperature, max_temperature, min_humidity, max_humidity, min_distance, max_distance, p)