librosax.feature.spectral_centroid

spectral_centroid(*, y: Array | None = None, sr: float = 22050, S: Array | None = None, n_fft: int = 2048, hop_length: int = 512, freq: Array | None = None, win_length: int | None = None, window: str = 'hann', center: bool = True, pad_mode: str = 'constant') Array[source]

Compute the spectral centroid.

Each frame of a magnitude spectrogram is normalized and treated as a distribution over frequency bins, from which the mean (centroid) is extracted per frame.

More precisely, the centroid at frame t is defined as:

centroid[t] = sum_k S[k, t] * freq[k] / (sum_j S[j, t])

where S is a magnitude spectrogram, and freq is the array of frequencies (e.g., FFT frequencies in Hz) of the rows of S.

Users should ensure S is real-valued and non-negative.

Parameters:
  • y – Audio time series. Multichannel is supported.

  • sr – Audio sampling rate

  • S – (optional) Pre-computed spectrogram magnitude

  • n_fft – FFT window size

  • hop_length – Hop length for STFT

  • freq – Center frequencies for spectrogram bins. If None, FFT bin center frequencies are used.

  • win_length – Window length

  • window – Window function

  • center – If True, pad the signal

  • pad_mode – Padding mode

Returns:

Spectral centroid frequencies [shape=(…, 1, t)]

Return type:

jnp.ndarray