librosa.samples_to_frames

librosa.samples_to_frames(samples, *, hop_length=512, n_fft=None)[source]

Convert sample indices into STFT frames.

Parameters:
samplesint or np.ndarray [shape=(n,)]

sample index or vector of sample indices

hop_lengthint > 0 [scalar]

number of samples between successive frames

n_fftNone or int > 0 [scalar]

Optional: length of the FFT window. If given, time conversion will include an offset of - n_fft // 2 to counteract windowing effects in STFT.

Note

This may result in negative frame indices.

Returns:
framesint or np.ndarray [shape=(n,), dtype=int]

Frame numbers corresponding to the given times:

frames[i] = floor( samples[i] / hop_length )

See also

samples_to_time

convert sample indices to time values

frames_to_samples

convert frame indices to sample indices

Examples

>>> # Get the frame numbers for every 256 samples
>>> librosa.samples_to_frames(np.arange(0, 22050, 256))
array([ 0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,
        7,  7,  8,  8,  9,  9, 10, 10, 11, 11, 12, 12, 13, 13,
       14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20,
       21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
       28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34,
       35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41,
       42, 42, 43])