librosa.filters.window_sumsquare

librosa.filters.window_sumsquare(*, window, n_frames, hop_length=512, win_length=None, n_fft=2048, dtype=<class 'numpy.float32'>, norm=None)[source]

Compute the sum-square envelope of a window function at a given hop length.

This is used to estimate modulation effects induced by windowing observations in short-time Fourier transforms.

Parameters:
windowstring, tuple, number, callable, or list-like

Window specification, as in get_window

n_framesint > 0

The number of analysis frames

hop_lengthint > 0

The number of samples to advance between frames

win_length[optional]

The length of the window function. By default, this matches n_fft.

n_fftint > 0

The length of each analysis frame.

dtypenp.dtype

The data type of the output

norm{np.inf, -np.inf, 0, float > 0, None}

Normalization mode used in window construction. Note that this does not affect the squaring operation.

Returns:
wssnp.ndarray, shape=``(n_fft + hop_length * (n_frames - 1))``

The sum-squared envelope of the window function

Examples

For a fixed frame length (2048), compare modulation effects for a Hann window at different hop lengths:

>>> n_frames = 50
>>> wss_256 = librosa.filters.window_sumsquare(window='hann', n_frames=n_frames, hop_length=256)
>>> wss_512 = librosa.filters.window_sumsquare(window='hann', n_frames=n_frames, hop_length=512)
>>> wss_1024 = librosa.filters.window_sumsquare(window='hann', n_frames=n_frames, hop_length=1024)
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(nrows=3, sharey=True)
>>> ax[0].plot(wss_256)
>>> ax[0].set(title='hop_length=256')
>>> ax[1].plot(wss_512)
>>> ax[1].set(title='hop_length=512')
>>> ax[2].plot(wss_1024)
>>> ax[2].set(title='hop_length=1024')
../_images/librosa-filters-window_sumsquare-1.png