{
 "metadata": {
  "name": "",
  "signature": "sha256:2a4ebb1f551fa2ef8a56c467760cead921c85caa8205b9ba4a9e4955dc4c98a4"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Mel Frequency Cepstral Coefficients (MFCCs)"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The mel frequency cepstral coefficients (MFCCs) of a signal are a small set of features (usually about 10-20) which concisely describe the overall shape of a spectral envelope. In MIR, it is often used to describe timbre."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Load Audio"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import urllib\n",
      "url = 'https://ccrma.stanford.edu/workshops/mir2014/audio/simpleLoop.wav'\n",
      "urllib.urlretrieve(url, filename='simpleLoop.wav')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 16,
       "text": [
        "('simpleLoop.wav', <httplib.HTTPMessage instance at 0x54db878>)"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from essentia.standard import MonoLoader\n",
      "x = MonoLoader(filename='simpleLoop.wav')()\n",
      "\n",
      "fs = 44100.0\n",
      "t = arange(len(x))/fs\n",
      "plot(t, x)\n",
      "xlabel('Time (seconds)')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 17,
       "text": [
        "<matplotlib.text.Text at 0x54fcfd0>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\ngg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x54d8090>"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.display import Audio\n",
      "Audio(x, rate=fs)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "\n",
        "                <audio controls=\"controls\" >\n",
        "                    <source src=\"data:audio/wav;base64,[encoded data, 352860 characters]\" type=\"audio/wav\" />\n",
        "                    Your browser does not support the audio element.\n",
        "                </audio>\n",
        "              "
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 18,
       "text": [
        "<IPython.lib.display.Audio at 0x54dec90>"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "`essentia.standard.MFCC`"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We will use [`essentia.standard.MFCC`](http://essentia.upf.edu/documentation/reference/std_MFCC.html) to compute MFCCs across a signal, and we will display them as a \"MFCC-gram\":"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from essentia.standard import MFCC, Spectrum, Windowing, FrameGenerator\n",
      "hamming_window = Windowing(type='hamming')\n",
      "spectrum = Spectrum()  # we just want the magnitude spectrum\n",
      "mfcc = MFCC(numberCoefficients=13)\n",
      "frame_sz = 1024\n",
      "hop_sz = 500\n",
      "\n",
      "mfccs = array([mfcc(spectrum(hamming_window(frame)))[1]\n",
      "               for frame in FrameGenerator(x, frameSize=frame_sz, hopSize=hop_sz)])\n",
      "print mfccs.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(266, 13)\n"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "imshow(mfccs[:,1:].T, origin='lower', aspect='auto', interpolation='nearest') # Ignore the 0th MFCC\n",
      "yticks(range(12), range(1,13)) # Ignore the 0th MFCC\n",
      "ylabel('MFCC Coefficient Index')\n",
      "xlabel('Frame Index')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 20,
       "text": [
        "<matplotlib.text.Text at 0x5bb1e90>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x54de650>"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The very first MFCC, the 0th coefficient, does not convey information relevant to the overall shape. (It only conveys a vertical offset, i.e. adding a constant value to the entire spectrum.) Therefore, we discard the first MFCC when performing classification."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "`librosa.feature.mfcc`"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "[`librosa.feature.mfcc`](http://bmcfee.github.io/librosa/librosa.html#librosa.feature.mfcc)\n"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import librosa\n",
      "mfccs = array([librosa.feature.mfcc(x[i:i+frame_sz], sr=fs, n_mfcc=13)\n",
      "         for i in range(0, len(x), hop_sz)])\n",
      "print mfccs.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(265, 13)\n"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "librosa.display.specshow(mfccs[:,1:].T, sr=fs, hop_length=hop_sz, x_axis='time')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 23,
       "text": [
        "<matplotlib.image.AxesImage at 0x6d6a550>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nT0+PWbRokfnDH/4wYJ0jkZvDfs09Fovpxz/+sRYvXqwgCPT1r39dp59+uh599FFJ0q233qrLL79c\nzz//vGbNmqXKyko99thjw26bzWa1bNkytbe3yxijb33rW6qpqRn9S+ExajRzKUnPPvusFi9erAkT\nJuS33bNnj6666ipJku/7uv7663XZZZeN27lcunSpXnnlFe3bt0/Tp0/Xfffdp2w2KymaxxUrVuhn\nP/uZYrGYKioq9NRTT0ninixl3bp1evzxx/M/ZitJDzzwgD766CNJ0Xzef//9OnjwoG677TZJUjwe\nz//LsVDuS4++74/b+ZSkXbt2afny5QrDUGEYatmyZbr44ouPeG6W9ReHAQDGBv6HKgBYiHAHAAsR\n7gBgIcIdACxEuOOYtX///vwvBzvhhBPU0NCgpqYmVVdX6xvf+MbRHh5wVPHTMrDCfffdp+rqat15\n551HeyjAmMA7d1gj9z5lzZo1+V8/e++992r58uW64IILNGPGDD3zzDO66667tGDBAi1ZskS+70uS\n3nzzTV144YU688wz9aUvfUm7d+8+aucBlAPhDuu1tLRo9erVWrlypW644QZdeuml2rJliyZMmKBV\nq1Ypm83qjjvu0NNPP6033nhDN910k+65556jPWzgUylrQTYw1jiOoyVLlsjzPM2bN09hGGrx4sWS\npPnz52vbtm1699139c477+iSSy6RFJVPTJs27WgOG/jUCHdYL5FISIp+U188Hs8vd11Xvu/LGKO5\nc+dq/fr1R2uIQNnxZRlYbTQ/L3Dqqadq79692rhxo6TotyRu3br1sx4a8Jki3GGN3C+uchyn5MeF\n6xQ+jsfjWrFihe6++24tXLhQTU1N2rBhw5EbOPAZ4EchAcBCvHMHAAsR7gBgIcIdACxEuAOAhQh3\nALAQ4Q4AFvp/G0PuFJHTpOQAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x5d7c1d0>"
       ]
      }
     ],
     "prompt_number": 23
    }
   ],
   "metadata": {}
  }
 ]
}