code: def _phase_vocoder_kernel(
      D, time_steps, phi_advance, d_stretch, phase_acc, scale_buffer
  ):
      """
      Numba optimized kernel to compute the phase vocoder step.
      Args:
          D: Complex spectograms of shape [d, t, complex=2].
          rate: Speed rate, must be float greater than 0.
          time_steps: Numpy ndarray of linearly spaced time steps, shape = [t]
          phi_advance: Precomputed phase advance buffer array of length [n_fft + 1]
          d_stretch: Output complex matrix of shape [d, t / rate, complex=2]
          phase_acc: Phase accumulator initialized to first sample of shape [d, complex=2]
          scale_buffer: Precomputed numpy buffer array of length [n_fft + 1]
      Returns:
          Complex64 ndarray of shape [d, t / rate, complex=2]
      """
      two_pi = 2.0 * np.pi
  
      for t, step in enumerate(time_steps):
          columns = D[:, int(step) : int(step + 2)]
          columns_0 = columns[:, 0]
          columns_1 = columns[:, 1]
  
          # Weighting for linear magnitude interpolation
          alpha = np.mod(step, 1.0)
          mag = (1.0 - alpha) * np.abs(columns_0) + alpha * np.abs(
              columns_1
          )
  
          # Store to output array
          d_stretch[:, t] = mag * np.exp(1.0j * phase_acc)
  
          # Compute phase advance
          dphase = (
              np.angle(columns_1) - np.angle(columns_0) - phi_advance
          )
  
          # Wrap to -pi:pi range
          scale = dphase / two_pi
          np.round(scale, 0, scale_buffer)
  
          dphase = dphase - two_pi * scale_buffer
  
          # Accumulate phase
          phase_acc += phi_advance + dphase
  
      return d_stretch
  
label_desc: Use image node_id 2 for calling a global function with example usage: _phase_vocoder_kernel(D, time_steps, phi_advance, d_stretch, phase_acc, scale_buffer) and returns: d_stretch