librosa.core.get_duration

librosa.core.get_duration(y=None, sr=22050, S=None, n_fft=2048, hop_length=512, center=True, filename=None)[source]

Compute the duration (in seconds) of an audio time series, feature matrix, or filename.

Parameters:
y : np.ndarray [shape=(n,), (2, n)] or None

audio time series

sr : number > 0 [scalar]

audio sampling rate of y

S : np.ndarray [shape=(d, t)] or None

STFT matrix, or any STFT-derived matrix (e.g., chromagram or mel spectrogram).

n_fft : int > 0 [scalar]

FFT window size for S

hop_length : int > 0 [ scalar]

number of audio samples between columns of S

center : boolean
  • If True, S[:, t] is centered at y[t * hop_length]
  • If False, then S[:, t] begins at y[t * hop_length]
filename : str

If provided, all other parameters are ignored, and the duration is calculated directly from the audio file. Note that this avoids loading the contents into memory, and is therefore useful for querying the duration of long files.

Returns:
d : float >= 0

Duration (in seconds) of the input time series or spectrogram.

Examples

>>> # Load the example audio file
>>> y, sr = librosa.load(librosa.util.example_audio_file())
>>> librosa.get_duration(y=y, sr=sr)
61.44
>>> # Or directly from an audio file
>>> librosa.get_duration(filename=librosa.util.example_audio_file())
61.4
>>> # Or compute duration from an STFT matrix
>>> y, sr = librosa.load(librosa.util.example_audio_file())
>>> S = librosa.stft(y)
>>> librosa.get_duration(S=S, sr=sr)
61.44
>>> # Or a non-centered STFT matrix
>>> S_left = librosa.stft(y, center=False)
>>> librosa.get_duration(S=S_left, sr=sr)
61.3471201814059