Skip to content

Instantly share code, notes, and snippets.

@kylemcdonald
Created November 16, 2022 07:59
Show Gist options
  • Save kylemcdonald/f96c03e35309e0208025be5495b6ffb0 to your computer and use it in GitHub Desktop.
Save kylemcdonald/f96c03e35309e0208025be5495b6ffb0 to your computer and use it in GitHub Desktop.
Normalize audio based on local peaks.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [],
"source": [
"import librosa\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from scipy.ndimage import gaussian_filter1d, maximum_filter1d\n",
"\n",
"from utils.ffmpeg import auread, auwrite\n",
"from utils.itertools import np_chunks"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"y,sr = auread('data/20221112Performance_Line.wav')\n",
"\n",
"window_sec = 120\n",
"peaks_sec = maximum_filter1d(y, size=sr*window_sec).max(0)[::sr]\n",
"peaks_sec_filtered = gaussian_filter1d(peaks_sec, sigma=window_sec/32)"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x15ea8ce50>]"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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5nUWLlxoJ0+ebB966CH74osv2vPOO8+eeuqpNpFI+PXWhuWrX/2qffTRR+3atWvtM888Yy+44AJbXV2d+f/+3e9+19bW1tr77rvPvvrqq/av//qv7cSJE0vyWKQlk0k7depUe/311w+5fyx8Nnp7e+3KlSvtypUrLWBvvfVWu3LlysyZIfn6PHzkIx+xp5xyin366aft008/bU8++WR7wQUXFPz9ZuNQxyQej9uPf/zjdvLkyfall14a8m9KNBq11lr79ttv25tvvtk+//zzdt26dfYPf/iDPf744+1pp502Ko/JoY5HPn9GRsvxGCljNoxYa+2PfvQj29raasPhsJ01a9aQ011LBXDAr7vvvttaa+3AwICdN2+enTBhgg2FQnbq1Kn28ssvt+3t7UNeZ/fu3faaa66x9fX1try83F5wwQX7PWY0WLBggZ04caINhUK2paXFfvrTn7avv/565vuu69pvfetbtrm52UYiEfve977Xvvrqq0Neo1SORdqDDz5oAfvmm28OuX8sfDYeeeSRA/58XH755dba/H0eurq67CWXXGKrq6ttdXW1veSSS+zOnTsL9C5zc6hjsm7duoP+m/LII49Ya61tb2+3733ve219fb0Nh8P26KOPttdee63t6uoasp/RckwOdTzy+TMyWo7HSDHWWluABoyIiIjIAY3JOSMiIiJSPBRGRERExFcKIyIiIuIrhRERERHxlcKIiIiI+EphRERERHylMCIiIiK+UhgRERERXymMiIiIiK8URkRERMRXCiMiIiLiK4URERER8dX/D5ujXRhy2sjxAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(peaks_sec)\n",
"plt.plot(peaks_sec_filtered)"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [],
"source": [
"n = peaks_sec.shape[0]\n",
"x_input = np.linspace(0, n*sr, n, endpoint=False)\n",
"x_output = np.linspace(0, n*sr, n*sr, endpoint=False)\n",
"interpolated = np.interp(x_output, x_input, peaks_sec_filtered)\n",
"\n",
"# play it safe if this ends with silence\n",
"m = np.argmax(interpolated == 0)\n",
"m = min(m, len(interpolated))\n",
"normalized = y[:,:m] / interpolated[np.newaxis,:m]\n",
"\n",
"auwrite('data/20221112Performance_Line_normalized.wav', normalized, sr)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.13 ('audio')",
"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.9.13"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "9fb6b2ce23c32c803b90c8568136bc999f2cf9a4a2e28c8bf874d739e1dc7066"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment