Algorithms | latest | spectral-centroid
Spectral centroid
The centroid frequency of a spectrum indicates where the center of mass of the spectrum is located. The spectral centroid is commonly associated as a measure of the brightness of a sound. It is computed from the power spectrum
The result is in the range of 0 Hz and the nyquist frequency (half the sampling rate
References
- https://en.wikipedia.org/wiki/Spectral_centroid
- Peeters, G. (2004). A large set of audio features for sound description (similarity and classification) in the CUIDADO project. In CUIDADO IST Project Report (Vol. 54).
Code
INFO
The following snippet is written in a generic and unoptimized manner. The code aims to be comprehensible to programmers familiar with various programming languages and may not represent the most efficient or idiomatic Python practices. Please refer to implementations for optimized implementations in different programming languages.
py
import numpy as np
def spectral_centroid(spectrum: np.ndarray, samplerate: float):
ps = np.abs(spectrum) ** 2
ps_sum = 0.0
ps_sum_weighted = 0.0
for i, magnitude in enumerate(ps):
ps_sum += magnitude
ps_sum_weighted += magnitude * i
return 0.5 * samplerate / (len(ps) - 1) * (ps_sum_weighted / ps_sum)