code: def _manipulate(self, audio, sampling_rate, factor):
      stft = librosa.core.stft(audio)
      freq_dim, time_dim = stft.shape
      data_type = type(stft[0][0])
  
      factors = self.get_scale_factors(
          freq_dim, sampling_rate, alpha=factor
      )
      factors *= (freq_dim - 1) / max(factors)
      new_stft = np.zeros([freq_dim, time_dim], dtype=data_type)
  
      for i in range(freq_dim):
          # first and last freq
          if i == 0 or i + 1 >= freq_dim:
              new_stft[i, :] += stft[i, :]
          else:
              warp_up = factors[i] - np.floor(factors[i])
              warp_down = 1 - warp_up
              pos = int(np.floor(factors[i]))
  
              new_stft[pos, :] += warp_down * stft[i, :]
              new_stft[pos + 1, :] += warp_up * stft[i, :]
  
      return librosa.core.istft(new_stft)
  
file_path: nlpaug/nlpaug/model/audio/vtlp.py
imports: import numpy
  from nlpaug.model.audio import Audio
label_desc: Use image node_id 3 for calling the Vtlp obj's underlying member method code with example usage: obj._manipulate(audio, sampling_rate, factor) and returns: librosa