{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Removing 'Ummm's from Audio\n", "===================\n", "\n", "This notebook describes the process of how [the umdone project](https://github.com/scopatz/umdone) removes dreaded 'ummm's - or any other undesirable token - from an audio file. This should be really helpful to podcasters, who typically do this by hand. This requires a training set of data, which you might have to create. Let's start with some imports!" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/scopatz/miniconda3/lib/python3.4/site-packages/librosa/core/audio.py:33: UserWarning: Could not import scikits.samplerate. Falling back to scipy.signal\n", " warnings.warn('Could not import scikits.samplerate. '\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import librosa\n", "from umdone import dtw\n", "from IPython.display import Audio" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, let's assume that we have a set of 'umm's on their own. For demonstration purposes, we will only have one umm." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "umm, sr = librosa.load('umm.wav', sr=None)\n", "Audio(umm, rate=sr, autoplay=False)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nrpM5AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(umm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then suppose that we have an audio file that contains some speech. This speech might include some ummms, but also has a lot of real information in it too! The following sample starts out with \"Well ummm I don't really...\"" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "well, sr = librosa.load('well-umm.wav', sr=None)\n", "Audio(well, rate=sr, autoplay=False)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(well)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wav files have a given sample rate, `sr`, or the number or data points per second. This is important to keep track of because it defines how we deal with real time." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "44100" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Word Detection\n", "===========\n", "The first thing that we want to do is figure out where the words are in the file. We need to do this so that we can compare individual words in the speech to the umms. We'll perform the detection by looking for silences that bound the different peaks.\n", "\n", "The algorithm here does the following:\n", "\n", "* splits the enitre wav into equally sized windows\n", "* evaluates the root-mean squared of each window\n", "* finds where the window's RMS is above a noisy threshold.\n", "\n", "Using some numpy fancy indexing and judicious use of `np.argwhere()`, we can tease out all of the spoken boundaries." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2205" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "window_size = int(sr*0.05)\n", "window_size" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x = well[:-(len(well)%window_size)]\n", "x.shape = (len(x)//window_size), window_size\n", "window_rms = np.sqrt((x**2).sum(axis=1)/window_size)\n", "#window_rms < 0.01\n", "window_mask = window_rms > 0.01" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`window_mask` is now a boolean array that is True when speech (and not background noise) is found. The red dots along the x-axis in the following figure represent these window indivudually." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(well)\n", "for i, quiet in enumerate(window_mask):\n", " if not quiet:\n", " continue\n", " plt.plot([i*window_size, (i+1*window_size)], [0, 0], 'r.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But what we really want are the bin boundaries! We want to find where there are contiguous windows of speech. First lets get the indices where speech is occuring." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n", " 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,\n", " 38, 39, 40, 41, 42, 43, 44, 48, 49, 50, 51, 52, 53,\n", " 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n", " 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\n", " 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n", " 94, 95, 96, 97, 98, 99, 100, 105, 106, 107, 108, 109, 110,\n", " 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124,\n", " 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 142,\n", " 143, 144, 145, 146, 147, 148, 149, 150, 151, 167])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "window_fi = np.argwhere(window_mask).flat # fancy index\n", "window_fi[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To find where this is contiguous, we simplely look for the place where the mask indices change by more than one. These locations represent a boundary between speaking and not speaking." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0, 14, 32, 52, 84, 98, 115, 125])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "window_boundary = np.argwhere((window_fi[1:] - window_fi[:-1]) > 1).flatten()\n", "window_boundary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From these, we can fine upper and lower bounds" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 9, 27, 48, 69, 105, 120, 142, 167])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "window_lower = window_fi[window_boundary + 1]\n", "window_lower" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2, 22, 44, 67, 100, 118, 136, 151])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "window_upper = window_fi[window_boundary]\n", "window_upper" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, this is in window-space. To be useful, we need to convert back to sample- or time-space" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 19845, 48510],\n", " [ 59535, 97020],\n", " [105840, 147735],\n", " [152145, 220500],\n", " [231525, 260190],\n", " [264600, 299880],\n", " [313110, 332955]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time_boundries = np.array([window_lower[:-1], window_upper[1:]]).T * window_size\n", "time_boundries" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQggR0P8Dc7PiOtNb/AMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for u, l in time_boundries:\n", " plt.axvspan(u, l, facecolor='g', alpha=0.5)\n", "plt.plot(well)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Great! Now we can compare these words\n", "\n", "Comparing Words to Training Data\n", "=====================\n", "Now we want to compare the words that we have picked out to our umm. It turns out that comparing sounds in the time domain is really very difficult. We can make the problem much easier by converting to a frequency domain via FFT or similar transformation. \n", "\n", "In fact what we are going to do is convert the audio to [Mel-frequency cepstrum coeficients or MFCCs](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum). This is kind of like a multi-component FFT. MFCCs are commonly used in speech recognition because they are robust to noisy systems. However, the number of compenents used is up to the user. There seems to be a sweet spot between 10 and 20.\n", "\n", "One nice thing about MFCCs, is that there are tools that compute it for us already! Let's look at the MFCCs for our umm training data." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "umm_mfcc = librosa.feature.mfcc(umm, sr, n_mfcc=13).T" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = plt.plot(umm_mfcc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now to compare the MFCCs of two audio clips to each other we are going to use [Dynamic Time Warping or DTW](http://www.nickgillian.com/wiki/pmwiki.php?n=GRT.DTW). [This lecure does an amazing job of explaining the concept.](http://luthuli.cs.uiuc.edu/~daf/courses/CS-498-DAF-PS/Lecture%2018%20-%20Time%20series,%20DTW.pdf) But at a high level, what it is doing is taking the L1 norm of the MFCCs and finding the miminum distance between them at each frequency. That is, it computes how much you would have to shift one signal in order to line up with the other signal. The noisy bits are more or less canceled out, the clips can have different lengths, and it doesn't matter if the peaks line up in time because we are doing all of this in the fequency domain!\n", "\n", "This method computes three things: \n", "\n", "* a meaure of distance between the signals\n", "* a 'cost' matrix for shifting from one signal to the other.\n", "* a 'warp path' that is the minimial trasition between the two signals.\n", "\n", "Let's look at theses parameters between the first word we found in our large audio file and the training umm." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "clip = well[time_boundries[0,0]:time_boundries[0,1]]\n", "clip_mfcc = librosa.feature.mfcc(clip, sr, n_mfcc=13).T\n", "d, cost, w = dtw.dtw(clip_mfcc, umm_mfcc)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Distance is 109.548185414\n" ] }, { "data": { "image/png": "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\n7YV7B5C4WdsAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(cost.T)\n", "plt.plot(w[0], w[1], 'r-')\n", "plt.axis([0, w[0][-1], 0, w[1][-1]])\n", "print('Distance is ', d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximal distance is, of course, following along the sides of the space. From here, we can compute the nomralized distances for each clip to the training data." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.89063565, 0.40985375, 0.55962726, 0.47776493, 0.68053891,\n", " 0.55900074, 0.93183753])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dists = np.empty(len(time_boundries), dtype=float)\n", "for i, (l, u) in enumerate(time_boundries):\n", " clip = well[l:u]\n", " #librosa.output.write_wav('clip{0}.wav'.format(i), clip, sr)\n", " clip_mfcc = librosa.feature.mfcc(clip, sr, n_mfcc=13).T\n", " d, cost, w = dtw.dtw(clip_mfcc, umm_mfcc)\n", " dists[i] = d / (w[0][-1] + w[1][-1])\n", "dists" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The umms in the clip are given by those with a sufficiently close distance." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[59535, 97020]])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "threshold = 0.45\n", "time_boundries[dists <= threshold]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we know where the umms are, we can remove these and render the audio." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def remove_slices(arr, slices):\n", " if len(slices) == 0:\n", " return arr\n", " elif len(slices) == 1:\n", " return np.concatenate([arr[:slices[0][0]], arr[slices[0][1]:]])\n", " else:\n", " views = [arr[:slices[0][0]]]\n", " for (_, l), (u, _) in zip(slices[:-1], slices[1:]):\n", " views.append(arr[l:u])\n", " views.append(arr[slices[-1][1]:])\n", " return np.concatenate(views)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "well_sliced = remove_slices(well, time_boundries[dists <= threshold])\n", "Audio(well_sliced, rate=sr, autoplay=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now isn't that better!" ] } ], "metadata": { "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }