{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "79d90b54",
   "metadata": {},
   "source": [
    "## Introduction\n",
    "\n",
    "This notebook demonstrates how the performance metrics for openWakeWord models are calculated, specifically the false-reject and false-accept rates based on testing datasets of WAV files.\n",
    "\n",
    "Note that calculating these metrics often involves some degree of subjectivity. In particular, choices around how to count false-reject and false-accepts can have a large impact on the resulting metrics. For openWakeWord, the following choices were made:\n",
    "\n",
    "- False-reject counts are based on individual clips that contain a *single* positive example. If the score for any frame in that clip is above a threshold, it counts as a true-accept for that clip.\n",
    "- False-accept counts are also based on counts of frame scores above a threshold. *However*, to avoid double-counting, some basic filtering is applied to the time-series of frame scores to ensure that each false activation is only counted once. See the `openwakeword.metrics.get_false_positives` function for more details, but in short, after a single frame above the threshold the subsequent 50 frames (4 seconds) are ignored before another false activation will be counted."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "43df2824",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T23:38:38.099943Z",
     "start_time": "2023-01-01T23:38:37.720170Z"
    }
   },
   "outputs": [],
   "source": [
    "# Imports\n",
    "\n",
    "import os\n",
    "import platform\n",
    "\n",
    "import numpy as np\n",
    "from pathlib import Path\n",
    "import IPython.display as ipd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import openwakeword\n",
    "from openwakeword.utils import bulk_predict\n",
    "from openwakeword.metrics import get_false_positives\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36f0ca63",
   "metadata": {},
   "source": [
    "# Download Dataset(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a804a549",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T20:15:56.812113Z",
     "start_time": "2023-01-01T20:15:37.368533Z"
    }
   },
   "outputs": [],
   "source": [
    "# Download and extract DipCo corpus (warning! This is 12GB)\n",
    "\n",
    "if platform.system() == \"Linux\":\n",
    "    !wget https://s3.amazonaws.com/dipco/DiPCo.tgz\n",
    "else:\n",
    "    !curl -O https://s3.amazonaws.com/dipco/DiPCo.tgz\n",
    "\n",
    "!tar -zxf DipCo.tgz"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7897f159",
   "metadata": {},
   "source": [
    "#### Links for some useful testing data\n",
    "\n",
    "Picovoice \"alexa\" dataset: https://github.com/Picovoice/wake-word-benchmark/tree/master/audio/alexa\n",
    "\n",
    "Note that some files (like the \"alexa\" dataset) will need to be converted to 16 khz, 16-bit wav files.\n",
    "You can use the `openwakeword.data.convert_clips` utility function to do so, which requires either `sox` or `ffmpeg` as the system-level backend."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86d4457a",
   "metadata": {},
   "source": [
    "# Load Trained openWakeWord Model(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "489b4aa5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T23:39:26.668594Z",
     "start_time": "2023-01-01T23:39:26.475270Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/dscripka/anaconda3/envs/torch_gpu/lib/python3.9/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py:54: UserWarning: Specified provider 'CUDAExecutionProvider' is not in available provider names.Available providers: 'CPUExecutionProvider'\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "# Load a trained openWakeWord models\n",
    "\n",
    "model_path = \"../openwakeword/resources/models/alexa_v0.1.onnx\"\n",
    "model_name = \"alexa_v0.1\"\n",
    "oww = openwakeword.Model(\n",
    "    wakeword_model_paths=[model_path]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "af898ac7",
   "metadata": {},
   "source": [
    "# Estimate False accept rate/false positive rate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "643e7362",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T23:41:54.836368Z",
     "start_time": "2023-01-01T23:39:30.353574Z"
    }
   },
   "outputs": [],
   "source": [
    "# Get paths to test files (DipCo corpus)\n",
    "\n",
    "clips = [str(i) for i in Path(\"DiPCo/audio/\").glob(\"**/*U01.CH1.wav\")]\n",
    "\n",
    "# Do bulk prediction in parrallel for faster inference\n",
    "predictions = bulk_predict(\n",
    "    file_paths = clips,\n",
    "    wakeword_model_paths=[model_path],\n",
    "    ncpu=10 # set this to the number of CPU cores you have available\n",
    ")\n",
    "\n",
    "# Flatten predictions into a single list, as we don't need to differentiate between files for this test\n",
    "predictions_dipco = [i[model_name] for j in predictions.keys() for i in predictions[j]]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "69805d78",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T23:48:23.855870Z",
     "start_time": "2023-01-01T23:48:23.815887Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "16"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Calculate the number of false positives\n",
    "\n",
    "num_false_positives = get_false_positives(predictions_dipco, threshold=0.5, grouping_window=50)\n",
    "num_false_positives"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "f1615f5b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T23:48:26.138814Z",
     "start_time": "2023-01-01T23:48:25.980125Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 1.0)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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jkofMDc5IQCQgrLCxquuuiqOO+64OPjgg2PEiBExbty4fpe955574j3veU+87GUvi0MOOSROOumkePDBB8suMEC9++LdM+OOJ5bF759amXVRAAAAIFUlh4133XVXnHfeeXHRRRfF9OnT45RTTonTTjstmpubCy4/duzYeM973hMjR46MadOmxd/+7d/GBz/4wZg+fXrFhacv3WWhfrTsbMu6CAAAqdNAsghu24AGVnLYePnll8dnP/vZ+NznPhevfe1r44orrohjjjkmrr766oLLX3HFFfHf//3f8aY3vSn+/M//PL773e/Gn//5n8fvfve7igsP5IvZ2wAAAGBoKyls3L17d0ybNi1OPfXUHq+feuqpMWHChKI+o6OjI7Zu3RqHHXZYKV8NAAAA5IyxPoHeDihl4fXr10d7e3sceeSRPV4/8sgjY/Xq1UV9xg9/+MPYvn17fOxjH+t3mdbW1mhtbe3695YtW0opJgAAAACQgbImiOn95CJJkqKeZtxxxx1x8cUXx1133RVHHHFEv8tdeumlceihh3b9d8wxx5RTTOA5ujfnk+0C5IFzEQAAaSopbDz88MNj//3379OKce3atX1aO/Z21113xWc/+9n41a9+Fe9+97sHXPbCCy+MlpaWrv+WLVtWSjEbjmbp+eX+DCBftu5qi6lLNkbSK0FzvobqElrXJ5NLQv44n9IISgobDzrooBgxYkSMGjWqx+ujRo2Kk08+ud/33XHHHfHpT386br/99jj99NMH/Z5hw4bFIYcc0uM/oPEtXr89Jj67IetiwJDSaBXaD181If7hmolx97Tl4VEdvTXY7g6kRNsOgHSV3I36ggsuiBtuuCFuuummmDdvXpx//vnR3NwcZ599dkTsbZV41llndS1/xx13xFlnnRU//OEP461vfWusXr06Vq9eHS0tLen9CqAh/O0PHotPXD8p5q0yTitQnmfWbouIiPtnrMy4JEAhQh1oPL17EwCUHDaeccYZccUVV8Qll1wSb3jDG2Ls2LExcuTIOPbYYyMiYtWqVdHc3Ny1/LXXXht79uyJ//zP/4yjjz6667//+q//Su9XQBW5eNZe77DRFgCA/FFFoj/2DYChraTZqDudc845cc455xT82y233NLj34899lg5XwEAAEAVNRlwAoAqKGs2aqrH5T5/TNBDtWg1C+SByxwAAGkSNgIA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rVu3xvDhw6tappLCxsMPPzz233//Pq0Y165d26f1Yqejjjqq4PIHHHBAvPSlLy34nmHDhsWwYT2niH/xi19cSlHr0iGHHOIkDnXAsQr55ziF+uBYhfxznEJ9KPZYrWaLxk4lzeF+0EEHxYgRI2LUqFE9Xh81alScfPLJBd9z0kkn9Vn+oYceihNPPLHgeI0AAAAAQH0qKWyMiLjgggvihhtuiJtuuinmzZsX559/fjQ3N8fZZ58dEXu7QJ911lldy5999tmxdOnSuOCCC2LevHlx0003xY033hhf+tKX0vsVAAAAAEDmSh6z8YwzzogNGzbEJZdcEqtWrYrjjz8+Ro4cGccee2xERKxatSqam5u7lj/uuONi5MiRcf7558eVV14Zw4cPj5/85Cfx0Y9+NL1fUeeGDRsW3/zmN/t0HQfyxbEK+ec4hfrgWIX8c5xCfcjjsdqUdM7WAgAAAABQgZK7UQMAAAAAFCJsBAAAAABSIWwEAAAAAFIhbAQAAAAAUiFszIGrrroqjjvuuDj44INjxIgRMW7cuKyLBA3h4osvjqamph7/HXXUUV1/T5IkLr744hg+fHg873nPi3e84x0xZ86cHp/R2toaX/jCF+Lwww+PF7zgBfF3f/d3sXz58h7LbNq0Kc4888w49NBD49BDD40zzzwzNm/e3GOZ5ubm+OAHPxgveMEL4vDDD49zzz03du/eXbXfDnk1duzY+OAHPxjDhw+PpqamuO+++3r8PW/H5axZs+Ltb397PO95z4uXv/zlcckll4S59RgKBjtWP/3pT/e5xr71rW/tsYxjFarr0ksvjTe96U3xohe9KI444oj40Ic+FPPnz++xjOsqZKuY47QRr6nCxozdddddcd5558VFF10U06dPj1NOOSVOO+20aG5uzrpo0BD+6q/+KlatWtX136xZs7r+9r3vfS8uv/zy+NnPfhZTpkyJo446Kt7znvfE1q1bu5Y577zz4t57740777wzHn/88di2bVt84AMfiPb29q5lPvnJT8aMGTPigQceiAceeCBmzJgRZ555Ztff29vb4/TTT4/t27fH448/HnfeeWf85je/iS9+8Yu1WQmQI9u3b48TTjghfvaznxX8e56Oyy1btsR73vOeGD58eEyZMiV++tOfxg9+8IO4/PLLq7BmIF8GO1YjIt73vvf1uMaOHDmyx98dq1BdY8aMif/8z/+MSZMmxahRo2LPnj1x6qmnxvbt27uWcV2FbBVznEY04DU1IVNvfvObk7PPPrvHa695zWuSr371qxmVCBrHN7/5zeSEE04o+LeOjo7kqKOOSi677LKu13bt2pUceuihyTXXXJMkSZJs3rw5OfDAA5M777yza5kVK1Yk++23X/LAAw8kSZIkc+fOTSIimTRpUtcyEydOTCIiefrpp5MkSZKRI0cm++23X7JixYquZe64445k2LBhSUtLS2q/F+pNRCT33ntv17/zdlxeddVVyaGHHprs2rWra5lLL700GT58eNLR0ZHimoB8632sJkmSfOpTn0r+/u//vt/3OFah9tauXZtERDJmzJgkSVxXIY96H6dJ0pjXVC0bM7R79+6YNm1anHrqqT1eP/XUU2PChAkZlQoay8KFC2P48OFx3HHHxcc//vFYtGhRREQsXrw4Vq9e3eP4GzZsWLz97W/vOv6mTZsWbW1tPZYZPnx4HH/88V3LTJw4MQ499NB4y1ve0rXMW9/61jj00EN7LHP88cfH8OHDu5Z573vfG62trTFt2rTq/XioM3k7LidOnBhvf/vbY9iwYT2WWblyZSxZsiT9FQB15rHHHosjjjgiXv3qV8e//uu/xtq1a7v+5liF2mtpaYmIiMMOOywiXFchj3ofp50a7ZoqbMzQ+vXro729PY488sgerx955JGxevXqjEoFjeMtb3lL/OIXv4gHH3wwrr/++li9enWcfPLJsWHDhq5jbKDjb/Xq1XHQQQfFS17ykgGXOeKII/p89xFHHNFjmd7f85KXvCQOOuggxzp0k7fjstAynf927DLUnXbaaXHbbbfFo48+Gj/84Q9jypQp8c53vjNaW1sjwrEKtZYkSVxwwQXx13/913H88cdHhOsq5E2h4zSiMa+pBxS9JFXT1NTU499JkvR5DSjdaaed1vX/X/e618VJJ50Uf/qnfxo///nPuwbcLef4671MoeXLWQbYK0/HZaGy9PdeGErOOOOMrv9//PHHx4knnhjHHnts/OEPf4iPfOQj/b7PsQrV8fnPfz6eeuqpePzxx/v8zXUV8qG/47QRr6laNmbo8MMPj/33379POrx27do+STJQuRe84AXxute9LhYuXNg1K/VAx99RRx0Vu3fvjk2bNg24zJo1a/p817p163os0/t7Nm3aFG1tbY516CZvx2WhZTq7tDh2oaejjz46jj322Fi4cGFEOFahlr7whS/E/fffH6NHj45XvOIVXa+7rkJ+9HecFtII11RhY4YOOuigGDFiRIwaNarH66NGjYqTTz45o1JB42ptbY158+bF0UcfHccdd1wcddRRPY6/3bt3x5gxY7qOvxEjRsSBBx7YY5lVq1bF7Nmzu5Y56aSToqWlJZ544omuZSZPnhwtLS09lpk9e3asWrWqa5mHHnoohg0bFiNGjKjqb4Z6krfj8qSTToqxY8fG7t27eywzfPjweNWrXpX+CoA6tmHDhli2bFkcffTREeFYhVpIkiQ+//nPxz333BOPPvpoHHfccT3+7roK2RvsOC2kIa6pRU8lQ1XceeedyYEHHpjceOONydy5c5PzzjsvecELXpAsWbIk66JB3fviF7+YPPbYY8miRYuSSZMmJR/4wAeSF73oRV3H12WXXZYceuihyT333JPMmjUr+cQnPpEcffTRyZYtW7o+4+yzz05e8YpXJA8//HDy5JNPJu985zuTE044IdmzZ0/XMu973/uS17/+9cnEiROTiRMnJq973euSD3zgA11/37NnT3L88ccn73rXu5Inn3wyefjhh5NXvOIVyec///narQzIia1btybTp09Ppk+fnkREcvnllyfTp09Pli5dmiRJvo7LzZs3J0ceeWTyiU98Ipk1a1Zyzz33JIccckjygx/8oAZrCrI10LG6devW5Itf/GIyYcKEZPHixcno0aOTk046KXn5y1/uWIUa+o//+I/k0EMPTR577LFk1apVXf/t2LGjaxnXVcjWYMdpo15ThY05cOWVVybHHntsctBBByVvfOMbe0yBDpTvjDPOSI4++ujkwAMPTIYPH5585CMfSebMmdP1946OjuSb3/xmctRRRyXDhg1L/uZv/iaZNWtWj8/YuXNn8vnPfz457LDDkuc973nJBz7wgaS5ubnHMhs2bEj+6Z/+KXnRi16UvOhFL0r+6Z/+Kdm0aVOPZZYuXZqcfvrpyfOe97zksMMOSz7/+c8nu3btqtpvh7waPXp0EhF9/vvUpz6VJEn+jsunnnoqOeWUU5Jhw4YlRx11VHLxxRcnHR0dqa8XyJuBjtUdO3Ykp556avKyl70sOfDAA5NXvvKVyac+9ak+x6FjFaqr0DEaEcnNN9/ctYzrKmRrsOO0Ua+pTc/9eAAAAACAihizEQAAAABIhbARAAAAAEiFsBEAAAAASIWwEQAAAABIhbARAAAAAEiFsBEAAAAASIWwEQAAAABIhbARAAAAAEiFsBEAAAAASIWwEQAAAABIhbARAAAAAEiFsBEAAAAASMX/B+GYc4RWYsFnAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1600x900 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot results\n",
    "plt.figure(figsize=(16,9))\n",
    "plt.plot(predictions_dipco)\n",
    "plt.ylim(0,1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25440876",
   "metadata": {},
   "source": [
    "# False reject rate/false negative rate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "38f59da6",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T23:48:49.561065Z",
     "start_time": "2023-01-01T23:48:31.593726Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "False Reject Rate @0.5 threshold: 0.030395136778115502\n"
     ]
    }
   ],
   "source": [
    "# Get paths to test files (positive examples)\n",
    "\n",
    "clips = [str(i) for i in Path(\"alexa_test_clips/\").glob(\"**/*.wav\")] # assumes these clips are 16khz, 16-bit WAV files\n",
    "\n",
    "# Do bulk prediction for faster testing\n",
    "predictions_frr = bulk_predict(\n",
    "    file_paths = clips,\n",
    "    wakeword_model_paths=[model_path],\n",
    "    ncpu=10,\n",
    "    padding=2 # pad each clip with n seconds of silence before & after\n",
    ")\n",
    "\n",
    "# Count how many files had a prediction above a given threshold\n",
    "threshold = 0.5\n",
    "fn = 0\n",
    "fn_clips = []\n",
    "positive_scores = []\n",
    "for fname, scores in predictions_frr.items():\n",
    "    scores = [i[model_name] for i in scores]\n",
    "    positive_scores.append(max(scores))\n",
    "    if positive_scores[-1] < threshold:\n",
    "        fn += 1\n",
    "        fn_clips.append(fname)\n",
    "\n",
    "print(f\"False Reject Rate @{threshold} threshold: {fn/len(clips)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "49da97d0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T17:05:23.733771Z",
     "start_time": "2023-01-01T17:05:23.708960Z"
    }
   },
   "outputs": [],
   "source": [
    "# (optionally) listen to the falsely rejected clips\n",
    "\n",
    "for i in fn_clips:\n",
    "    sr, dat = scipy.io.wavfile.read(i)\n",
    "    ipd.display(ipd.Audio(dat, rate=16000, normalize=True, autoplay=False))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dba2880d",
   "metadata": {},
   "source": [
    "# Plot False-Acccept/False-Reject Curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d4e77328",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-01-01T23:49:52.585060Z",
     "start_time": "2023-01-01T23:49:51.021926Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 50/50 [00:01<00:00, 33.60it/s]\n",
      "100%|██████████| 50/50 [00:00<00:00, 41734.37it/s]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'False Reject Rate')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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PocffniSpLq6OgsXLkxFRUVGjhyZyy+/fJ0XCAAAAADQklaHm5tuumlee+21JMlWW22Vv/71r0mSV199NYsWLVq31QEAAAAAvIVWLyg0ZMiQjBs3Lh/4wAdy1FFH5Wtf+1ruvvvujBs3LgcccMD6qBEAAAAAYDWtDjcvuuiiLF68OEly5plnpkOHDrn//vvzyU9+Muecc846LxAAAAAAoCUVpVKptK4GW7RoUTp27LiuhiubxsbG1NXVpaGhIbW1teUuBwAAAAAKpa3ytVY/c7Mlixcvzvnnn58+ffqsi+EAAAAAAN7RGoebS5cuzVlnnZU999wzgwcPzm9/+9skydVXX50+ffrkxz/+cb72ta+trzoBAAAAAJpZ42dunnvuubn44otz0EEH5YEHHshnPvOZfPGLX8z48eMzevToHHPMMenQocP6rBUAAAAAoMkah5s33nhjfvGLX+QTn/hEpk6dmt133z2NjY154oknUlnZ6nWJAAAAAADelTW+LX3mzJnZc889kyS77bZbqqqqcvrppws2AQAAAICyWONwc9myZamqqmp636FDh9TV1a2XogAAAAAA3kmrpl3+13/9Vzp27Jhk1QJD//3f/71awHn++eevu+oAAAAAAN7CGoebQ4cOzdNPP930fvDgwZk+fXqzPhUVFeuuMgAAAACAt7HG4eb48ePXYxkAAAAAAK2zxs/cBAAAAADYkAg3AQAAAIBCEm4CAAAAAIUk3AQAAAAACqnV4WZ9fX1KpdJq7aVSKfX19eukKAAAAACAd9LqcLN37955+eWXV2t/5ZVX0rt373VSFAAAAADAO2l1uFkqlVJRUbFa+4IFC1JTU7NOigIAAAAAeCeVa9px1KhRSZKKioqcc8456dixY9NnK1asyEMPPZQPfvCD67xAAAAAAICWrHG4OXny5CSrZm4+/vjjqaqqavqsqqoqu+22W0477bR1XyEAAAAAQAvWONy85557kiRf+MIX8tOf/jS1tbXrrSgAAAAAgHfS6mduXnDBBVm+fPlq7a+88koaGxvXSVEAAAAAAO+k1eHm0UcfnRtuuGG19htvvDFHH330OikKAAAAAOCdtDrcfOihh7L//vuv1r7ffvvloYceWidFAQAAAAC8k1aHm0uWLGnxtvRly5bl9ddfXydFAQAAAAC8k1aHm3vuuWcuv/zy1dovu+yyDBgwYJ0UBQAAAADwTtZ4tfQ3fOc738mBBx6YqVOn5oADDkiS/OlPf8rDDz+cu+66a50XCAAAAADQklbP3Nx7770zceLEbL311rnxxhtz++23Z7vttstjjz2WIUOGrI8aAQAAAABWU1EqlUrlLmJD09jYmLq6ujQ0NKS2trbc5QAAAABAobRVvtbqmZtJ8vzzz+fss8/OMccck7lz5yZJ7rzzzjzxxBOtHuuSSy5J7969U1NTkwEDBuS+++572/4TJkzIgAEDUlNTkz59+uSyyy5brc8FF1yQHXfcMRtttFF69uyZkSNHZvHixa2uDQAAAADYcLU63JwwYUI+8IEP5KGHHspNN92UBQsWJEkee+yxfPOb32zVWGPGjMmpp56as846K5MnT86QIUNy6KGHpr6+vsX+L7zwQg477LAMGTIkkydPzje+8Y2ccsopuemmm5r6/PKXv8wZZ5yRb37zm5k2bVquvPLKjBkzJmeeeWZrDxUAAAAA2IC1+rb0QYMG5TOf+UxGjRqVTp06ZerUqenTp08efvjhHHnkkZk1a9Yaj7XXXntljz32yKWXXtrUtvPOO+fII4/M6NGjV+t/+umn57bbbsu0adOa2kaMGJGpU6dm4sSJSZKTTz4506ZNy5/+9KemPv/xH/+Rv/zlL+84K/QNbksHAAAAgLW3wd6W/vjjj+cTn/jEau2bb7555s+fv8bjLF26NJMmTcqwYcOatQ8bNiwPPvhgi9tMnDhxtf4HH3xwHnnkkSxbtixJss8++2TSpEn5y1/+kiSZPn16xo4dm8MPP/wta1myZEkaGxubvQAAAACADVurw83OnTtn9uzZq7VPnjw5W2211RqPM2/evKxYsSLdunVr1t6tW7fMmTOnxW3mzJnTYv/ly5dn3rx5SZKjjz463/72t7PPPvukQ4cO6du3b/bff/+cccYZb1nL6NGjU1dX1/Tq2bPnGh8HAAAAAFAerQ43jznmmJx++umZM2dOKioqsnLlyjzwwAM57bTTctxxx7W6gIqKimbvS6XSam3v1P/N7ePHj893vvOdXHLJJXn00Udz880353e/+12+/e1vv+WYZ555ZhoaGppeM2fObPVxAAAAAABtq7K1G3znO9/JCSeckK222iqlUin9+vXLihUrcswxx+Tss89e43G6du2a9u3brzZLc+7cuavNznxD9+7dW+xfWVmZzTbbLElyzjnn5Nhjj82XvvSlJMkHPvCBLFy4MF/5yldy1llnpV271fPc6urqVFdXr3HtAAAAAED5tXrmZocOHfLLX/4yzzzzTG688cb87//+b5566qlcd911ad++/RqPU1VVlQEDBmTcuHHN2seNG5fBgwe3uM2gQYNW63/XXXdl4MCB6dChQ5Jk0aJFqwWY7du3T6lUSivXTsr9z81rVX8AAAAAoO20eubmG/r27Zu+ffu+q52PGjUqxx57bAYOHJhBgwbl8ssvT319fUaMGJFk1e3is2bNyrXXXptk1croF110UUaNGpUvf/nLmThxYq688spcf/31TWMeccQROf/887P77rtnr732ynPPPZdzzjknH/vYx1oVvibJiOsm5YCp83L2R/ul7+abvKtjBQAAAADWrTUKN0eNGpVvf/vb2XjjjTNq1Ki37bvJJptkl112yac//el3DBOHDx+e+fPn57zzzsvs2bPTv3//jB07Nr169UqSzJ49O/X19U39e/funbFjx2bkyJG5+OKLs+WWW+bCCy/Mpz71qaY+Z599dioqKnL22Wdn1qxZ2XzzzXPEEUfkO9/5zpocajOV7Spyz9Mv575n781xg7bN1w7YPnUdO7R6HAAAAABg3asorcG92vvvv39uueWWdO7cOfvvv//b9l2yZEmeeOKJfPzjH2+acVk0jY2Nqaury+TnZ+XCe2fl7qfmJkm6dOyQUcN2zGf37JnK9q2+ox8AAAAA3hfeyNcaGhpSW1u73vazRuFmaz3yyCM54IAD0tDQsK6HbhP/+suf8MzL+fbvnsxzcxckSXbs1in/dUS/7L1d1zJXCgAAAAAbnrYKN9d6+uHSpUvz9NNPZ/ny5at9tuuuuxZ21mZL9t1h89zxtSH51sd2Sd1GHfL031/L5/7noXz52kcyY97CcpcHAAAAAO9LrQ43Fy1alBNPPDEdO3bMLrvs0vRMzFNOOSXf+973kqxaCf3jH//4uq20zDq0b5fjB2+bCf+5X04YvG3at6vIuCf/noN+MiGjx07La4uXlbtEAAAAAHhfaXW4eeaZZ2bq1KkZP358ampqmtoPPPDAjBkzZp0WtyHq3LEq535sl9z5tSEZusPmWbailJ/fOz37/2h8bvhLfVasXOd3+QMAAAAALWh1uPnb3/42F110UfbZZ59UVFQ0tffr1y/PP//8Oi1u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AAAUknATAAAAACgk4SYAAAAAUEjCTQAAAACgkISbAAAAAEAhCTcBAAAAgEISbgIAAAAAhSTcBAAAAAAKSbgJAAAAABSScBMAAAAAKCThJgAAAABQSMJNAAAAAKCQhJsAAAAAQCEJNwEAAACAQhJuAgAAAACFJNwEAAAAAApJuAkAAAAAFJJwEwAAAAAoJOEmAAAAAFBIwk0AAAAAoJCEmwAAAABAIQk3AQAAAIBCEm4CAAAAAIUk3AQAAAAACkm4CQAAAAAUknATAAAAACiksoebl1xySXr37p2ampoMGDAg991339v2nzBhQgYMGJCampr06dMnl1122Wp9brrppvTr1y/V1dXp169fbrnllvVVPgAAAABQJmUNN8eMGZNTTz01Z511ViZPnpwhQ4bk0EMPTX19fYv9X3jhhRx22GEZMmRIJk+enG984xs55ZRTctNNNzX1mThxYoYPH55jjz02U6dOzbHHHpujjjoqDz30UFsdFgAAAADQBipKpVKpXDvfa6+9sscee+TSSy9tatt5551z5JFHZvTo0av1P/3003Pbbbdl2rRpTW0jRozI1KlTM3HixCTJ8OHD09jYmDvuuKOpzyGHHJIuXbrk+uuvX6O6GhsbU1dXl4aGhtTW1q7t4QEAAADA+1Jb5Wtlm7m5dOnSTJo0KcOGDWvWPmzYsDz44IMtbjNx4sTV+h988MF55JFHsmzZsrft81ZjAgAAAADFVFmuHc+bNy8rVqxIt27dmrV369Ytc+bMaXGbOXPmtNh/+fLlmTdvXnr06PGWfd5qzCRZsmRJlixZ0vS+oaEhyaqEGQAAAABonTdytfV903jZws03VFRUNHtfKpVWa3un/v/a3toxR48enW9961urtffs2fOtCwcAAAAA3tb8+fNTV1e33sYvW7jZtWvXtG/ffrUZlXPnzl1t5uUbunfv3mL/ysrKbLbZZm/b563GTJIzzzwzo0aNanr/6quvplevXqmvr1+vv3xobGxMz549M3PmTM93Zb1yrtFWnGu0FecabcW5RltxrtFWnGu0lYaGhmyzzTbZdNNN1+t+yhZuVlVVZcCAARk3blw+8YlPNLWPGzcuH//4x1vcZtCgQbn99tubtd11110ZOHBgOnTo0NRn3LhxGTlyZLM+gwcPfstaqqurU11dvVp7XV2dv+i0idraWucabcK5RltxrtFWnGu0FecabcW5RltxrtFW2rVbv0v+lPW29FGjRuXYY4/NwIEDM2jQoFx++eWpr6/PiBEjkqyaUTlr1qxce+21SVatjH7RRRdl1KhR+fKXv5yJEyfmyiuvbLYK+te+9rUMHTo03//+9/Pxj388t956a/74xz/m/vvvL8sxAgAAAADrR1nDzeHDh2f+/Pk577zzMnv27PTv3z9jx45Nr169kiSzZ89OfX19U//evXtn7NixGTlyZC6++OJsueWWufDCC/OpT32qqc/gwYNzww035Oyzz84555yTvn37ZsyYMdlrr73a/PgAAAAAgPWn7AsK/fu//3v+/d//vcXPfvGLX6zWtu++++bRRx992zE//elP59Of/vRa11RdXZ1vfvObLd6qDuuSc4224lyjrTjXaCvONdqKc4224lyjrTjXaCttda5VlNb3euwAAAAAAOvB+n2iJwAAAADAeiLcBAAAAAAKSbgJAAAAABSScBMAAAAAKKT3Tbh5ySWXpHfv3qmpqcmAAQNy3333vW3/CRMmZMCAAampqUmfPn1y2WWXrdbnpptuSr9+/VJdXZ1+/frllltuWV/lUyCtOdduvvnmHHTQQdl8881TW1ubQYMG5Q9/+EOzPr/4xS9SUVGx2mvx4sXr+1DYwLXmXBs/fnyL59FTTz3VrJ/vNVrSmnPthBNOaPFc22WXXZr6+F7jX91777054ogjsuWWW6aioiK//e1v33Eb12qsjdaea67VWFutPddcq7G2WnuuuVZjbY0ePTp77rlnOnXqlC222CJHHnlknn766Xfcri2u2d4X4eaYMWNy6qmn5qyzzsrkyZMzZMiQHHrooamvr2+x/wsvvJDDDjssQ4YMyeTJk/ONb3wjp5xySm666aamPhMnTszw4cNz7LHHZurUqTn22GNz1FFH5aGHHmqrw2ID1Npz7d57781BBx2UsWPHZtKkSdl///1zxBFHZPLkyc361dbWZvbs2c1eNTU1bXFIbKBae6694emnn252Hm2//fZNn/leoyWtPdd++tOfNjvHZs6cmU033TSf+cxnmvXzvcabLVy4MLvttlsuuuiiNervWo211dpzzbUaa6u159obXKvRWq0911yrsbYmTJiQk046KX/+858zbty4LF++PMOGDcvChQvfcps2u2YrvQ986EMfKo0YMaJZ20477VQ644wzWuz/9a9/vbTTTjs1a/vqV79a+vCHP9z0/qijjiodcsghzfocfPDBpaOPPnodVU0RtfZca0m/fv1K3/rWt5reX3311aW6urp1VSLvEa091+65555SktI//vGPtxzT9xotebffa7fcckupoqKiNGPGjKY232u8nSSlW2655W37uFZjXViTc60lrtVorTU511yrsS6szfeaazXW1ty5c0tJShMmTHjLPm11zfaen7m5dOnSTJo0KcOGDWvWPmzYsDz44IMtbjNx4sTV+h988MF55JFHsmzZsrft81Zj8t63Nufav1q5cmVee+21bLrpps3aFyxYkF69emXrrbfORz/60dVmC/D+8m7Otd133z09evTIAQcckHvuuafZZ77X+Ffr4nvtyiuvzIEHHphevXo1a/e9xrvhWo1yca3G+uZajbbmWo211dDQkCSr/Zv4Zm11zfaeDzfnzZuXFStWpFu3bs3au3Xrljlz5rS4zZw5c1rsv3z58sybN+9t+7zVmLz3rc259q9+/OMfZ+HChTnqqKOa2nbaaaf84he/yG233Zbrr78+NTU12XvvvfPss8+u0/opjrU513r06JHLL788N910U26++ebsuOOOOeCAA3Lvvfc29fG9xr96t99rs2fPzh133JEvfelLzdp9r/FuuVajXFyrsb64VqMcXKuxtkqlUkaNGpV99tkn/fv3f8t+bXXNVtmK2gutoqKi2ftSqbRa2zv1/9f21o7J+8PanhfXX399zj333Nx6663ZYostmto//OEP58Mf/nDT+7333jt77LFHfvazn+XCCy9cd4VTOK0513bcccfsuOOOTe8HDRqUmTNn5kc/+lGGDh26VmPy/rG258UvfvGLdO7cOUceeWSzdt9rrAuu1WhrrtVYn1yrUQ6u1VhbJ598ch577LHcf//979i3La7Z3vMzN7t27Zr27duvlvjOnTt3tWT4Dd27d2+xf2VlZTbbbLO37fNWY/Letzbn2hvGjBmTE088MTfeeGMOPPDAt+3brl277Lnnnv6v2fvYuznX3uzDH/5ws/PI9xr/6t2ca6VSKVdddVWOPfbYVFVVvW1f32u0lms12pprNcrBtRrrk2s11tb/+3//L7fddlvuueeebL311m/bt62u2d7z4WZVVVUGDBiQcePGNWsfN25cBg8e3OI2gwYNWq3/XXfdlYEDB6ZDhw5v2+etxuS9b23OtWTVLIATTjghv/rVr3L44Ye/435KpVKmTJmSHj16vOuaKaa1Pdf+1eTJk5udR77X+Ffv5lybMGFCnnvuuZx44onvuB/fa7SWazXakms1ysW1GuuTazVaq1Qq5eSTT87NN9+cu+++O717937Hbdrsmm2Nlx4qsBtuuKHUoUOH0pVXXll68sknS6eeempp4403bloN7Iwzzigde+yxTf2nT59e6tixY2nkyJGlJ598snTllVeWOnToUPrNb37T1OeBBx4otW/fvvS9732vNG3atNL3vve9UmVlZenPf/5zmx8fG47Wnmu/+tWvSpWVlaWLL764NHv27KbXq6++2tTn3HPPLd15552l559/vjR58uTSF77whVJlZWXpoYceavPjY8PR2nPtJz/5SemWW24pPfPMM6W//vWvpTPOOKOUpHTTTTc19fG9Rktae6694fOf/3xpr732anFM32v8q9dee600efLk0uTJk0tJSueff35p8uTJpRdffLFUKrlWY91p7bnmWo211dpzzbUaa6u159obXKvRWv/2b/9WqqurK40fP77Zv4mLFi1q6lOua7b3RbhZKpVKF198calXr16lqqqq0h577NFsqfrjjz++tO+++zbrP378+NLuu+9eqqqqKm277balSy+9dLUxf/3rX5d23HHHUocOHUo77bRTs394eP9qzbm27777lpKs9jr++OOb+px66qmlbbbZplRVVVXafPPNS8OGDSs9+OCDbXhEbKhac659//vfL/Xt27dUU1NT6tKlS2mfffYp/f73v19tTN9rtKS1/4a++uqrpY022qh0+eWXtzie7zX+1T333PO2/x66VmNdae255lqNtdXac821Gmtrbf4Nda3G2mjpPEtSuvrqq5v6lOuareKfBQIAAAAAFMp7/pmbAAAAAMB7k3ATAAAAACgk4SYAAAAAUEjCTQAAAACgkISbAAAAAEAhCTcBAAAAgEISbgIAAAAAhSTcBAB4n/nFL36Rzp07l7sMAAB414SbAAAFdMIJJ6SiomK113PPPVfu0pq8/vrr6dKlSzbddNO8/vrr5S5nNSeccEKOPPLItdq2d+/eufPOOzN+/PhUVFTk1VdfXa3PtttumwsuuOBd1QgAwNsTbgIAFNQhhxyS2bNnN3v17t273GU1uemmm9K/f//069cvN998c7nLWWcee+yxzJ8/P/vvv3+5S8nSpUvLXQIAQFkJNwEACqq6ujrdu3dv9mrfvn3OP//8fOADH8jGG2+cnj175t///d+zYMGCtxxn6tSp2X///dOpU6fU1tZmwIABeeSRR5o+f/DBBzN06NBstNFG6dmzZ0455ZQsXLjwHeu78sor8/nPfz6f//znc+WVV672+RNPPJHDDz88tbW16dSpU4YMGZLnn3++6fOrrroqu+yyS6qrq9OjR4+cfPLJTZ81NDTkK1/5SrbYYovU1tbmIx/5SKZOndr0+bnnnpsPfvCD+fnPf56ePXumY8eO+cxnPtM0w/Lcc8/NNddck1tvvbVp1uv48eOzdOnSnHzyyenRo0dqamqy7bbbZvTo0c3qvvXWW3PwwQenurr6HX8Hb1ZfX5+Pf/zj2WSTTVJbW5ujjjoqf//735s+b2km6amnnpr99tuv6f1+++2Xk08+OaNGjUrXrl1z0EEHtaoGAID3GuEmAMB7TLt27XLhhRfmr3/9a6655prcfffd+frXv/6W/T/3uc9l6623zsMPP5xJkybljDPOSIcOHZIkjz/+eA4++OB88pOfzGOPPZYxY8bk/vvvbxY0tuT555/PxIkTc9RRR+Woo47Kgw8+mOnTpzd9PmvWrAwdOjQ1NTW5++67M2nSpHzxi1/M8uXLkySXXnppTjrppHzlK1/J448/nttuuy3bbbddkqRUKuXwww/PnDlzMnbs2EyaNCl77LFHDjjggLzyyitN+3juuedy44035vbbb8+dd96ZKVOm5KSTTkqSnHbaaTnqqKOazX4dPHhwLrzwwtx222258cYb8/TTT+d///d/s+222zY7tttuuy0f//jH1/wP5J81H3nkkXnllVcyYcKEjBs3Ls8//3yGDx/eqnGS5JprrkllZWUeeOCB/PznP2/19gAA7yWV5S4AAIC187vf/S6bbLJJ0/tDDz00v/71r3Pqqac2tfXu3Tvf/va382//9m+55JJLWhynvr4+//mf/5mddtopSbL99ts3ffbDH/4wxxxzTNOY22+/fS688MLsu+++ufTSS1NTU9PimFdddVUOPfTQdOnSJcmqW+ivuuqq/Pd//3eS5OKLL05dXV1uuOGGpiB1hx12aNr+v//7v/Mf//Ef+drXvtbUtueeeyZJ7rnnnjz++OOZO3du0+zJH/3oR/ntb3+b3/zmN/nKV76SJFm8eHGuueaabL311kmSn/3sZzn88MPz4x//ON27d89GG22UJUuWpHv37s1+F9tvv3322WefVFRUpFevXs2Oa9asWZk6dWoOO+ywZu1v7OPNFi1a1PTzH//4xzz22GN54YUX0rNnzyTJddddl1122SUPP/xw07Gtie222y4/+MEP1rg/AMB7mXATAKCg9t9//1x66aVN7zfeeOMkq8K/7373u3nyySfT2NiY5cuXZ/HixVm4cGFTnzcbNWpUvvSlL+W6667LgQcemM985jPp27dvkmTSpEl57rnn8stf/rKpf6lUysqVK/PCCy9k5513Xm28FStW5JprrslPf/rTprbPf/7zGTlyZL71rW+lffv2mTJlSoYMGdIUbL7Z3Llz89JLL+WAAw5o8bgnTZqUBQsWZLPNNmvW/vrrrze7rX2bbbZpFjoOGjQoK1euzNNPP90s0HyzE044IQcddFB23HHHHHLIIfnoRz+aYcOGNX1+2223Ze+9986mm27abLv77rsvnTp1atb25tvJp02blp49ezYFm0nSr1+/dO7cOdOmTWtVuDlw4MA17gsA8F4n3AQAKKiNN9646VbtN7z44os57LDDMmLEiHz729/Opptumvvvvz8nnnhili1b1uI45557bo455pj8/ve/zx133JFvfvObueGGG/KJT3wiK1euzFe/+tWccsopq223zTbbtDjeH/7wh8yaNWu1W65XrFiRu+66K4ceemg22mijtzyut/ssSVauXJkePXpk/Pjxq33WuXPnt9yuoqKi2X9bsscee+SFF17IHXfckT/+8Y856qijcuCBB+Y3v/lNkre+Jb13796r7buy8v8utUulUov7fXN7u3btUiqVmn3e0p9ZSwE1AMD7lXATAOA95JFHHsny5cvz4x//OO3arXq8+o033viO2+2www7ZYYcdMnLkyHz2s5/N1VdfnU984hPZY4898sQTT6wWor6dK6+8MkcffXTOOuusZu3f+973cuWVV+bQQw/NrrvummuuuSbLli1bbfZmp06dsu222+ZPf/pTiyuS77HHHpkzZ04qKytXex7mm9XX1+ell17KlltumSSZOHFi2rVr13T7e1VVVVasWLHadrW1tRk+fHiGDx+eT3/60znkkEPyyiuvpKqqKvfcc08uvvjiNf5dvKFfv36pr6/PzJkzm2ZvPvnkk2loaGia/br55pvnr3/9a7PtpkyZ0uLsVgAAVrGgEADAe0jfvn2zfPny/OxnP8v06dNz3XXX5bLLLnvL/q+//npOPvnkjB8/Pi+++GIeeOCBPPzww02B2+mnn56JEyfmpJNOypQpU/Lss8/mtttuy//7f/+vxfFefvnl3H777Tn++OPTv3//Zq/jjz8+t912W15++eWcfPLJaWxszNFHH51HHnkkzz77bK677ro8/fTTSVbNJv3xj3+cCy+8MM8++2weffTR/OxnP0uSHHjggRk0aFCOPPLI/OEPf8iMGTPy4IMP5uyzz262yntNTU2OP/74TJ06Nffdd19OOeWUHHXUUU23pG+77bZ57LHH8vTTT2fevHlZtmxZfvKTn+SGG27IU089lWeeeSa//vWv071793Tu3Dl33nlntt9++/Tp06fVfy4HHnhgdt1113zuc5/Lo48+mr/85S857rjjsu+++zbdZv6Rj3wkjzzySK699to8++yz+eY3v7la2AkAQHPCTQCA95APfvCDOf/88/P9738//fv3zy9/+cuMHj36Lfu3b98+8+fPz3HHHZcddtghRx11VA499NB861vfSpLsuuuumTBhQp599tkMGTIku+++e84555z06NGjxfGuvfbabLzxxi0+L3P//fdPp06dct1112WzzTbL3XffnQULFmTffffNgAEDcsUVVzTNUjz++ONzwQUX5JJLLskuu+ySj370o3n22WeTrLqtfOzYsRk6dGi++MUvZocddsjRRx+dGTNmpFu3bk3722677fLJT34yhx12WIYNG5b+/fs3W1Tpy1/+cnbccccMHDgwm2++eR544IFssskm+f73v5+BAwdmzz33zIwZMzJ27Ni0a9cut956a6tXSX9DRUVFfvvb36ZLly4ZOnRoDjzwwPTp0ydjxoxp6nPwwQfnnHPOyde//vXsueeeee2113Lcccet1f4AAN4vKkr/+mAfAAAouHPPPTe//e1vM2XKlHUy3ooVK7LFFlvkjjvuyIc+9KF1MiYAAO+emZsAAPAO5s+fn5EjR7ZqVXMAANY/CwoBAMA72GKLLXL22WeXuwwAAP6F29IBAAAAgEJyWzoAAAAAUEjCTQAAAACgkISbAAAAAEAhCTcBAAAAgEISbgIAAAAAhSTcBAAAAAAKSbgJAAAAABSScBMAAAAAKCThJgAAAABQSP8fgxx8lxulCG4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1600x900 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Compute and plot the false-accept/false-reject curve from the metrics above (requires that all cells have been run)\n",
    "\n",
    "from openwakeword.metrics import generate_roc_curve_fprs, generate_roc_curve_tprs\n",
    "\n",
    "fprs = generate_roc_curve_fprs(predictions_dipco, n_points=50)\n",
    "tprs = generate_roc_curve_tprs(positive_scores, n_points=50)\n",
    "frr = [1 - i for i in tprs]\n",
    "\n",
    "# Make plot\n",
    "plt.figure(figsize=(16,9))\n",
    "plt.plot(fprs, frr)\n",
    "plt.ylim(0,max(frr)*2)\n",
    "plt.xlim(0,2)\n",
    "plt.xlabel(\"False Accepts/Hour\")\n",
    "plt.ylabel(\"False Reject Rate\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2207997e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "torch_gpu",
   "language": "python",
   "name": "torch_gpu"
  },
  "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"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "228.667px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
