Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save justinsalamon/573e5f0ae18813fc82aa239e41a502cb to your computer and use it in GitHub Desktop.
Save justinsalamon/573e5f0ae18813fc82aa239e41a502cb to your computer and use it in GitHub Desktop.
An example of how to compute melody eval metrics from two note transcription JAMS files
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>An example of how to compute melody eval metrics from two note transcription JAMS files</h2>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import jams\n",
"import mir_eval\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.patches as mpatches\n",
"import seaborn as sns\n",
"import os\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# utility function to visualize transcriptions\n",
"def viz_notes(annotation_list):\n",
" \n",
" if len(annotation_list) <= 0:\n",
" pass\n",
"\n",
" colors = ['b', 'r', 'g', 'y']\n",
" \n",
" fig = plt.figure(figsize=(8,4))\n",
" ax = fig.add_subplot(111)\n",
"\n",
" for i, ann in enumerate(annotation_list):\n",
"\n",
" for n, note in enumerate(ann.data.values):\n",
" t = note[0].total_seconds()\n",
" d = note[1].total_seconds()\n",
" p = note[2] - 0.25\n",
" if n==len(ann.data.values)-1:\n",
" label = 'ann%d' % (i+1)\n",
" r = mpatches.Rectangle((t,p), d, 0.5, fill=True, alpha=0.5, color=colors[i], label=label)\n",
" else:\n",
" r = mpatches.Rectangle((t,p), d, 0.5, fill=True, alpha=0.5, color=colors[i]) \n",
" ax.add_patch(r)\n",
"\n",
" starttime = np.min([ann.data.time.min().total_seconds() for ann in annotation_list]) - 0.5\n",
" endtime = np.max([ann.data.time.max().total_seconds() for ann in annotation_list]) + 1\n",
" minpitch = np.min([ann.data.value.min() for ann in annotation_list]) - 1\n",
" maxpitch = np.max([ann.data.value.max() for ann in annotation_list]) + 1\n",
" plt.xlim([starttime,endtime])\n",
" plt.ylim([minpitch,maxpitch])\n",
" plt.xlabel('Time (s)')\n",
" plt.ylabel('Pitch (MIDI number)')\n",
" plt.legend()\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Load transcriptions\n",
"reffile = '/Users/justin/datasets/curio_ensemble/ensemble_analysis_final/jams/truth/TRACBNP128F4278243/TRACBNP128F4278243_8.jams'\n",
"estfile = '/Users/justin/datasets/curio_ensemble/ensemble_analysis_final/jams/crowd/TRACBNP128F4278243_8.wav/A28ZPY6D5AS7GZ.jams'\n",
"refjam = jams.load(reffile)\n",
"estjam = jams.load(estfile)\n",
"refann = refjam.annotations[0]\n",
"estann = estjam.annotations[0]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e888610>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# lets visualize them (reference in blue, estimate in red)\n",
"viz_notes([refann, estann])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# go from jams format to mir_eval format\n",
"ref_int, ref_pitches = refann.data.to_interval_values()\n",
"est_int, est_pitches = estann.data.to_interval_values()\n",
"\n",
"# convert to ndarrays\n",
"ref_int, ref_pitches = np.asarray(ref_int), np.asarray(ref_pitches)\n",
"est_int, est_pitches = np.asarray(est_int), np.asarray(est_pitches)\n",
"\n",
"# sort notes by start time\n",
"order = np.argsort(est_int[:, 0])\n",
"est_int[:, 0] = est_int[order, 0]\n",
"est_int[:, 1] = est_int[order, 1]\n",
"est_pitches = est_pitches[order]\n",
"\n",
"# remove time offset (needs to be replaced by something more generic)\n",
"ref_int -= 24\n",
"est_int -= 24\n",
"\n",
"# convert midi pitch to Hertz\n",
"ref_pitches = 2**((np.asarray(ref_pitches)-69)/12.) * 440\n",
"est_pitches = 2**((np.asarray(est_pitches)-69)/12.) * 440"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# convert note intervals to sampled time series on a 10ms grid\n",
"ref_times, ref_freq = mir_eval.util.intervals_to_samples(ref_int, ref_pitches, sample_size=0.01, fill_value=0)\n",
"est_times, est_freq = mir_eval.util.intervals_to_samples(est_int, est_pitches, sample_size=0.01, fill_value=0)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10ea0ea90>]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e9c8610>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# lets plot the time series (reference in blue, estimate in red)\n",
"fig = plt.figure()\n",
"plt.plot(ref_times, ref_freq, 'b')\n",
"plt.plot(est_times, est_freq, 'r')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Compute the melody extraction evaluation metrics\n",
"scores = mir_eval.melody.evaluate(np.round(ref_times, decimals=2), np.asarray(ref_freq), \n",
" np.round(est_times, decimals=2), np.asarray(est_freq))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"OrderedDict([('Voicing Recall', 1.0),\n",
" ('Voicing False Alarm', 0.0),\n",
" ('Raw Pitch Accuracy', 0.64000000000000001),\n",
" ('Raw Chroma Accuracy', 0.64000000000000001),\n",
" ('Overall Accuracy', 0.64000000000000001)])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Lets have a look at the scores. In particular the Raw Pitch Accuracy\n",
"# metrics tells us how much the estimated transcription overlaps with the\n",
"# reference in terms of pitch in a note-agnostic fashion. In this example\n",
"# the overlap is a 64%.\n",
"scores"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.8"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment