class_docstr: Implements psychoacoustic model of Lin and Abdulla (2015) following Qin et al. (2019) simplifications.
  
  | Paper link: Lin and Abdulla (2015), https://www.springer.com/gp/book/9783319079738
  | Paper link: Qin et al. (2019), http://proceedings.mlr.press/v97/qin19a.html
docstr: Initialization.
  
  :param window_size: Length of the window. The number of STFT rows is `(window_size // 2 + 1)`.
  :param hop_size: Number of audio samples between adjacent STFT columns.
  :param sample_rate: Sampling frequency of audio inputs.
code: def __init__(
      self,
      window_size: int = 2048,
      hop_size: int = 512,
      sample_rate: int = 16000,
  ) -> None:
      """
      Initialization.
  
      :param window_size: Length of the window. The number of STFT rows is `(window_size // 2 + 1)`.
      :param hop_size: Number of audio samples between adjacent STFT columns.
      :param sample_rate: Sampling frequency of audio inputs.
      """
      self._window_size = window_size
      self._hop_size = hop_size
      self._sample_rate = sample_rate
  
      # init some private properties for lazy loading
      self._fft_frequencies: Optional[np.ndarray] = None
      self._bark: Optional[np.ndarray] = None
      self._absolute_threshold_hearing: Optional[np.ndarray] = None
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import TYPE_CHECKING, Optional, Tuple, Union
  import numpy
  import scipy.signal
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator, LossGradientsMixin, NeuralNetworkMixin
  from art.estimators.pytorch import PyTorchEstimator
  from art.estimators.speech_recognition.speech_recognizer import SpeechRecognizerMixin
  from art.estimators.tensorflow import TensorFlowV2Estimator
  from art.utils import pad_sequence_input
label_desc: Use image node_id 1 to create a new PsychoacousticMasker object  with example: obj = PsychoacousticMasker(window_size, hop_size, sample_rate)