peterf@2: { peterf@2: "metadata": { peterf@2: "name": "", peterf@2: "signature": "sha256:86e9ec491930783959a81006aa94d67d1d51cd38090b58fd916b12717020fae9" peterf@2: }, peterf@2: "nbformat": 3, peterf@2: "nbformat_minor": 0, peterf@2: "worksheets": [ peterf@2: { peterf@2: "cells": [ peterf@2: { peterf@2: "cell_type": "markdown", peterf@2: "metadata": {}, peterf@2: "source": [ peterf@2: "# Audio effects and playback with Librosa and IPython Notebook\n", peterf@2: "\n", peterf@2: "This notebook will demonstrate how to do audio effects processing with librosa and IPython notebook. You will need IPython 2.0 or later.\n", peterf@2: "\n", peterf@2: "By the end of this notebook, you'll know how to do the following:\n", peterf@2: "\n", peterf@2: " - Play audio in the browser\n", peterf@2: " - Effect transformations such as harmonic/percussive source separation, time stretching, and pitch shifting\n", peterf@2: " - Decompose and reconstruct audio signals with non-negative matrix factorization\n", peterf@2: " - Visualize spectrogram data" peterf@2: ] peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "import librosa\n", peterf@2: "import IPython.display\n", peterf@2: "import numpy as np" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [], peterf@2: "prompt_number": 17 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "import matplotlib.pyplot as plt\n", peterf@2: "%matplotlib inline" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [], peterf@2: "prompt_number": 18 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Load the example track\n", peterf@2: "y, sr = librosa.load(librosa.util.example_audio_file())" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [], peterf@2: "prompt_number": 34 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Play it back!\n", peterf@2: "IPython.display.Audio(data=y, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 35, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 35 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# How about separating harmonic and percussive components?\n", peterf@2: "y_h, y_p = librosa.effects.hpss(y)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [], peterf@2: "prompt_number": 36 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Play the harmonic component\n", peterf@2: "IPython.display.Audio(data=y_h, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 37, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 37 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Play the percussive component\n", peterf@2: "IPython.display.Audio(data=y_p, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 38, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 38 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Pitch shifting? Let's gear-shift by a major third (4 semitones)\n", peterf@2: "y_shift = librosa.effects.pitch_shift(y, sr, 7)\n", peterf@2: "\n", peterf@2: "IPython.display.Audio(data=y_shift, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 39, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 39 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Or time-stretching? Let's slow it down\n", peterf@2: "y_slow = librosa.effects.time_stretch(y, 0.5)\n", peterf@2: "\n", peterf@2: "IPython.display.Audio(data=y_slow, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 40, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 40 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# How about something more advanced? Let's decompose a spectrogram with NMF, and then resynthesize an individual component\n", peterf@2: "D = librosa.stft(y)\n", peterf@2: "\n", peterf@2: "# Separate the magnitude and phase\n", peterf@2: "S, phase = librosa.magphase(D)\n", peterf@2: "\n", peterf@2: "# Decompose by nmf\n", peterf@2: "components, activations = librosa.decompose.decompose(S, n_components=8, sort=True)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [], peterf@2: "prompt_number": 41 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Visualize the components and activations, just for fun\n", peterf@2: "\n", peterf@2: "plt.figure(figsize=(12,4))\n", peterf@2: "\n", peterf@2: "plt.subplot(1,2,1)\n", peterf@2: "librosa.display.specshow(librosa.logamplitude(components**2.0, ref_power=np.max), y_axis='log')\n", peterf@2: "plt.xlabel('Component')\n", peterf@2: "plt.ylabel('Frequency')\n", peterf@2: "plt.title('Components')\n", peterf@2: "\n", peterf@2: "plt.subplot(1,2,2)\n", peterf@2: "librosa.display.specshow(activations)\n", peterf@2: "plt.xlabel('Time')\n", peterf@2: "plt.ylabel('Component')\n", peterf@2: "plt.title('Activations')\n", peterf@2: "\n", peterf@2: "plt.tight_layout()" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "metadata": {}, peterf@2: "output_type": "display_data", peterf@2: "png": "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\n", peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 42 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "print components.shape, activations.shape" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "output_type": "stream", peterf@2: "stream": "stdout", peterf@2: "text": [ peterf@2: "(1025, 8) (8, 2647)\n" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 43 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Play back the reconstruction\n", peterf@2: "# Reconstruct a spectrogram by the outer product of component k and its activation\n", peterf@2: "D_k = components.dot(activations)\n", peterf@2: "\n", peterf@2: "# invert the stft after putting the phase back in\n", peterf@2: "y_k = librosa.istft(D_k * phase)\n", peterf@2: "\n", peterf@2: "# And playback\n", peterf@2: "print 'Full reconstruction'\n", peterf@2: "\n", peterf@2: "IPython.display.Audio(data=y_k, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "output_type": "stream", peterf@2: "stream": "stdout", peterf@2: "text": [ peterf@2: "Full reconstruction\n" peterf@2: ] peterf@2: }, peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 44, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 44 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Resynthesize. How about we isolate just first (lowest) component?\n", peterf@2: "k = 0\n", peterf@2: "\n", peterf@2: "# Reconstruct a spectrogram by the outer product of component k and its activation\n", peterf@2: "D_k = np.multiply.outer(components[:, k], activations[k])\n", peterf@2: "\n", peterf@2: "# invert the stft after putting the phase back in\n", peterf@2: "y_k = librosa.istft(D_k * phase)\n", peterf@2: "\n", peterf@2: "# And playback\n", peterf@2: "print 'Component #', k\n", peterf@2: "\n", peterf@2: "IPython.display.Audio(data=y_k, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "output_type": "stream", peterf@2: "stream": "stdout", peterf@2: "text": [ peterf@2: "Component # 0\n" peterf@2: ] peterf@2: }, peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 45, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 45 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Resynthesize. How about we isolate a middle-frequency component?\n", peterf@2: "k = len(activations) / 2\n", peterf@2: "\n", peterf@2: "# Reconstruct a spectrogram by the outer product of component k and its activation\n", peterf@2: "D_k = np.multiply.outer(components[:, k], activations[k])\n", peterf@2: "\n", peterf@2: "# invert the stft after putting the phase back in\n", peterf@2: "y_k = librosa.istft(D_k * phase)\n", peterf@2: "\n", peterf@2: "# And playback\n", peterf@2: "print 'Component #', k\n", peterf@2: "\n", peterf@2: "IPython.display.Audio(data=y_k, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "output_type": "stream", peterf@2: "stream": "stdout", peterf@2: "text": [ peterf@2: "Component # 4\n" peterf@2: ] peterf@2: }, peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 46, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 46 peterf@2: }, peterf@2: { peterf@2: "cell_type": "code", peterf@2: "collapsed": false, peterf@2: "input": [ peterf@2: "# Resynthesize. How about we isolate just last (highest) component?\n", peterf@2: "k = -1\n", peterf@2: "\n", peterf@2: "# Reconstruct a spectrogram by the outer product of component k and its activation\n", peterf@2: "D_k = np.multiply.outer(components[:, k], activations[k])\n", peterf@2: "\n", peterf@2: "# invert the stft after putting the phase back in\n", peterf@2: "y_k = librosa.istft(D_k * phase)\n", peterf@2: "\n", peterf@2: "# And playback\n", peterf@2: "print 'Component #', k\n", peterf@2: "\n", peterf@2: "IPython.display.Audio(data=y_k, rate=sr)" peterf@2: ], peterf@2: "language": "python", peterf@2: "metadata": {}, peterf@2: "outputs": [ peterf@2: { peterf@2: "output_type": "stream", peterf@2: "stream": "stdout", peterf@2: "text": [ peterf@2: "Component # -1\n" peterf@2: ] peterf@2: }, peterf@2: { peterf@2: "html": [ peterf@2: "\n", peterf@2: " \n", peterf@2: " " peterf@2: ], peterf@2: "metadata": {}, peterf@2: "output_type": "pyout", peterf@2: "prompt_number": 47, peterf@2: "text": [ peterf@2: "" peterf@2: ] peterf@2: } peterf@2: ], peterf@2: "prompt_number": 47 peterf@2: } peterf@2: ], peterf@2: "metadata": {} peterf@2: } peterf@2: ] peterf@2: }