docs: def __rubberband(y, sr, **kwargs):
      '''Execute rubberband
  
      Parameters
      ----------
      y : np.ndarray [shape=(n,) or (n, c)]
          Audio time series, either single or multichannel
  
      sr : int > 0
          sampling rate of y
  
      **kwargs
          keyword arguments to rubberband
  
      Returns
      -------
      y_mod : np.ndarray [shape=(n,) or (n, c)]
          `y` after rubberband transformation
  
      '''
  
      assert sr > 0
  
      # Get the input and output tempfile
      fd, infile = tempfile.mkstemp(suffix='.wav')
      os.close(fd)
      fd, outfile = tempfile.mkstemp(suffix='.wav')
      os.close(fd)
  
      # dump the audio
      sf.write(infile, y, sr)
  
      try:
          # Execute rubberband
          arguments = [__RUBBERBAND_UTIL, '-q']
  
          for key, value in six.iteritems(kwargs):
              arguments.append(str(key))
              arguments.append(str(value))
  
          arguments.extend([infile, outfile])
  
          subprocess.check_call(arguments, stdout=DEVNULL, stderr=DEVNULL)
  
          # Load the processed audio.
          y_out, _ = sf.read(outfile, always_2d=True)
  
          # make sure that output dimensions matches input
          if y.ndim == 1:
              y_out = np.squeeze(y_out)
  
      except OSError as exc:
          six.raise_from(RuntimeError('Failed to execute rubberband. '
                                      'Please verify that rubberband-cli '
                                      'is installed.'),
                         exc)
  
      finally:
          # Remove temp files
          os.unlink(infile)
          os.unlink(outfile)
  
      return y_out