librosa.core.estimate_tuning¶
-
librosa.core.
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: - y: np.ndarray [shape=(n,)] or None
audio signal
- sr : number > 0 [scalar]
audio sampling rate of y
- S: np.ndarray [shape=(d, t)] or None
magnitude or power spectrogram
- n_fft : int > 0 [scalar] or None
number of FFT bins to use, if y is provided.
- resolution : float in (0, 1)
Resolution of the tuning as a fraction of a bin. 0.01 corresponds to measurements in cents.
- bins_per_octave : int > 0 [scalar]
How many frequency bins per octave
- kwargs : additional keyword arguments
Additional arguments passed to
piptrack
Returns: - tuning: float in `[-0.5, 0.5)`
estimated tuning deviation (fractions of a bin)
See also
piptrack
- Pitch tracking by parabolic interpolation
Examples
>>> # With time-series input >>> y, sr = librosa.load(librosa.util.example_audio_file()) >>> librosa.estimate_tuning(y=y, sr=sr) 0.089999999999999969
>>> # In tenths of a cent >>> y, sr = librosa.load(librosa.util.example_audio_file()) >>> librosa.estimate_tuning(y=y, sr=sr, resolution=1e-3) 0.093999999999999972
>>> # Using spectrogram input >>> y, sr = librosa.load(librosa.util.example_audio_file()) >>> S = np.abs(librosa.stft(y)) >>> librosa.estimate_tuning(S=S, sr=sr) 0.089999999999999969
>>> # Using pass-through arguments to `librosa.piptrack` >>> y, sr = librosa.load(librosa.util.example_audio_file()) >>> librosa.estimate_tuning(y=y, sr=sr, n_fft=8192, ... fmax=librosa.note_to_hz('G#9')) 0.070000000000000062