librosa.estimate_tuning
- librosa.estimate_tuning(*, y=None, sr=22050, S=None, n_fft=2048, resolution=0.01, bins_per_octave=12, **kwargs)[source]
Estimate the tuning of an audio time series or spectrogram input.
- Parameters:
- ynp.ndarray [shape=(…, n)] or None
audio signal. Multi-channel is supported..
- srnumber > 0 [scalar]
audio sampling rate of
y
- Snp.ndarray [shape=(…, d, t)] or None
magnitude or power spectrogram
- n_fftint > 0 [scalar] or None
number of FFT bins to use, if
y
is provided.- resolutionfloat in (0, 1)
Resolution of the tuning as a fraction of a bin. 0.01 corresponds to measurements in cents.
- bins_per_octaveint > 0 [scalar]
How many frequency bins per octave
- **kwargsadditional keyword arguments
Additional arguments passed to
piptrack
- Returns:
- tuning: float in [-0.5, 0.5)
estimated tuning deviation (fractions of a bin).
Note that if multichannel input is provided, a single tuning estimate is provided spanning all channels.
See also
piptrack
Pitch tracking by parabolic interpolation
Examples
With time-series input
>>> y, sr = librosa.load(librosa.ex('trumpet')) >>> librosa.estimate_tuning(y=y, sr=sr) -0.08000000000000002
In tenths of a cent
>>> librosa.estimate_tuning(y=y, sr=sr, resolution=1e-3) -0.016000000000000014
Using spectrogram input
>>> S = np.abs(librosa.stft(y)) >>> librosa.estimate_tuning(S=S, sr=sr) -0.08000000000000002
Using pass-through arguments to
librosa.piptrack
>>> librosa.estimate_tuning(y=y, sr=sr, n_fft=8192, ... fmax=librosa.note_to_hz('G#9')) -0.08000000000000002