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: Identify maskers.
  
  Possible maskers are local PSD maxima. Following Qin et al., all maskers are treated as tonal. Thus neglecting
  the nontonal type.
  
  :param psd_vector: PSD vector of shape `(window_size // 2 + 1)`.
  :return: Possible PSD maskers and indices.
code: def find_maskers(
      psd_vector: np.ndarray,
  ) -> Tuple[np.ndarray, np.ndarray]:
      """
      Identify maskers.
  
      Possible maskers are local PSD maxima. Following Qin et al., all maskers are treated as tonal. Thus neglecting
      the nontonal type.
  
      :param psd_vector: PSD vector of shape `(window_size // 2 + 1)`.
      :return: Possible PSD maskers and indices.
      """
      # identify maskers. For simplification it is assumed that all maskers are tonal (vs. nontonal).
      masker_idx = ss.argrelmax(psd_vector)[0]
  
      # smooth maskers with their direct neighbors
      psd_maskers = 10 * np.log10(
          np.sum(
              [
                  10 ** (psd_vector[masker_idx + i] / 10)
                  for i in range(-1, 2)
              ],
              axis=0,
          )
      )
      return psd_maskers, masker_idx
  
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 10 for calling the PsychoacousticMasker obj's underlying member method code with example usage: obj.find_maskers(psd_vector) and returns: psd_maskers,  masker_idx