{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"FMP\"\n", "\"AudioLabs\"\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"C2\"\n", "

STFT: Padding

\n", "
\n", "\n", "
\n", "\n", "

\n", "In this notebook, we discuss various padding strategies that become important when implementing and interpreting an STFT. For details on the STFT, we refer to Section 2.1.4 of [Müller, FMP, Springer 2015] and the notebook on STFT Basics.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Padding Variants" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When using the STFT with window size $N\\in\\mathbb{N}$, two aspects of padding can be considered:\n", "\n", "1. The center of the first window corresponds to the signal's sample index $N/2$. However, often it is convenient to think of the first window corresponding to the time of $0$. To achieve this, one can pad $N/2$ samples at the beginning of the signal.\n", "\n", "2. The last window's time range is fully contained in the signal's time range. Therefore, the end of the signal is not covered by as many overlapping windows as the rest of the signal. To counteract this, one can use padding at the end of the signal. The exact amount of necessary padding depends on the hop size as well as the window size. However, for practical reasons, one often just uses a padding length of $N/2$ again.\n", "\n", "One padding strategy is to expand the signal with zeros (**zero padding**). A different strategy is to expand the signal with samples by mirroring the signal on the first and last sample, respectively (**reflect padding**). Several other padding strategies are described in the documentation of [`numpy.pad`](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.pad.html). The following example illustrates several padding strategies using a simple example." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:33.547092Z", "iopub.status.busy": "2024-02-15T08:59:33.546798Z", "iopub.status.idle": "2024-02-15T08:59:36.112307Z", "shell.execute_reply": "2024-02-15T08:59:36.111734Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No padding:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Zero padding:\n" ] }, { "data": { "image/png": "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pOWNyn5c31M9b/6hlJSUsKCgwGt6paWlXtUrKyvrtG8QirbjTrBDY10SCsuxEUUwMYQOYCyAz23sxQAWt1be2rN66tQp05+lsrKS9913Hw8cOGBIb25udkvHU6qrq5mens4LLrjAsAWGdSgNAO+99142NjayqamJn3/+OefNm8eoqCg9Pz09nR9++KG+VcX06dP5m9/8hgA4a9YsXnPNNQTAAQMGcMKECYyLizPMDQkKCmJAQAAXLFjAZ599ljExMYyIiNCHBX/729/y5Zdf1ht4216zESNGcP78+bzzzjuZlpZGAAwODqaI8KabbuLGjRuZmZmppwNgZmYmFy1axAkTJjApKcmgCYDjx4/nqlWrOGDAAALgoEGDdP8fffRRZmRk6AGL7X3WAAUAo6KiuGjRIsbExDA+Pp5r1qxh7969GRERwT//+c/83e9+x7CwMP3e4cOH89577+WXX37J+vp6fv311/rnFRF+/PHH+u/miSeeIADOmTOnQ3q/amtrOWbMGALgTTfdxNraWtbX13PBggW6/+Hh4bzzzjv5zDPPcP78+fp3Z3+FhYUxKCiI99xzD7dt28brrrtO782ENk/o0ksv5eDBg9m9e3fGxcUxPDycQUFBHDJkCG+55Ra+9tprfOihhzhlyhSmp6dzxowZfPLJJ/nBBx/w8ccf59y5czllyhTOnDmT1113HW+++WY++OCDXL58OR977DHedtttvO6667h06VJu2rSJVVVV3pmzAyASwHUA1gGohmWDr2mu7jNzddZgR6FQuI+7wY4W5FwD4D0A2wA8DOACE/ddC2CNjX0DgOedlOezzz7bQd+C9zlx4kSLuX5VVVWcN28e33zzTYf3VFdX88MPP+Rzzz2nzyEhLUNeIkIAXLx4sT7X49NPP+XIkSM5duxY3nTTTVy9ejW/+uorlpaWsqioiHfddRdDQ0MJgBMnTmReXh6rq6t5991363ojR47k3/72N27fvp2vv/467777bl555ZXs2bMnRYTTpk3j+vXrefbsWd5+++16I5qamsq3336b5eXlfOGFFzh48GB269aN48aN4//8z//wj3/8Iz/77DMeOHCAK1asYO/evfWGd/369STJ9evX6w34mDFj+PHHH7OpqYlFRUX85ptvuHbtWi5dupTz5s3j73//ez1wzMnJ0Xu+kpKSDD12BQUF/Pvf/95q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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Reflect padding:\n" ] }, { "data": { "image/png": "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v5sN9771VsfV5S7YsVgsvPHGGwmAr732GkeMGMHExES+9NJLrYL1Sy+9VA+GAs22bdv42GOP6UGrxWLhiBEjOGzYML766qv6///IyEjeeOONAS9f4Tvr1q0jAGZmZvLgwYMkyccee4wAuHr1apaUlHDatGkMCwszfcH0hkWLFhEA//73v+uBb0JCAnNycvS/meOVQAU77wJIc5evPa6cnBxaLBYmJyfzuuuu0z/o+eefb/rG2VZ0796dM2fO1O1LLrmEAwYM8FmvZ8+evOKKK3R72rRp7N27t896ffv25aWXXqrbV111lanHw1sGDRrEiRMn6vbs2bOZnp6u9yh4y9ChQ3n++efr9vXXX2/q0VAc3/gY7HwP63D7+wB+D2AqgHxvdVxdzoKdiooKfvHFF7z99tsJQA/UCwsLGRcXRwDMyMhgQ0OD/kxxcTEffPBBNjY2BualueHll18mAEZGRvLss89mS0sLb731VoaHh+uNKsl280fRGovFwrPOOovJycmMjo7m6aefzn379jE+Pp6TJk0y5TV+WfClnHPOOYcAGBoayrfeeouvv/46AfDdd9/V8z3zzDP8n//5H70n93ggUMHOGlhPO18F4CPb9aG759ri0iqladOmsWfPniSt32K7du3KW265JbBvzwEzZ87UG3st6Lr++ut91rv22muZkpLClpYWWiwWpqen+9X9PXfuXCYkJOh/xJmZmbzqqqt81rvlllsYGxurV5S9e/fmtGnTfNa77bbbGBUVpTcOAwYM4CWXXOKznqJz4WOwcxqAWAAnA3jdFvSc4a2Oq0urVywWC3/88Ufed999zM7O1oeEAHDmzJmmb8dLly4lAD788MNt9r48oaqqirGxsQwPD+f27dtJkgUFBRQRzps3j01NTZw/fz7Dw8NbDRcr2oavv/6ab731lv4l7r333iMAvvzyy1y+fDkBMCUlhSEhIdy8eXNAy96+fTtHjhzJDz/8kKS1fczOzmbfvn3Z2NjIhx9+WP+bvv/++wNadjAJVLBzjuEaB2AegK3unnOjeSWArQAsAEZ6+pxWKT3//PMEwJ07d+rzUt5+++22eYsGtGGXrVu36nNQXn/9dZ/1tG7HvLw8btq0iQD4r3/9y2e9xYsXEwB//vlnbt++nQD4wgsv+Ky3ZMkSfX5UYWEhAfDZZ5/1WU/7j/71119zz549BMAn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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from matplotlib import pyplot as plt\n", "import librosa\n", "from ipywidgets import interact, fixed, FloatSlider\n", "%matplotlib inline\n", "\n", "Fs = 256\n", "duration = 10\n", "omega1 = 1\n", "omega2 = 5\n", "N = int(duration * Fs)\n", "t = np.arange(N) / Fs\n", "t1 = t[:N//2]\n", "t2 = t[N//2:]\n", "\n", "x1 = 1.0 * np.sin(2 * np.pi * omega1 * t1)\n", "x2 = 0.7 * np.sin(2 * np.pi * omega2 * t2)\n", "x = np.concatenate((x1, x2))\n", "\n", "def pad_and_plot(t, x, Fs, pad_len_sec, pad_mode):\n", " \n", " pad_len = int(pad_len_sec * Fs)\n", " \n", " t = np.concatenate((np.arange(-pad_len, 0) / Fs, t, \n", " np.arange(len(x), len(x) + pad_len) / Fs))\n", " x = np.pad(x, pad_len, pad_mode)\n", " N = len(x)\n", " \n", " plt.figure(figsize=(8, 1.5))\n", " ax1 = plt.subplot(1, 2, 1)\n", " plt.plot(t, x, c='k')\n", " #plt.xlim([t[0], t[-1]])\n", " plt.xlim([-1.0, 11.0])\n", " plt.xlabel('Time (seconds)')\n", " plt.ylabel('Amplitude')\n", "\n", " ax2 = plt.subplot(1, 2, 2)\n", " X = np.abs(np.fft.fft(x)) / Fs\n", " freq = np.fft.fftfreq(N, d=1/Fs)\n", " X = X[:N//2]\n", " freq = freq[:N//2]\n", " plt.plot(freq, X, c='k')\n", " plt.xlim([0, 7])\n", " plt.ylim([0, 3])\n", " plt.xlabel('Frequency (Hz)')\n", " plt.ylabel('Magnitude')\n", " plt.tight_layout()\n", " plt.show()\n", " \n", " return ax1, ax2\n", " \n", "print('No padding:')\n", "ax1, ax2 = pad_and_plot(t, x, Fs, 0.0, 'constant')\n", "\n", "print('Zero padding:')\n", "ax1, ax2 = pad_and_plot(t, x, Fs, 1.0, 'constant')\n", "\n", "print('Reflect padding:');\n", "ax1, ax2 = pad_and_plot(t, x, Fs, 1.0, 'reflect')\n", "\n", "#print('Interactive interface for experimenting with different padding variants:')\n", "#interact(pad_and_plot,\n", "# t=fixed(t), x=fixed(x), Fs=fixed(Fs),\n", "# pad_len_sec=FloatSlider(min=0, max=duration/2, step=0.1, \n", "# continuous_update=False, value=1.0, description='Pad Length'),\n", "# pad_mode = ['constant',\n", "# 'edge',\n", "# 'linear_ramp',\n", "# 'maximum',\n", "# 'mean',\n", "# 'median',\n", "# 'minimum',\n", "# 'reflect',\n", "# 'symmetric',\n", "# 'wrap']);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Edge Phenomena" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using different padding strategies, the beginning and end of the corresponding spectrograms will be different. When using a hop size smaller than $N/2$, more than one frame will be affected at both beginning and end. The following visualizations illustrate those **edge phenomena**. (Note that in the following visualizations, matrices are aligned; only colored regions correspond to existing frames for the padding strategy considered.)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:36.115501Z", "iopub.status.busy": "2024-02-15T08:59:36.115200Z", "iopub.status.idle": "2024-02-15T08:59:36.786609Z", "shell.execute_reply": "2024-02-15T08:59:36.785872Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def compute_stft(x, Fs, N, H, pad_mode='constant', center=True, color='gray_r'): \n", " X = librosa.stft(x, n_fft=N, hop_length=H, win_length=N, \n", " window='hann', pad_mode=pad_mode, center=center)\n", " Y = np.abs(X) ** 2\n", " Y = Y / np.max(Y)\n", " return Y\n", "\n", "def plot_stft(Y, Fs, N, H, time_offset=0, time_unit='frames', xlim=None, ylim=None, title='', xlabel='', color='hot'):\n", " time_samples = np.arange(Y.shape[1])\n", " if time_unit == 'sec':\n", " time_sec = np.arange(Y.shape[1]) * (H / Fs) + time_offset\n", " extent=[time_sec[0]-H/(2*Fs), time_sec[-1]+H/(2*Fs), 0, Fs/2]\n", " xlabel='Time (seconds)'\n", " else:\n", " time_samples = np.arange(Y.shape[1])\n", " extent=[time_samples[0]-1/2, time_samples[-1]+1/2, 0, Fs/2] \n", " xlabel='Time (frames)' \n", " plt.imshow(Y, cmap=color, aspect='auto', origin='lower', extent=extent)\n", " plt.ylim(ylim)\n", " plt.xlim(xlim)\n", " plt.xlabel(xlabel)\n", " plt.ylabel('Frequency (Hz)')\n", " plt.title(title)\n", " plt.colorbar()\n", "\n", "N = 512\n", "H = 128\n", "xlim_frame = [-2, 22]\n", "xlim_sec = [-1, 11]\n", "ylim_hz = [0, 8]\n", "\n", "plt.figure(figsize=(10, 6))\n", "\n", "# No padding\n", "Y = compute_stft(x, Fs, N, H, pad_mode=None, center=False)\n", "plt.subplot(3, 2, 1)\n", "plot_stft(Y, Fs, N, H, xlim=xlim_frame, ylim=ylim_hz, title='No padding')\n", "\n", "plt.subplot(3, 2, 2)\n", "plot_stft(Y, Fs, N, H, time_offset=N / (2 * Fs), time_unit='sec', xlim=xlim_sec, ylim=ylim_hz, title='No padding')\n", "\n", "# Zero padding\n", "Y = compute_stft(x, Fs, N, H, pad_mode='constant', center=True)\n", "plt.subplot(3, 2, 3)\n", "plot_stft(Y, Fs, N, H, xlim=xlim_frame, ylim=ylim_hz, title='Zero padding')\n", "\n", "plt.subplot(3, 2, 4)\n", "plot_stft(Y, Fs, N, H, time_unit='sec', xlim=xlim_sec, ylim=ylim_hz, title='Zero padding')\n", "\n", "# Reflect padding\n", "Y = compute_stft(x, Fs, N, H, pad_mode='reflect', center=True)\n", "plt.subplot(3, 2, 5)\n", "plot_stft(Y, Fs, N, H, xlim=xlim_frame, ylim=ylim_hz, title='Reflect padding')\n", "\n", "plt.subplot(3, 2, 6)\n", "time_sec = np.arange(Y.shape[1]) * (H / Fs) \n", "plot_stft(Y, Fs, N, H, time_unit='sec', xlim=xlim_sec, ylim=ylim_hz, title='Reflect padding')\n", "\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Acknowledgment: This notebook was created by Meinard Müller and Frank Zalkow.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\"C0\"\"C1\"\"C2\"\"C3\"\"C4\"\"C5\"\"C6\"\"C7\"\"C8\"
" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.16" } }, "nbformat": 4, "nbformat_minor": 1 }