diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f7bc8fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.ipynb_checkpoints +PyHa/__pycache__ +PyHa/microfaune_package/microfaune/__pycache__ \ No newline at end of file diff --git a/Manual_Labels.csv b/Manual_Labels.csv deleted file mode 100644 index 4813300..0000000 --- a/Manual_Labels.csv +++ /dev/null @@ -1,109 +0,0 @@ -FOLDER,IN FILE,CLIP LENGTH,CHANNEL,OFFSET,DURATION,SAMPLING RATE,MANUAL ID,TIME SPENT -./TEST/,20190622_210000.WAV,60,0,1.125,0.42,384000,bird,405.916 -./TEST/,20190622_210000.WAV,60,0,2.155,0.38,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,2.625,0.29,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,3.085,0.41,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,1.605,0.35,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,3.665,0.71,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,5.665,0.18,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,9.635,0.38,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,7.585,0.75,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,6.955,0.44,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,10.985,0.82,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,12.445,0.39,384000,bird,405.919 -./TEST/,20190622_210000.WAV,60,0,12.935,0.34,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,17.625,0.5,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,13.895,0.45,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,18.235,0.76,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,20.805,0.75,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,23.275,0.5,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,22.745,0.35,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,24.085,0.52,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,25.895,0.45,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,26.445,0.48,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,27.205,0.49,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,28.875,0.57,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,30.025,0.19,384000,bird,405.92 -./TEST/,20190622_210000.WAV,60,0,30.975,0.49,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,32.075,0.46,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,34.995,0.56,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,36.475,0.44,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,37.315,1.51,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,39.445,0.49,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,40.285,0.42,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,40.795,0.43,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,41.585,0.88,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,43.095,0.67,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,44.935,0.21,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,45.175,0.73,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,47.735,0.51,384000,bird,405.921 -./TEST/,20190622_210000.WAV,60,0,50.815,0.34,384000,bird,405.922 -./TEST/,20190622_210000.WAV,60,0,52.605,0.33,384000,bird,405.922 -./TEST/,20190622_210000.WAV,60,0,52.915,0.67,384000,bird,405.922 -./TEST/,20190622_210000.WAV,60,0,53.815,0.49,384000,bird,405.922 -./TEST/,20190622_210000.WAV,60,0,55.185,0.65,384000,bird,405.922 -./TEST/,20190622_210000.WAV,60,0,57.195,1.19,384000,bird,405.922 -./TEST/,20190623_222000.WAV,60,0,20.055,0.83,384000,bird,132.36 -./TEST/,20190623_222000.WAV,60,0,15.765,0.67,384000,bird,132.357 -./TEST/,20190623_222000.WAV,60,0,17.235,1,384000,bird,132.359 -./TEST/,20190623_222000.WAV,60,0,20.985,1.07,384000,bird,132.36 -./TEST/,20190623_222000.WAV,60,0,18.845,0.95,384000,bird,132.36 -./TEST/,20190623_222000.WAV,60,0,22.515,1.1,384000,bird,132.36 -./TEST/,20190623_222000.WAV,60,0,25.235,0.91,384000,bird,132.36 -./TEST/,BlackFacedAntbird1.wav,31.2163,0,22.3124,3.5395,44100,bird,164.714 -./TEST/,BlackFacedAntbird1.wav,31.2163,0,0.4849,3.6496,44100,bird,164.712 -./TEST/,BlackFacedAntbird1.wav,31.2163,0,10.8037,3.6696,44100,bird,164.714 -./TEST/,HowlerMonkey1.WAV,60,0,15.465,4.04,384000,bird,393.667 -./TEST/,HowlerMonkey1.WAV,60,0,10.495,0.96,384000,bird,393.667 -./TEST/,HowlerMonkey1.WAV,60,0,11.845,0.81,384000,bird,393.667 -./TEST/,HowlerMonkey1.WAV,60,0,13.415,1.75,384000,bird,393.667 -./TEST/,HowlerMonkey1.WAV,60,0,0.655,9.15,384000,bird,393.665 -./TEST/,HowlerMonkey1.WAV,60,0,19.515,1.79,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,21.295,1.51,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,22.865,0.64,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,23.845,0.99,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,30.345,5.31,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,24.855,2.55,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,27.825,2.41,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,36.115,1.41,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,40.645,1.51,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,38.225,1.47,384000,bird,393.668 -./TEST/,HowlerMonkey1.WAV,60,0,40.005,0.63,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,44.355,0.61,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,42.945,1.38,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,44.995,1.54,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,46.865,1.67,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,48.595,0.73,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,49.405,1.03,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,50.935,1.03,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,52.085,0.75,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,52.855,3.2,384000,bird,393.669 -./TEST/,HowlerMonkey1.WAV,60,0,56.155,0.4,384000,bird,393.67 -./TEST/,HowlerMonkey1.WAV,60,0,56.695,0.98,384000,bird,393.67 -./TEST/,HowlerMonkey1.WAV,60,0,58.435,1.33,384000,bird,393.67 -./TEST/,ScreamingPiha2.wav,33.9331,0,2.4252,0.6501,44100,bird,180.97 -./TEST/,ScreamingPiha2.wav,33.9331,0,3.0553,2.1002,44100,bird,180.97 -./TEST/,ScreamingPiha2.wav,33.9331,0,0.7751,0.53,44100,bird,180.967 -./TEST/,ScreamingPiha2.wav,33.9331,0,10.2159,0.5701,44100,bird,180.97 -./TEST/,ScreamingPiha2.wav,33.9331,0,1.5751,0.8501,44100,bird,180.97 -./TEST/,ScreamingPiha2.wav,33.9331,0,11.166,0.7801,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,12.0661,0.8101,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,12.8862,0.6,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,21.777,0.59,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,13.4762,1.8002,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,23.9471,1.0301,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,22.9671,0.58,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,25.0172,1.1101,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,26.4474,0.46,44100,bird,180.971 -./TEST/,ScreamingPiha2.wav,33.9331,0,29.0376,0.5801,44100,bird,180.972 -./TEST/,ScreamingPiha2.wav,33.9331,0,26.9274,1.7602,44100,bird,180.972 -./TEST/,ScreamingPiha2.wav,33.9331,0,30.8178,0.72,44100,bird,180.972 -./TEST/,ScreamingPiha2.wav,33.9331,0,29.8677,0.9401,44100,bird,180.972 -./TEST/,ScreamingPiha2.wav,33.9331,0,31.5378,1.9502,44100,bird,180.972 -./TEST/,ScreamingPiha2.wav,33.9331,0,33.788,0.11,44100,bird,180.972 -./TEST/,20190624_152000.WAV,60,0,20.475,0.15,384000,bird,137.627 -./TEST/,20190624_152000.WAV,60,0,4.095,0.15,384000,bird,137.624 -./TEST/,20190624_152000.WAV,60,0,10.915,0.11,384000,bird,137.627 -./TEST/,20190624_152000.WAV,60,0,28.005,0.37,384000,bird,137.627 -./TEST/,20190624_152000.WAV,60,0,23.395,0.16,384000,bird,137.627 -./TEST/,20190624_152000.WAV,60,0,34.505,0.24,384000,bird,137.627 diff --git a/PyHa/__pycache__/IsoAutio.cpython-38.pyc b/PyHa/__pycache__/IsoAutio.cpython-38.pyc deleted file mode 100644 index 4598acf..0000000 Binary files a/PyHa/__pycache__/IsoAutio.cpython-38.pyc and /dev/null differ diff --git a/PyHa/__pycache__/isolation.cpython-38.pyc b/PyHa/__pycache__/isolation.cpython-38.pyc deleted file mode 100644 index d4fd60a..0000000 Binary files a/PyHa/__pycache__/isolation.cpython-38.pyc and /dev/null differ diff --git a/PyHa/__pycache__/statistics.cpython-38.pyc b/PyHa/__pycache__/statistics.cpython-38.pyc deleted file mode 100644 index a64c1fa..0000000 Binary files a/PyHa/__pycache__/statistics.cpython-38.pyc and /dev/null differ diff --git a/PyHa/__pycache__/visualizations.cpython-38.pyc b/PyHa/__pycache__/visualizations.cpython-38.pyc deleted file mode 100644 index 5282c33..0000000 Binary files a/PyHa/__pycache__/visualizations.cpython-38.pyc and /dev/null differ diff --git a/PyHa/microfaune_package/microfaune/__pycache__/__init__.cpython-35.pyc b/PyHa/microfaune_package/microfaune/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 7bae4b4..0000000 Binary files a/PyHa/microfaune_package/microfaune/__pycache__/__init__.cpython-35.pyc and /dev/null differ diff --git a/PyHa/microfaune_package/microfaune/__pycache__/__init__.cpython-38.pyc b/PyHa/microfaune_package/microfaune/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 50b369c..0000000 Binary files a/PyHa/microfaune_package/microfaune/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/PyHa/microfaune_package/microfaune/__pycache__/audio.cpython-38.pyc b/PyHa/microfaune_package/microfaune/__pycache__/audio.cpython-38.pyc deleted file mode 100644 index a23c441..0000000 Binary files a/PyHa/microfaune_package/microfaune/__pycache__/audio.cpython-38.pyc and /dev/null differ diff --git a/PyHa/microfaune_package/microfaune/__pycache__/detection.cpython-35.pyc b/PyHa/microfaune_package/microfaune/__pycache__/detection.cpython-35.pyc deleted file mode 100644 index 0b256b0..0000000 Binary files a/PyHa/microfaune_package/microfaune/__pycache__/detection.cpython-35.pyc and /dev/null differ diff --git a/PyHa/microfaune_package/microfaune/__pycache__/detection.cpython-38.pyc b/PyHa/microfaune_package/microfaune/__pycache__/detection.cpython-38.pyc deleted file mode 100644 index c158905..0000000 Binary files a/PyHa/microfaune_package/microfaune/__pycache__/detection.cpython-38.pyc and /dev/null differ diff --git a/PyHa_Tutorial.ipynb b/PyHa_Tutorial.ipynb index a858fd8..e4d26c3 100644 --- a/PyHa_Tutorial.ipynb +++ b/PyHa_Tutorial.ipynb @@ -6,7 +6,6 @@ "metadata": {}, "outputs": [], "source": [ - "#from microfaune_local_score import *\n", "from PyHa.statistics import *\n", "from PyHa.IsoAutio import *\n", "from PyHa.visualizations import *\n", @@ -72,7 +71,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -109,292 +110,402 @@ " \n", " 0\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha4.wav\n", " 0\n", - " 60.000000\n", + " 13.557551\n", " 44100\n", - " 0.000000\n", - " 34.056122\n", + " 2.363605\n", + " 9.469524\n", " bird\n", " \n", " \n", " 1\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha9.wav\n", " 0\n", - " 60.000000\n", + " 37.302857\n", " 44100\n", - " 37.229116\n", - " 9.005578\n", + " 0.415034\n", + " 4.180544\n", " bird\n", " \n", " \n", " 2\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha9.wav\n", " 0\n", - " 60.000000\n", + " 37.302857\n", " 44100\n", - " 51.588231\n", - " 6.755442\n", + " 4.868912\n", + " 12.369184\n", " bird\n", " \n", " \n", " 3\n", " ./TEST/\n", - " 20190623_222000.WAV\n", + " ScreamingPiha9.wav\n", " 0\n", - " 60.000000\n", + " 37.302857\n", " 44100\n", - " 0.000000\n", - " 6.567347\n", + " 23.078776\n", + " 3.461429\n", " bird\n", " \n", " \n", " 4\n", " ./TEST/\n", - " 20190623_222000.WAV\n", + " ScreamingPiha9.wav\n", " 0\n", - " 60.000000\n", + " 37.302857\n", " 44100\n", - " 12.106463\n", - " 2.000000\n", + " 27.091905\n", + " 7.961701\n", " bird\n", " \n", " \n", " 5\n", " ./TEST/\n", - " 20190623_222000.WAV\n", + " ScreamingPiha9.wav\n", " 0\n", - " 60.000000\n", + " 37.302857\n", " 44100\n", - " 18.276939\n", - " 8.472041\n", + " 35.350136\n", + " 1.952721\n", " bird\n", " \n", " \n", " 6\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha6.wav\n", " 0\n", - " 31.216327\n", - " 44100\n", - " 0.000000\n", - " 1.371156\n", + " 70.635102\n", + " 22050\n", + " 0.113469\n", + " 14.062585\n", " bird\n", " \n", " \n", " 7\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha6.wav\n", " 0\n", - " 31.216327\n", - " 44100\n", - " 2.827551\n", - " 3.438231\n", + " 70.635102\n", + " 22050\n", + " 14.727755\n", + " 4.134150\n", " bird\n", " \n", " \n", " 8\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha6.wav\n", " 0\n", - " 31.216327\n", - " 44100\n", - " 6.423129\n", - " 2.301565\n", + " 70.635102\n", + " 22050\n", + " 19.042449\n", + " 27.563401\n", " bird\n", " \n", " \n", " 9\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha6.wav\n", " 0\n", - " 31.216327\n", - " 44100\n", - " 8.812449\n", - " 2.742313\n", + " 70.635102\n", + " 22050\n", + " 47.203946\n", + " 4.876463\n", " bird\n", " \n", " \n", " 10\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha6.wav\n", " 0\n", - " 31.216327\n", - " 44100\n", - " 14.402993\n", - " 4.319728\n", + " 70.635102\n", + " 22050\n", + " 55.879728\n", + " 7.752925\n", " bird\n", " \n", " \n", " 11\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha5.wav\n", " 0\n", - " 31.216327\n", + " 54.177959\n", " 44100\n", - " 19.088844\n", - " 3.925374\n", + " 0.000000\n", + " 9.188639\n", " bird\n", " \n", " \n", " 12\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha5.wav\n", " 0\n", - " 31.216327\n", + " 54.177959\n", " 44100\n", - " 25.908844\n", - " 4.598095\n", + " 9.740340\n", + " 7.149796\n", " bird\n", " \n", " \n", " 13\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha5.wav\n", " 0\n", - " 60.000000\n", + " 54.177959\n", " 44100\n", - " 0.000000\n", - " 4.525986\n", + " 20.921429\n", + " 10.861361\n", " bird\n", " \n", " \n", " 14\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha5.wav\n", " 0\n", - " 60.000000\n", + " 54.177959\n", " 44100\n", - " 4.776122\n", - " 4.806871\n", + " 31.847347\n", + " 19.142789\n", " bird\n", " \n", " \n", " 15\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha5.wav\n", " 0\n", - " 60.000000\n", + " 54.177959\n", " 44100\n", - " 12.060068\n", - " 2.023197\n", + " 52.469728\n", + " 1.708231\n", " bird\n", " \n", " \n", " 16\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha3.wav\n", " 0\n", - " 60.000000\n", - " 44100\n", - " 16.212381\n", - " 2.000000\n", + " 6.844082\n", + " 22050\n", + " 0.709887\n", + " 5.558413\n", " bird\n", " \n", " \n", " 17\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 22.522041\n", - " 3.994966\n", + " 0.000000\n", + " 1.139184\n", " bird\n", " \n", " \n", " 18\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 26.859932\n", - " 3.438231\n", + " 2.247619\n", + " 7.590544\n", " bird\n", " \n", " \n", " 19\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 35.234150\n", - " 5.711565\n", + " 9.856327\n", + " 9.608707\n", " bird\n", " \n", " \n", " 20\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 43.793946\n", - " 4.157347\n", + " 20.666259\n", + " 9.260748\n", " bird\n", " \n", " \n", " 21\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 48.433401\n", - " 4.899660\n", + " 30.084354\n", + " 8.495238\n", " bird\n", " \n", " \n", " 22\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 55.160612\n", - " 4.366122\n", + " 39.641633\n", + " 10.907755\n", " bird\n", " \n", " \n", " 23\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 7.722177\n", - " 5.108435\n", + " 51.982585\n", + " 6.709048\n", " bird\n", " \n", " \n", " 24\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 13.567891\n", - " 2.000000\n", + " 58.964966\n", + " 2.115986\n", " bird\n", " \n", " \n", " 25\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha10.wav\n", " 0\n", - " 60.000000\n", + " 89.782857\n", " 44100\n", - " 17.093878\n", - " 3.647007\n", + " 61.771837\n", + " 2.023197\n", " bird\n", " \n", " \n", " 26\n", " ./TEST/\n", + " ScreamingPiha10.wav\n", + " 0\n", + " 89.782857\n", + " 44100\n", + " 64.833878\n", + " 7.219388\n", + " bird\n", + " \n", + " \n", + " 27\n", + " ./TEST/\n", + " ScreamingPiha10.wav\n", + " 0\n", + " 89.782857\n", + " 44100\n", + " 72.674558\n", + " 4.296531\n", + " bird\n", + " \n", + " \n", + " 28\n", + " ./TEST/\n", + " ScreamingPiha10.wav\n", + " 0\n", + " 89.782857\n", + " 44100\n", + " 81.071973\n", + " 2.023197\n", + " bird\n", + " \n", + " \n", + " 29\n", + " ./TEST/\n", + " ScreamingPiha10.wav\n", + " 0\n", + " 89.782857\n", + " 44100\n", + " 87.196054\n", + " 2.586803\n", + " bird\n", + " \n", + " \n", + " 30\n", + " ./TEST/\n", + " ScreamingPiha1.wav\n", + " 0\n", + " 32.616000\n", + " 16000\n", + " 0.000000\n", + " 2.086937\n", + " bird\n", + " \n", + " \n", + " 31\n", + " ./TEST/\n", + " ScreamingPiha1.wav\n", + " 0\n", + " 32.616000\n", + " 16000\n", + " 10.316937\n", + " 2.255750\n", + " bird\n", + " \n", + " \n", + " 32\n", + " ./TEST/\n", + " ScreamingPiha1.wav\n", + " 0\n", + " 32.616000\n", + " 16000\n", + " 20.099375\n", + " 10.887313\n", + " bird\n", + " \n", + " \n", + " 33\n", + " ./TEST/\n", + " ScreamingPiha8.wav\n", + " 0\n", + " 44.120816\n", + " 44100\n", + " 0.000000\n", + " 1.881497\n", + " bird\n", + " \n", + " \n", + " 34\n", + " ./TEST/\n", + " ScreamingPiha8.wav\n", + " 0\n", + " 44.120816\n", + " 44100\n", + " 2.062041\n", + " 5.966735\n", + " bird\n", + " \n", + " \n", + " 35\n", + " ./TEST/\n", + " ScreamingPiha8.wav\n", + " 0\n", + " 44.120816\n", + " 44100\n", + " 8.255714\n", + " 35.865102\n", + " bird\n", + " \n", + " \n", + " 36\n", + " ./TEST/\n", " ScreamingPiha2.wav\n", " 0\n", " 33.933061\n", @@ -404,7 +515,7 @@ " bird\n", " \n", " \n", - " 27\n", + " 37\n", " ./TEST/\n", " ScreamingPiha2.wav\n", " 0\n", @@ -415,7 +526,7 @@ " bird\n", " \n", " \n", - " 28\n", + " 38\n", " ./TEST/\n", " ScreamingPiha2.wav\n", " 0\n", @@ -426,7 +537,7 @@ " bird\n", " \n", " \n", - " 29\n", + " 39\n", " ./TEST/\n", " ScreamingPiha2.wav\n", " 0\n", @@ -437,7 +548,7 @@ " bird\n", " \n", " \n", - " 30\n", + " 40\n", " ./TEST/\n", " ScreamingPiha2.wav\n", " 0\n", @@ -447,76 +558,291 @@ " 2.231973\n", " bird\n", " \n", + " \n", + " 41\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 0.000000\n", + " 4.062041\n", + " bird\n", + " \n", + " \n", + " 42\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 6.330340\n", + " 8.356054\n", + " bird\n", + " \n", + " \n", + " 43\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 15.377279\n", + " 6.453878\n", + " bird\n", + " \n", + " \n", + " 44\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 23.032381\n", + " 7.915306\n", + " bird\n", + " \n", + " \n", + " 45\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 31.221020\n", + " 7.033810\n", + " bird\n", + " \n", + " \n", + " 46\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 39.873605\n", + " 6.361088\n", + " bird\n", + " \n", + " \n", + " 47\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 47.435918\n", + " 8.309660\n", + " bird\n", + " \n", + " \n", + " 48\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " 0\n", + " 63.895510\n", + " 44100\n", + " 57.851497\n", + " 6.044014\n", + " bird\n", + " \n", + " \n", + " 49\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " 0\n", + " 133.590204\n", + " 44100\n", + " 0.000000\n", + " 55.420816\n", + " bird\n", + " \n", + " \n", + " 50\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " 0\n", + " 133.590204\n", + " 44100\n", + " 56.018912\n", + " 15.918367\n", + " bird\n", + " \n", + " \n", + " 51\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " 0\n", + " 133.590204\n", + " 44100\n", + " 72.349796\n", + " 3.902177\n", + " bird\n", + " \n", + " \n", + " 52\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " 0\n", + " 133.590204\n", + " 44100\n", + " 77.847551\n", + " 36.842313\n", + " bird\n", + " \n", + " \n", + " 53\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " 0\n", + " 133.590204\n", + " 44100\n", + " 115.983878\n", + " 7.822517\n", + " bird\n", + " \n", + " \n", + " 54\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " 0\n", + " 133.590204\n", + " 44100\n", + " 124.938027\n", + " 4.969252\n", + " bird\n", + " \n", + " \n", + " 55\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " 0\n", + " 133.590204\n", + " 44100\n", + " 130.064626\n", + " 3.525578\n", + " bird\n", + " \n", " \n", "\n", "" ], "text/plain": [ - " FOLDER IN FILE CHANNEL CLIP LENGTH SAMPLE RATE \\\n", - "0 ./TEST/ 20190622_210000.WAV 0 60.000000 44100 \n", - "1 ./TEST/ 20190622_210000.WAV 0 60.000000 44100 \n", - "2 ./TEST/ 20190622_210000.WAV 0 60.000000 44100 \n", - "3 ./TEST/ 20190623_222000.WAV 0 60.000000 44100 \n", - "4 ./TEST/ 20190623_222000.WAV 0 60.000000 44100 \n", - "5 ./TEST/ 20190623_222000.WAV 0 60.000000 44100 \n", - "6 ./TEST/ BlackFacedAntbird1.wav 0 31.216327 44100 \n", - "7 ./TEST/ BlackFacedAntbird1.wav 0 31.216327 44100 \n", - "8 ./TEST/ BlackFacedAntbird1.wav 0 31.216327 44100 \n", - "9 ./TEST/ BlackFacedAntbird1.wav 0 31.216327 44100 \n", - "10 ./TEST/ BlackFacedAntbird1.wav 0 31.216327 44100 \n", - "11 ./TEST/ BlackFacedAntbird1.wav 0 31.216327 44100 \n", - "12 ./TEST/ BlackFacedAntbird1.wav 0 31.216327 44100 \n", - "13 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "14 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "15 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "16 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "17 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "18 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "19 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "20 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "21 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "22 ./TEST/ HowlerMonkey1.WAV 0 60.000000 44100 \n", - "23 ./TEST/ 20190624_152000.WAV 0 60.000000 44100 \n", - "24 ./TEST/ 20190624_152000.WAV 0 60.000000 44100 \n", - "25 ./TEST/ 20190624_152000.WAV 0 60.000000 44100 \n", - "26 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", - "27 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", - "28 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", - "29 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", - "30 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", + " FOLDER IN FILE CHANNEL CLIP LENGTH SAMPLE RATE \\\n", + "0 ./TEST/ ScreamingPiha4.wav 0 13.557551 44100 \n", + "1 ./TEST/ ScreamingPiha9.wav 0 37.302857 44100 \n", + "2 ./TEST/ ScreamingPiha9.wav 0 37.302857 44100 \n", + "3 ./TEST/ ScreamingPiha9.wav 0 37.302857 44100 \n", + "4 ./TEST/ ScreamingPiha9.wav 0 37.302857 44100 \n", + "5 ./TEST/ ScreamingPiha9.wav 0 37.302857 44100 \n", + "6 ./TEST/ ScreamingPiha6.wav 0 70.635102 22050 \n", + "7 ./TEST/ ScreamingPiha6.wav 0 70.635102 22050 \n", + "8 ./TEST/ ScreamingPiha6.wav 0 70.635102 22050 \n", + "9 ./TEST/ ScreamingPiha6.wav 0 70.635102 22050 \n", + "10 ./TEST/ ScreamingPiha6.wav 0 70.635102 22050 \n", + "11 ./TEST/ ScreamingPiha5.wav 0 54.177959 44100 \n", + "12 ./TEST/ ScreamingPiha5.wav 0 54.177959 44100 \n", + "13 ./TEST/ ScreamingPiha5.wav 0 54.177959 44100 \n", + "14 ./TEST/ ScreamingPiha5.wav 0 54.177959 44100 \n", + "15 ./TEST/ ScreamingPiha5.wav 0 54.177959 44100 \n", + "16 ./TEST/ ScreamingPiha3.wav 0 6.844082 22050 \n", + "17 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "18 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "19 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "20 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "21 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "22 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "23 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "24 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "25 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "26 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "27 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "28 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "29 ./TEST/ ScreamingPiha10.wav 0 89.782857 44100 \n", + "30 ./TEST/ ScreamingPiha1.wav 0 32.616000 16000 \n", + "31 ./TEST/ ScreamingPiha1.wav 0 32.616000 16000 \n", + "32 ./TEST/ ScreamingPiha1.wav 0 32.616000 16000 \n", + "33 ./TEST/ ScreamingPiha8.wav 0 44.120816 44100 \n", + "34 ./TEST/ ScreamingPiha8.wav 0 44.120816 44100 \n", + "35 ./TEST/ ScreamingPiha8.wav 0 44.120816 44100 \n", + "36 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", + "37 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", + "38 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", + "39 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", + "40 ./TEST/ ScreamingPiha2.wav 0 33.933061 44100 \n", + "41 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "42 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "43 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "44 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "45 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "46 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "47 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "48 ./TEST/ ScreamingPiha11.wav 0 63.895510 44100 \n", + "49 ./TEST/ ScreamingPiha7.wav 0 133.590204 44100 \n", + "50 ./TEST/ ScreamingPiha7.wav 0 133.590204 44100 \n", + "51 ./TEST/ ScreamingPiha7.wav 0 133.590204 44100 \n", + "52 ./TEST/ ScreamingPiha7.wav 0 133.590204 44100 \n", + "53 ./TEST/ ScreamingPiha7.wav 0 133.590204 44100 \n", + "54 ./TEST/ ScreamingPiha7.wav 0 133.590204 44100 \n", + "55 ./TEST/ ScreamingPiha7.wav 0 133.590204 44100 \n", "\n", - " OFFSET DURATION MANUAL ID \n", - "0 0.000000 34.056122 bird \n", - "1 37.229116 9.005578 bird \n", - "2 51.588231 6.755442 bird \n", - "3 0.000000 6.567347 bird \n", - "4 12.106463 2.000000 bird \n", - "5 18.276939 8.472041 bird \n", - "6 0.000000 1.371156 bird \n", - "7 2.827551 3.438231 bird \n", - "8 6.423129 2.301565 bird \n", - "9 8.812449 2.742313 bird \n", - "10 14.402993 4.319728 bird \n", - "11 19.088844 3.925374 bird \n", - "12 25.908844 4.598095 bird \n", - "13 0.000000 4.525986 bird \n", - "14 4.776122 4.806871 bird \n", - "15 12.060068 2.023197 bird \n", - "16 16.212381 2.000000 bird \n", - "17 22.522041 3.994966 bird \n", - "18 26.859932 3.438231 bird \n", - "19 35.234150 5.711565 bird \n", - "20 43.793946 4.157347 bird \n", - "21 48.433401 4.899660 bird \n", - "22 55.160612 4.366122 bird \n", - "23 7.722177 5.108435 bird \n", - "24 13.567891 2.000000 bird \n", - "25 17.093878 3.647007 bird \n", - "26 0.000000 12.227483 bird \n", - "27 13.103946 2.463946 bird \n", - "28 20.851837 5.456395 bird \n", - "29 26.883129 3.345442 bird \n", - "30 31.313810 2.231973 bird " + " OFFSET DURATION MANUAL ID \n", + "0 2.363605 9.469524 bird \n", + "1 0.415034 4.180544 bird \n", + "2 4.868912 12.369184 bird \n", + "3 23.078776 3.461429 bird \n", + "4 27.091905 7.961701 bird \n", + "5 35.350136 1.952721 bird \n", + "6 0.113469 14.062585 bird \n", + "7 14.727755 4.134150 bird \n", + "8 19.042449 27.563401 bird \n", + "9 47.203946 4.876463 bird \n", + "10 55.879728 7.752925 bird \n", + "11 0.000000 9.188639 bird \n", + "12 9.740340 7.149796 bird \n", + "13 20.921429 10.861361 bird \n", + "14 31.847347 19.142789 bird \n", + "15 52.469728 1.708231 bird \n", + "16 0.709887 5.558413 bird \n", + "17 0.000000 1.139184 bird \n", + "18 2.247619 7.590544 bird \n", + "19 9.856327 9.608707 bird \n", + "20 20.666259 9.260748 bird \n", + "21 30.084354 8.495238 bird \n", + "22 39.641633 10.907755 bird \n", + "23 51.982585 6.709048 bird \n", + "24 58.964966 2.115986 bird \n", + "25 61.771837 2.023197 bird \n", + "26 64.833878 7.219388 bird \n", + "27 72.674558 4.296531 bird \n", + "28 81.071973 2.023197 bird \n", + "29 87.196054 2.586803 bird \n", + "30 0.000000 2.086937 bird \n", + "31 10.316937 2.255750 bird \n", + "32 20.099375 10.887313 bird \n", + "33 0.000000 1.881497 bird \n", + "34 2.062041 5.966735 bird \n", + "35 8.255714 35.865102 bird \n", + "36 0.000000 12.227483 bird \n", + "37 13.103946 2.463946 bird \n", + "38 20.851837 5.456395 bird \n", + "39 26.883129 3.345442 bird \n", + "40 31.313810 2.231973 bird \n", + "41 0.000000 4.062041 bird \n", + "42 6.330340 8.356054 bird \n", + "43 15.377279 6.453878 bird \n", + "44 23.032381 7.915306 bird \n", + "45 31.221020 7.033810 bird \n", + "46 39.873605 6.361088 bird \n", + "47 47.435918 8.309660 bird \n", + "48 57.851497 6.044014 bird \n", + "49 0.000000 55.420816 bird \n", + "50 56.018912 15.918367 bird \n", + "51 72.349796 3.902177 bird \n", + "52 77.847551 36.842313 bird \n", + "53 115.983878 7.822517 bird \n", + "54 124.938027 4.969252 bird \n", + "55 130.064626 3.525578 bird " ] }, "execution_count": 5, @@ -575,15 +901,15 @@ " \n", " \n", " 0\n", - " 31\n", - " 2.0\n", - " 5.353472\n", - " 5.725178\n", - " 1.371156\n", - " 2.603129\n", - " 4.157347\n", - " 5.282415\n", - " 34.056122\n", + " 56\n", + " 2.02\n", + " 8.803136\n", + " 9.554179\n", + " 1.139184\n", + " 3.509541\n", + " 6.581463\n", + " 9.312942\n", + " 55.420816\n", " \n", " \n", "\n", @@ -591,10 +917,10 @@ ], "text/plain": [ " COUNT MODE MEAN STANDARD DEVIATION MIN Q1 MEDIAN \\\n", - "0 31 2.0 5.353472 5.725178 1.371156 2.603129 4.157347 \n", + "0 56 2.02 8.803136 9.554179 1.139184 3.509541 6.581463 \n", "\n", " Q3 MAX \n", - "0 5.282415 34.056122 " + "0 9.312942 55.420816 " ] }, "execution_count": 6, @@ -647,69 +973,63 @@ " DURATION\n", " SAMPLING RATE\n", " MANUAL ID\n", - " TIME SPENT\n", " \n", " \n", " \n", " \n", " 0\n", " ./TEST/\n", - " 20190622_210000.WAV\n", - " 60.0\n", + " ScreamingPiha1.wav\n", + " 32.6160\n", " 0\n", - " 1.125\n", - " 0.42\n", - " 384000\n", + " 1.5448\n", + " 2.1297\n", + " 16000\n", " bird\n", - " 405.916\n", " \n", " \n", " 1\n", " ./TEST/\n", - " 20190622_210000.WAV\n", - " 60.0\n", + " ScreamingPiha1.wav\n", + " 32.6160\n", " 0\n", - " 2.155\n", - " 0.38\n", - " 384000\n", + " 10.1638\n", + " 0.8498\n", + " 16000\n", " bird\n", - " 405.919\n", " \n", " \n", " 2\n", " ./TEST/\n", - " 20190622_210000.WAV\n", - " 60.0\n", + " ScreamingPiha1.wav\n", + " 32.6160\n", " 0\n", - " 2.625\n", - " 0.29\n", - " 384000\n", + " 0.5549\n", + " 0.9999\n", + " 16000\n", " bird\n", - " 405.919\n", " \n", " \n", " 3\n", " ./TEST/\n", - " 20190622_210000.WAV\n", - " 60.0\n", + " ScreamingPiha1.wav\n", + " 32.6160\n", " 0\n", - " 3.085\n", - " 0.41\n", - " 384000\n", + " 8.7739\n", + " 0.8399\n", + " 16000\n", " bird\n", - " 405.919\n", " \n", " \n", " 4\n", " ./TEST/\n", - " 20190622_210000.WAV\n", - " 60.0\n", + " ScreamingPiha1.wav\n", + " 32.6160\n", " 0\n", - " 1.605\n", - " 0.35\n", - " 384000\n", + " 12.6335\n", + " 1.9997\n", + " 16000\n", " bird\n", - " 405.919\n", " \n", " \n", " ...\n", @@ -721,101 +1041,95 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", - " 103\n", + " 249\n", " ./TEST/\n", - " 20190624_152000.WAV\n", - " 60.0\n", + " ScreamingPiha2.wav\n", + " 33.9331\n", " 0\n", - " 4.095\n", - " 0.15\n", - " 384000\n", + " 26.9274\n", + " 1.7602\n", + " 44100\n", " bird\n", - " 137.624\n", " \n", " \n", - " 104\n", + " 250\n", " ./TEST/\n", - " 20190624_152000.WAV\n", - " 60.0\n", + " ScreamingPiha2.wav\n", + " 33.9331\n", " 0\n", - " 10.915\n", - " 0.11\n", - " 384000\n", + " 30.8178\n", + " 0.7200\n", + " 44100\n", " bird\n", - " 137.627\n", " \n", " \n", - " 105\n", + " 251\n", " ./TEST/\n", - " 20190624_152000.WAV\n", - " 60.0\n", + " ScreamingPiha2.wav\n", + " 33.9331\n", " 0\n", - " 28.005\n", - " 0.37\n", - " 384000\n", + " 29.8677\n", + " 0.9401\n", + " 44100\n", " bird\n", - " 137.627\n", " \n", " \n", - " 106\n", + " 252\n", " ./TEST/\n", - " 20190624_152000.WAV\n", - " 60.0\n", + " ScreamingPiha2.wav\n", + " 33.9331\n", " 0\n", - " 23.395\n", - " 0.16\n", - " 384000\n", + " 31.5378\n", + " 1.9502\n", + " 44100\n", " bird\n", - " 137.627\n", " \n", " \n", - " 107\n", + " 253\n", " ./TEST/\n", - " 20190624_152000.WAV\n", - " 60.0\n", + " ScreamingPiha2.wav\n", + " 33.9331\n", " 0\n", - " 34.505\n", - " 0.24\n", - " 384000\n", + " 33.7880\n", + " 0.1100\n", + " 44100\n", " bird\n", - " 137.627\n", " \n", " \n", "\n", - "

108 rows × 9 columns

\n", + "

254 rows × 8 columns

\n", "" ], "text/plain": [ - " FOLDER IN FILE CLIP LENGTH CHANNEL OFFSET DURATION \\\n", - "0 ./TEST/ 20190622_210000.WAV 60.0 0 1.125 0.42 \n", - "1 ./TEST/ 20190622_210000.WAV 60.0 0 2.155 0.38 \n", - "2 ./TEST/ 20190622_210000.WAV 60.0 0 2.625 0.29 \n", - "3 ./TEST/ 20190622_210000.WAV 60.0 0 3.085 0.41 \n", - "4 ./TEST/ 20190622_210000.WAV 60.0 0 1.605 0.35 \n", - ".. ... ... ... ... ... ... \n", - "103 ./TEST/ 20190624_152000.WAV 60.0 0 4.095 0.15 \n", - "104 ./TEST/ 20190624_152000.WAV 60.0 0 10.915 0.11 \n", - "105 ./TEST/ 20190624_152000.WAV 60.0 0 28.005 0.37 \n", - "106 ./TEST/ 20190624_152000.WAV 60.0 0 23.395 0.16 \n", - "107 ./TEST/ 20190624_152000.WAV 60.0 0 34.505 0.24 \n", + " FOLDER IN FILE CLIP LENGTH CHANNEL OFFSET DURATION \\\n", + "0 ./TEST/ ScreamingPiha1.wav 32.6160 0 1.5448 2.1297 \n", + "1 ./TEST/ ScreamingPiha1.wav 32.6160 0 10.1638 0.8498 \n", + "2 ./TEST/ ScreamingPiha1.wav 32.6160 0 0.5549 0.9999 \n", + "3 ./TEST/ ScreamingPiha1.wav 32.6160 0 8.7739 0.8399 \n", + "4 ./TEST/ ScreamingPiha1.wav 32.6160 0 12.6335 1.9997 \n", + ".. ... ... ... ... ... ... \n", + "249 ./TEST/ ScreamingPiha2.wav 33.9331 0 26.9274 1.7602 \n", + "250 ./TEST/ ScreamingPiha2.wav 33.9331 0 30.8178 0.7200 \n", + "251 ./TEST/ ScreamingPiha2.wav 33.9331 0 29.8677 0.9401 \n", + "252 ./TEST/ ScreamingPiha2.wav 33.9331 0 31.5378 1.9502 \n", + "253 ./TEST/ ScreamingPiha2.wav 33.9331 0 33.7880 0.1100 \n", "\n", - " SAMPLING RATE MANUAL ID TIME SPENT \n", - "0 384000 bird 405.916 \n", - "1 384000 bird 405.919 \n", - "2 384000 bird 405.919 \n", - "3 384000 bird 405.919 \n", - "4 384000 bird 405.919 \n", - ".. ... ... ... \n", - "103 384000 bird 137.624 \n", - "104 384000 bird 137.627 \n", - "105 384000 bird 137.627 \n", - "106 384000 bird 137.627 \n", - "107 384000 bird 137.627 \n", + " SAMPLING RATE MANUAL ID \n", + "0 16000 bird \n", + "1 16000 bird \n", + "2 16000 bird \n", + "3 16000 bird \n", + "4 16000 bird \n", + ".. ... ... \n", + "249 44100 bird \n", + "250 44100 bird \n", + "251 44100 bird \n", + "252 44100 bird \n", + "253 44100 bird \n", "\n", - "[108 rows x 9 columns]" + "[254 rows x 8 columns]" ] }, "execution_count": 7, @@ -824,7 +1138,7 @@ } ], "source": [ - "manual_df = pd.read_csv(\"Manual_Labels.csv\")\n", + "manual_df = pd.read_csv(\"ScreamingPiha_Manual_Labels.csv\")\n", "#manual_df = pd.read_csv(\"BirdCLEF2020_Validation.csv\")\n", "manual_df" ] @@ -869,23 +1183,26 @@ " \n", " \n", " 0\n", - " 108\n", - " 0.49\n", - " 1.037133\n", - " 1.179231\n", + " 254\n", + " 1.87\n", + " 1.068224\n", + " 0.664488\n", " 0.11\n", - " 0.45\n", - " 0.67\n", - " 1.0775\n", - " 9.15\n", + " 0.532475\n", + " 0.78005\n", + " 1.767475\n", + " 3.1199\n", " \n", " \n", "\n", "" ], "text/plain": [ - " COUNT MODE MEAN STANDARD DEVIATION MIN Q1 MEDIAN Q3 MAX\n", - "0 108 0.49 1.037133 1.179231 0.11 0.45 0.67 1.0775 9.15" + " COUNT MODE MEAN STANDARD DEVIATION MIN Q1 MEDIAN \\\n", + "0 254 1.87 1.068224 0.664488 0.11 0.532475 0.78005 \n", + "\n", + " Q3 MAX \n", + "0 1.767475 3.1199 " ] }, "execution_count": 8, @@ -942,46 +1259,46 @@ " \n", " 0\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha1.wav\n", " 0\n", - " 1.125\n", - " 0.42\n", + " 1.5448\n", + " 2.1297\n", " bird\n", " \n", " \n", " 1\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha1.wav\n", " 0\n", - " 2.155\n", - " 0.38\n", + " 10.1638\n", + " 0.8498\n", " bird\n", " \n", " \n", " 2\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha1.wav\n", " 0\n", - " 2.625\n", - " 0.29\n", + " 0.5549\n", + " 0.9999\n", " bird\n", " \n", " \n", " 3\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha1.wav\n", " 0\n", - " 3.085\n", - " 0.41\n", + " 8.7739\n", + " 0.8399\n", " bird\n", " \n", " \n", " 4\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha1.wav\n", " 0\n", - " 1.605\n", - " 0.35\n", + " 12.6335\n", + " 1.9997\n", " bird\n", " \n", " \n", @@ -994,70 +1311,70 @@ " ...\n", " \n", " \n", - " 103\n", + " 249\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha2.wav\n", " 0\n", - " 4.095\n", - " 0.15\n", + " 26.9274\n", + " 1.7602\n", " bird\n", " \n", " \n", - " 104\n", + " 250\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha2.wav\n", " 0\n", - " 10.915\n", - " 0.11\n", + " 30.8178\n", + " 0.7200\n", " bird\n", " \n", " \n", - " 105\n", + " 251\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha2.wav\n", " 0\n", - " 28.005\n", - " 0.37\n", + " 29.8677\n", + " 0.9401\n", " bird\n", " \n", " \n", - " 106\n", + " 252\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha2.wav\n", " 0\n", - " 23.395\n", - " 0.16\n", + " 31.5378\n", + " 1.9502\n", " bird\n", " \n", " \n", - " 107\n", + " 253\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha2.wav\n", " 0\n", - " 34.505\n", - " 0.24\n", + " 33.7880\n", + " 0.1100\n", " bird\n", " \n", " \n", "\n", - "

108 rows × 6 columns

\n", + "

254 rows × 6 columns

\n", "" ], "text/plain": [ - " FOLDER IN FILE CHANNEL OFFSET DURATION MANUAL ID\n", - "0 ./TEST/ 20190622_210000.WAV 0 1.125 0.42 bird\n", - "1 ./TEST/ 20190622_210000.WAV 0 2.155 0.38 bird\n", - "2 ./TEST/ 20190622_210000.WAV 0 2.625 0.29 bird\n", - "3 ./TEST/ 20190622_210000.WAV 0 3.085 0.41 bird\n", - "4 ./TEST/ 20190622_210000.WAV 0 1.605 0.35 bird\n", - ".. ... ... ... ... ... ...\n", - "103 ./TEST/ 20190624_152000.WAV 0 4.095 0.15 bird\n", - "104 ./TEST/ 20190624_152000.WAV 0 10.915 0.11 bird\n", - "105 ./TEST/ 20190624_152000.WAV 0 28.005 0.37 bird\n", - "106 ./TEST/ 20190624_152000.WAV 0 23.395 0.16 bird\n", - "107 ./TEST/ 20190624_152000.WAV 0 34.505 0.24 bird\n", + " FOLDER IN FILE CHANNEL OFFSET DURATION MANUAL ID\n", + "0 ./TEST/ ScreamingPiha1.wav 0 1.5448 2.1297 bird\n", + "1 ./TEST/ ScreamingPiha1.wav 0 10.1638 0.8498 bird\n", + "2 ./TEST/ ScreamingPiha1.wav 0 0.5549 0.9999 bird\n", + "3 ./TEST/ ScreamingPiha1.wav 0 8.7739 0.8399 bird\n", + "4 ./TEST/ ScreamingPiha1.wav 0 12.6335 1.9997 bird\n", + ".. ... ... ... ... ... ...\n", + "249 ./TEST/ ScreamingPiha2.wav 0 26.9274 1.7602 bird\n", + "250 ./TEST/ ScreamingPiha2.wav 0 30.8178 0.7200 bird\n", + "251 ./TEST/ ScreamingPiha2.wav 0 29.8677 0.9401 bird\n", + "252 ./TEST/ ScreamingPiha2.wav 0 31.5378 1.9502 bird\n", + "253 ./TEST/ ScreamingPiha2.wav 0 33.7880 0.1100 bird\n", "\n", - "[108 rows x 6 columns]" + "[254 rows x 6 columns]" ] }, "execution_count": 9, @@ -1127,13 +1444,6 @@ "execution_count": 11, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:5 out of the last 8 calls to .predict_function at 0x7fd3c871d9d0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" - ] - }, { "name": "stderr", "output_type": "stream", @@ -1170,13 +1480,6 @@ "execution_count": 12, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:6 out of the last 9 calls to .predict_function at 0x7fd3f03ac040> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" - ] - }, { "name": "stderr", "output_type": "stream", @@ -1217,7 +1520,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:7 out of the last 10 calls to .predict_function at 0x7fd3c83815e0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" + "WARNING:tensorflow:5 out of the last 13 calls to .predict_function at 0x7f0ffc41b790> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" ] }, { @@ -1253,7 +1556,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:8 out of the last 11 calls to .predict_function at 0x7fd3c859d790> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" + "WARNING:tensorflow:6 out of the last 14 calls to .predict_function at 0x7f0ffc626dc0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" ] }, { @@ -1295,7 +1598,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:9 out of the last 12 calls to .predict_function at 0x7fd3c85dfca0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" + "WARNING:tensorflow:7 out of the last 15 calls to .predict_function at 0x7f0ffc28de50> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" ] }, { @@ -1397,81 +1700,126 @@ " \n", " 0\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha4.wav\n", " bird\n", - " 21.428753\n", - " 28.388390\n", - " 1.891293\n", - " 8.291565\n", - " 51.708435\n", - " 0.430148\n", - " 0.918898\n", - " 0.585988\n", - " 0.414415\n", + " 5.401565\n", + " 4.067959\n", + " 0.000000\n", + " 4.088027\n", + " 9.469524\n", + " 0.570416\n", + " 1.000000\n", + " 0.726452\n", + " 0.570416\n", " \n", " \n", " 1\n", " ./TEST/\n", - " 20190623_222000.WAV\n", + " ScreamingPiha9.wav\n", " bird\n", - " 4.859977\n", - " 12.179410\n", - " 1.670023\n", - " 41.290590\n", - " 18.709410\n", - " 0.285220\n", - " 0.744254\n", - " 0.412397\n", - " 0.259761\n", + " 23.139819\n", + " 6.785760\n", + " 5.452608\n", + " 1.924671\n", + " 35.378186\n", + " 0.773245\n", + " 0.809299\n", + " 0.790862\n", + " 0.654070\n", " \n", " \n", " 2\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha6.wav\n", " bird\n", - " 3.716395\n", - " 18.980068\n", - " 7.142313\n", - " 1.377551\n", - " 29.838776\n", - " 0.163743\n", - " 0.342250\n", - " 0.221510\n", - " 0.124549\n", + " 24.347528\n", + " 34.041995\n", + " 0.510839\n", + " 11.734694\n", + " 58.900363\n", + " 0.416985\n", + " 0.979450\n", + " 0.584940\n", + " 0.413368\n", " \n", " \n", " 3\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha5.wav\n", " bird\n", - " 33.955805\n", - " 5.968141\n", - " 17.614218\n", - " 2.461837\n", - " 57.538163\n", - " 0.850512\n", - " 0.658441\n", - " 0.742252\n", - " 0.590144\n", + " 30.348617\n", + " 17.702200\n", + " 4.950023\n", + " 1.177120\n", + " 53.000839\n", + " 0.631594\n", + " 0.859767\n", + " 0.728226\n", + " 0.572606\n", " \n", " \n", " 4\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha3.wav\n", " bird\n", - " 0.259977\n", - " 10.495465\n", - " 0.920023\n", - " 48.324535\n", - " 11.675465\n", - " 0.024172\n", - " 0.220320\n", - " 0.043564\n", - " 0.022267\n", + " 4.455692\n", + " 1.102721\n", + " 0.000000\n", + " 1.285669\n", + " 5.558413\n", + " 0.801612\n", + " 1.000000\n", + " 0.889883\n", + " 0.801612\n", " \n", " \n", " 5\n", " ./TEST/\n", + " ScreamingPiha10.wav\n", + " bird\n", + " 32.995147\n", + " 40.981179\n", + " 6.386145\n", + " 9.420385\n", + " 80.362472\n", + " 0.446023\n", + " 0.837838\n", + " 0.582143\n", + " 0.410579\n", + " \n", + " \n", + " 6\n", + " ./TEST/\n", + " ScreamingPiha1.wav\n", + " bird\n", + " 8.542625\n", + " 6.687375\n", + " 5.745563\n", + " 11.640438\n", + " 20.975562\n", + " 0.560908\n", + " 0.597880\n", + " 0.578804\n", + " 0.407266\n", + " \n", + " \n", + " 7\n", + " ./TEST/\n", + " ScreamingPiha8.wav\n", + " bird\n", + " 6.900091\n", + " 36.813243\n", + " 0.000000\n", + " 0.407483\n", + " 43.713333\n", + " 0.157849\n", + " 1.000000\n", + " 0.272659\n", + " 0.157849\n", + " \n", + " \n", + " 8\n", + " ./TEST/\n", " ScreamingPiha2.wav\n", " bird\n", " 16.004286\n", @@ -1484,34 +1832,79 @@ " 0.723898\n", " 0.567273\n", " \n", + " \n", + " 9\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " bird\n", + " 30.032902\n", + " 24.502948\n", + " 7.784467\n", + " 1.575193\n", + " 62.320317\n", + " 0.550700\n", + " 0.794156\n", + " 0.650392\n", + " 0.481912\n", + " \n", + " \n", + " 10\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " bird\n", + " 49.756531\n", + " 78.644490\n", + " 1.873673\n", + " 3.315510\n", + " 130.274694\n", + " 0.387509\n", + " 0.963710\n", + " 0.552754\n", + " 0.381936\n", + " \n", " \n", "\n", "" ], "text/plain": [ - " FOLDER IN FILE MANUAL ID TRUE POSITIVE FALSE POSITIVE \\\n", - "0 ./TEST/ 20190622_210000.WAV bird 21.428753 28.388390 \n", - "1 ./TEST/ 20190623_222000.WAV bird 4.859977 12.179410 \n", - "2 ./TEST/ BlackFacedAntbird1.wav bird 3.716395 18.980068 \n", - "3 ./TEST/ HowlerMonkey1.WAV bird 33.955805 5.968141 \n", - "4 ./TEST/ 20190624_152000.WAV bird 0.259977 10.495465 \n", - "5 ./TEST/ ScreamingPiha2.wav bird 16.004286 9.720952 \n", + " FOLDER IN FILE MANUAL ID TRUE POSITIVE FALSE POSITIVE \\\n", + "0 ./TEST/ ScreamingPiha4.wav bird 5.401565 4.067959 \n", + "1 ./TEST/ ScreamingPiha9.wav bird 23.139819 6.785760 \n", + "2 ./TEST/ ScreamingPiha6.wav bird 24.347528 34.041995 \n", + "3 ./TEST/ ScreamingPiha5.wav bird 30.348617 17.702200 \n", + "4 ./TEST/ ScreamingPiha3.wav bird 4.455692 1.102721 \n", + "5 ./TEST/ ScreamingPiha10.wav bird 32.995147 40.981179 \n", + "6 ./TEST/ ScreamingPiha1.wav bird 8.542625 6.687375 \n", + "7 ./TEST/ ScreamingPiha8.wav bird 6.900091 36.813243 \n", + "8 ./TEST/ ScreamingPiha2.wav bird 16.004286 9.720952 \n", + "9 ./TEST/ ScreamingPiha11.wav bird 30.032902 24.502948 \n", + "10 ./TEST/ ScreamingPiha7.wav bird 49.756531 78.644490 \n", "\n", - " FALSE NEGATIVE TRUE NEGATIVE UNION PRECISION RECALL F1 \\\n", - "0 1.891293 8.291565 51.708435 0.430148 0.918898 0.585988 \n", - "1 1.670023 41.290590 18.709410 0.285220 0.744254 0.412397 \n", - "2 7.142313 1.377551 29.838776 0.163743 0.342250 0.221510 \n", - "3 17.614218 2.461837 57.538163 0.850512 0.658441 0.742252 \n", - "4 0.920023 48.324535 11.675465 0.024172 0.220320 0.043564 \n", - "5 2.487438 5.720385 28.212676 0.622124 0.865484 0.723898 \n", + " FALSE NEGATIVE TRUE NEGATIVE UNION PRECISION RECALL F1 \\\n", + "0 0.000000 4.088027 9.469524 0.570416 1.000000 0.726452 \n", + "1 5.452608 1.924671 35.378186 0.773245 0.809299 0.790862 \n", + "2 0.510839 11.734694 58.900363 0.416985 0.979450 0.584940 \n", + "3 4.950023 1.177120 53.000839 0.631594 0.859767 0.728226 \n", + "4 0.000000 1.285669 5.558413 0.801612 1.000000 0.889883 \n", + "5 6.386145 9.420385 80.362472 0.446023 0.837838 0.582143 \n", + "6 5.745563 11.640438 20.975562 0.560908 0.597880 0.578804 \n", + "7 0.000000 0.407483 43.713333 0.157849 1.000000 0.272659 \n", + "8 2.487438 5.720385 28.212676 0.622124 0.865484 0.723898 \n", + "9 7.784467 1.575193 62.320317 0.550700 0.794156 0.650392 \n", + "10 1.873673 3.315510 130.274694 0.387509 0.963710 0.552754 \n", "\n", - " Global IoU \n", - "0 0.414415 \n", - "1 0.259761 \n", - "2 0.124549 \n", - "3 0.590144 \n", - "4 0.022267 \n", - "5 0.567273 " + " Global IoU \n", + "0 0.570416 \n", + "1 0.654070 \n", + "2 0.413368 \n", + "3 0.572606 \n", + "4 0.801612 \n", + "5 0.410579 \n", + "6 0.407266 \n", + "7 0.157849 \n", + "8 0.567273 \n", + "9 0.481912 \n", + "10 0.381936 " ] }, "execution_count": 17, @@ -1568,18 +1961,18 @@ " \n", " 0\n", " bird\n", - " 0.483408\n", - " 0.716613\n", - " 0.57735\n", - " 0.405828\n", + " 0.470459\n", + " 0.868256\n", + " 0.610255\n", + " 0.439113\n", " \n", " \n", "\n", "" ], "text/plain": [ - " MANUAL ID PRECISION RECALL F1 Global IoU\n", - "0 bird 0.483408 0.716613 0.57735 0.405828" + " MANUAL ID PRECISION RECALL F1 Global IoU\n", + "0 bird 0.470459 0.868256 0.610255 0.439113" ] }, "execution_count": 18, @@ -1588,7 +1981,7 @@ } ], "source": [ - "global_dataset_statistics(statistics_df)" + "global_dataset_statistics(statistics_df, stats_type = \"general\")" ] }, { @@ -1731,10 +2124,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Division by zero setting precision, recall, and f1 to zero on 20190622_210000.WAV\n", - "Division by zero setting precision, recall, and f1 to zero on 20190623_222000.WAV\n", - "Division by zero setting precision, recall, and f1 to zero on BlackFacedAntbird1.wav\n", - "Division by zero setting precision, recall, and f1 to zero on 20190624_152000.WAV\n" + "Division by zero setting precision, recall, and f1 to zero on ScreamingPiha4.wav\n", + "Division by zero setting precision, recall, and f1 to zero on ScreamingPiha6.wav\n", + "Division by zero setting precision, recall, and f1 to zero on ScreamingPiha5.wav\n", + "Division by zero setting precision, recall, and f1 to zero on ScreamingPiha3.wav\n", + "Division by zero setting precision, recall, and f1 to zero on ScreamingPiha8.wav\n", + "Division by zero setting precision, recall, and f1 to zero on ScreamingPiha11.wav\n", + "Division by zero setting precision, recall, and f1 to zero on ScreamingPiha7.wav\n" ] }, { @@ -1773,95 +2169,165 @@ " \n", " 0\n", " ./TEST/\n", - " 20190622_210000.WAV\n", + " ScreamingPiha4.wav\n", " bird\n", " 0\n", - " 44\n", - " 3\n", - " 0.0\n", + " 8\n", + " 1\n", + " 0.0000\n", " 0.0000\n", " 0.0000\n", " \n", " \n", " 1\n", " ./TEST/\n", - " 20190623_222000.WAV\n", + " ScreamingPiha9.wav\n", " bird\n", - " 0\n", - " 7\n", + " 2\n", + " 21\n", " 3\n", - " 0.0\n", - " 0.0000\n", - " 0.0000\n", + " 0.4000\n", + " 0.0870\n", + " 0.1429\n", " \n", " \n", " 2\n", " ./TEST/\n", - " BlackFacedAntbird1.wav\n", + " ScreamingPiha6.wav\n", " bird\n", " 0\n", - " 3\n", - " 7\n", - " 0.0\n", + " 19\n", + " 5\n", + " 0.0000\n", " 0.0000\n", " 0.0000\n", " \n", " \n", " 3\n", " ./TEST/\n", - " HowlerMonkey1.WAV\n", + " ScreamingPiha5.wav\n", " bird\n", - " 2\n", - " 26\n", - " 8\n", - " 0.2\n", - " 0.0714\n", - " 0.1052\n", + " 0\n", + " 30\n", + " 5\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", " \n", " \n", " 4\n", " ./TEST/\n", - " 20190624_152000.WAV\n", + " ScreamingPiha3.wav\n", " bird\n", " 0\n", " 6\n", - " 3\n", - " 0.0\n", + " 1\n", + " 0.0000\n", " 0.0000\n", " 0.0000\n", " \n", " \n", " 5\n", " ./TEST/\n", + " ScreamingPiha10.wav\n", + " bird\n", + " 2\n", + " 38\n", + " 11\n", + " 0.1538\n", + " 0.0500\n", + " 0.0755\n", + " \n", + " \n", + " 6\n", + " ./TEST/\n", + " ScreamingPiha1.wav\n", + " bird\n", + " 1\n", + " 12\n", + " 2\n", + " 0.3333\n", + " 0.0769\n", + " 0.1250\n", + " \n", + " \n", + " 7\n", + " ./TEST/\n", + " ScreamingPiha8.wav\n", + " bird\n", + " 0\n", + " 9\n", + " 3\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " \n", + " \n", + " 8\n", + " ./TEST/\n", " ScreamingPiha2.wav\n", " bird\n", " 3\n", " 17\n", " 2\n", - " 0.6\n", + " 0.6000\n", " 0.1500\n", " 0.2400\n", " \n", + " \n", + " 9\n", + " ./TEST/\n", + " ScreamingPiha11.wav\n", + " bird\n", + " 0\n", + " 35\n", + " 8\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " \n", + " \n", + " 10\n", + " ./TEST/\n", + " ScreamingPiha7.wav\n", + " bird\n", + " 0\n", + " 51\n", + " 7\n", + " 0.0000\n", + " 0.0000\n", + " 0.0000\n", + " \n", " \n", "\n", "" ], "text/plain": [ - " FOLDER IN FILE MANUAL ID TRUE POSITIVE FALSE NEGATIVE \\\n", - "0 ./TEST/ 20190622_210000.WAV bird 0 44 \n", - "1 ./TEST/ 20190623_222000.WAV bird 0 7 \n", - "2 ./TEST/ BlackFacedAntbird1.wav bird 0 3 \n", - "3 ./TEST/ HowlerMonkey1.WAV bird 2 26 \n", - "4 ./TEST/ 20190624_152000.WAV bird 0 6 \n", - "5 ./TEST/ ScreamingPiha2.wav bird 3 17 \n", + " FOLDER IN FILE MANUAL ID TRUE POSITIVE FALSE NEGATIVE \\\n", + "0 ./TEST/ ScreamingPiha4.wav bird 0 8 \n", + "1 ./TEST/ ScreamingPiha9.wav bird 2 21 \n", + "2 ./TEST/ ScreamingPiha6.wav bird 0 19 \n", + "3 ./TEST/ ScreamingPiha5.wav bird 0 30 \n", + "4 ./TEST/ ScreamingPiha3.wav bird 0 6 \n", + "5 ./TEST/ ScreamingPiha10.wav bird 2 38 \n", + "6 ./TEST/ ScreamingPiha1.wav bird 1 12 \n", + "7 ./TEST/ ScreamingPiha8.wav bird 0 9 \n", + "8 ./TEST/ ScreamingPiha2.wav bird 3 17 \n", + "9 ./TEST/ ScreamingPiha11.wav bird 0 35 \n", + "10 ./TEST/ ScreamingPiha7.wav bird 0 51 \n", "\n", - " FALSE POSITIVE PRECISION RECALL F1 \n", - "0 3 0.0 0.0000 0.0000 \n", - "1 3 0.0 0.0000 0.0000 \n", - "2 7 0.0 0.0000 0.0000 \n", - "3 8 0.2 0.0714 0.1052 \n", - "4 3 0.0 0.0000 0.0000 \n", - "5 2 0.6 0.1500 0.2400 " + " FALSE POSITIVE PRECISION RECALL F1 \n", + "0 1 0.0000 0.0000 0.0000 \n", + "1 3 0.4000 0.0870 0.1429 \n", + "2 5 0.0000 0.0000 0.0000 \n", + "3 5 0.0000 0.0000 0.0000 \n", + "4 1 0.0000 0.0000 0.0000 \n", + "5 11 0.1538 0.0500 0.0755 \n", + "6 2 0.3333 0.0769 0.1250 \n", + "7 3 0.0000 0.0000 0.0000 \n", + "8 2 0.6000 0.1500 0.2400 \n", + "9 8 0.0000 0.0000 0.0000 \n", + "10 7 0.0000 0.0000 0.0000 " ] }, "execution_count": 21, @@ -1920,12 +2386,12 @@ " \n", " 0\n", " bird\n", - " 5\n", - " 103\n", - " 26\n", - " 0.1613\n", - " 0.0463\n", - " 0.0719\n", + " 8\n", + " 246\n", + " 48\n", + " 0.1429\n", + " 0.0315\n", + " 0.0516\n", " \n", " \n", "\n", @@ -1933,10 +2399,10 @@ ], "text/plain": [ " MANUAL ID TRUE POSITIVE FALSE NEGATIVE FALSE POSITIVE PRECISION RECALL \\\n", - "0 bird 5 103 26 0.1613 0.0463 \n", + "0 bird 8 246 48 0.1429 0.0315 \n", "\n", " F1 \n", - "0 0.0719 " + "0 0.0516 " ] }, "execution_count": 22, diff --git a/README.md b/README.md index 850e6c8..bcf13c4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,552 @@ + PyHa logo + # PyHa -## Automated Audio Labeling System -A repo designed to convert audio-based "weak" labels to "strong" moment-to-moment labels. Provides a pipeline to compare automated moment-to-moment labels to human labels. Current proof of concept work being fulfilled on Bird Audio clips using Microfaune predictions. + + +A tool designed to convert audio-based "weak" labels to "strong" moment-to-moment labels. Provides a pipeline to compare automated moment-to-moment labels to human labels. Current proof of concept work being fulfilled on Bird Audio clips using Microfaune predictions. + +This package is being developed and maintained by the [Engineers for Exploration Acoustic Species Identification Team](http://e4e.ucsd.edu/acoustic-species-identification) in collaboration with the [San Diego Zoo Wildlife Alliance](https://sandiegozoowildlifealliance.org/). PyHa = Python + Piha (referring to a bird species of our interest known as the screaming-piha) + +## Contents +- [Installation and Setup](#installation-and-setup) +- [Functions](#functions) +- [Examples](#examples) + +## Installation and Setup +1. Navigate to a desired folder and clone the repository onto your local machine. `git clone https://github.com/UCSD-E4E/PyHa.git` +2. Install [Miniconda](https://docs.conda.io/en/latest/miniconda.html) or [Miniforge](https://github.com/conda-forge/miniforge). +3. Install the conda environment by running `conda env create --file conda_environments/{filename}`, where `filename` is the name of the yaml containing the environment for your OS. +4. Run `conda activate species-id` to activate the conda environment used to develop the package. +5. Here you can download the Xeno-canto Screaming Piha test set used in our demos: https://drive.google.com/drive/u/0/folders/1lIweB8rF9JZhu6imkuTg_No0i04ClDh1 +6. Run `jupyter notebook` while in the proper folder to activate the PyHa_Tutorial.ipynb notebook and make sure PyHa is running properly. Make sure the paths are properly aligned to the TEST folder in the notebook as well as in the ScreamingPiha_Manual_Labels.csv file + +## Functions +![design](https://user-images.githubusercontent.com/44332326/126560960-e9816f7e-c31b-40ee-804d-6947053323c2.png) + +*This image shows the design of the automated audio labeling system.* + +### `isolation_parameters` + +Many of the functions take in the `isolation_parameters` argument, and as such it will be defined globally here. + +The `isolation_parameters` dictionary is as follows: + +``` python +isolation_parameters = { + "technique" : "", + "threshold_type" : "", + "threshold_const" : 0.0, + "threshold_min" : 0.0, + "window_size" : 0.0, + "chunk_size" : 0.0, +} +``` +The `technique` parameter can be: Simple, Stack, Steinberg, and Chunk. This input must be a string in all lowercase. +The `threshold_type` parameter can be: median, mean, average, standard deviation, or pure. This input must be a string in all lowercase. + +The remaining parameters are floats representing their respective values. + + + +
+ IsoAutio.py files + +### [`isolate`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function is the wrapper function for all the audio isolation techniques, and will call the respective function based on its parameters. + +| Parameter | Type | Description | +| --- | --- | --- | +| `local_scores` | list of floats | Local scores of the audio clip as determined by Microfaune Recurrent Neural Network. | +| `SIGNAL` | list of ints | Samples that make up the audio signal. | +| `SAMPLE_RATE` | int | Sampling rate of the audio clip, usually 44100. | +| `audio_dir` | string | Directory of the audio clip. | +| `filename` | string | Name of the audio clip file. | +| `isolation_parameters` | dict | Python Dictionary that controls the various label creation techniques. | + +This function returns a dataframe of automated labels for the audio clip based on the passed in isolation technique. + +Usage: +`isolate(local_scores, SIGNAL, SAMPLE_RATE, audio_dir, filename, isolation_parameters)` + +### [`threshold`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function takes in the local score array output from a neural network and determines the threshold at which we determine a local score to be a positive ID of a class of interest. Most proof of concept work is dedicated to bird presence. Threshold is determined by "threshold_type" and "threshold_const" from the isolation_parameters dictionary. + +| Parameter | Type | Description | +| --- | --- | --- | +| `local_scores` | list of floats | Local scores of the audio clip as determined by Microfaune Recurrent Neural Network. | +| `isolation parameters` | dict | Python Dictionary that controls the various label creation techniques. | + +This function returns a float representing the threshold at which the local scores in the local score array of an audio clip will be viewed as a positive ID. + +Usage: `threshold(local_scores, isolation_parameters)` + +### [`steinberg_isolate`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function uses the technique developed by Gabriel Steinberg that attempts to take the local score array output of a neural network and lump local scores together in a way to produce automated labels based on a class across an audio clip. It is called by the `isolate` function when `isolation_parameters['technique'] == steinberg`. + +| Parameter | Type | Description | +| --- | --- | --- | +| `local_scores` | list of floats | Local scores of the audio clip as determined by Microfaune Recurrent Neural Network. | +| `SIGNAL` | list of ints | Samples that make up the audio signal. | +| `SAMPLE_RATE` | int | Sampling rate of the audio clip, usually 44100. | +| `audio_dir` | string | Directory of the audio clip. | +| `filename` | string | Name of the audio clip file. | +| `isolation_parameters` | dict | Python Dictionary that controls the various label creation techniques. | +| `manual_id` | string | controls the name of the class written to the pandas dataframe | + +This function returns a dataframe of automated labels for the audio clip. + +Usage: `steinberg_isolate(local_scores, SIGNAL, SAMPLE_RATE, audio_dir, filename,isolation_parameters, manual_id)` + +### [`simple_isolate`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function uses the technique suggested by Irina Tolkova and implemented by Jacob Ayers. Attempts to produce automated annotations of an audio clip based on local score array outputs from a neural network. It is called by the `isolate` function when `isolation_parameters['technique'] == simple`. + +| Parameter | Type | Description | +| --- | --- | --- | +| `local_scores` | list of floats | Local scores of the audio clip as determined by Microfaune Recurrent Neural Network. | +| `SIGNAL` | list of ints | Samples that make up the audio signal. | +| `SAMPLE_RATE` | int | Sampling rate of the audio clip, usually 44100. | +| `audio_dir` | string | Directory of the audio clip. | +| `filename` | string | Name of the audio clip file. | +| `isolation_parameters` | dict | Python Dictionary that controls the various label creation techniques. | +| `manual_id` | string | controls the name of the class written to the pandas dataframe | + +This function returns a dataframe of automated labels for the audio clip. + +Usage: `simple_isolate(local_scores, SIGNAL, SAMPLE_RATE, audio_dir, filename,isolation_parameters, manual_id)` + +### [`stack_isolate`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function uses a technique created by Jacob Ayers. Attempts to produce automated annotations of an audio clip baseon local score array outputs from a neural network. It is called by the `isolate` function when `isolation_parameters['technique'] == stack`. + +| Parameter | Type | Description | +| --- | --- | --- | +| `local_scores` | list of floats | Local scores of the audio clip as determined by Microfaune Recurrent Neural Network. | +| `SIGNAL` | list of ints | Samples that make up the audio signal. | +| `SAMPLE_RATE` | int | Sampling rate of the audio clip, usually 44100. | +| `audio_dir` | string | Directory of the audio clip. | +| `filename` | string | Name of the audio clip file. | +| `isolation_parameters` | dict | Python Dictionary that controls the various label creation techniques. | +| `manual_id` | string | controls the name of the class written to the pandas dataframe | + +This function returns a dataframe of automated labels for the audio clip. + +Usage: `stack_isolate(local_scores, SIGNAL, SAMPLE_RATE, audio_dir, filename,isolation_parameters, manual_id)` + +### [`chunk_isolate`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function uses a technique created by Jacob Ayers. Attempts to produce automated annotations of an audio clip baseon local score array outputs from a neural network. It is called by the `isolate` function when `isolation_parameters['technique'] == chunk`. + +| Parameter | Type | Description | +| --- | --- | --- | +| `local_scores` | list of floats | Local scores of the audio clip as determined by Microfaune Recurrent Neural Network. | +| `SIGNAL` | list of ints | Samples that make up the audio signal. | +| `SAMPLE_RATE` | int | Sampling rate of the audio clip, usually 44100. | +| `audio_dir` | string | Directory of the audio clip. | +| `filename` | string | Name of the audio clip file. | +| `isolation_parameters` | dict | Python Dictionary that controls the various label creation techniques. | +| `manual_id` | string | controls the name of the class written to the pandas dataframe | + +This function returns a dataframe of automated labels for the audio clip. + +Usage: `chunk_isolate(local_scores, SIGNAL, SAMPLE_RATE, audio_dir, filename,isolation_parameters, manual_id)` + +### [`generate_automated_labels`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function applies the isolation technique determined by the `isolation_parameters` dictionary accross a whole folder of audio clips. + +| Parameter | Type | Description | +| --- | --- | --- | +| `audio_dir` | string | Directory with wav audio files | +| `isolation_parameters` | dict | Python Dictionary that controls the various label creation techniques. | +| `manual_id` | string | controls the name of the class written to the pandas dataframe | +| `weight_path` | string | File path of weights to be used by the RNNDetector for determining presence of bird sounds. +| `Normalized_Sample_Rate` | int | Sampling rate that the audio files should all be normalized to. +| `normalize_local_scores` | boolean | Set whether or not to normalize the local scores. + +This function returns a dataframe of automated labels for the audio clips in audio_dir. + +Usage: `generate_automated_labels(audio_dir, isolation_parameters, manual_id, weight_path, Normalized_Sample_Rate, normalize_local_scores)` + +### [`kaleidoscope_conversion`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py) +*Found in [`IsoAutio.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/IsoAutio.py)* + +This function strips away Pandas Dataframe columns necessary for the PyHa package that aren't compatible with the Kaleidoscope software. + +| Parameter | Type | Description | +| --- | --- | --- | +| `df` | Pandas Dataframe | Dataframe compatible with PyHa package whether it be human labels or automated labels. | + +This function returns a Pandas Dataframe compatible with Kaleidoscope. + +Usage: `kaleidoscope_conversion(df)` + +
+ + + +
+ statistics.py file + +### [`annotation_duration_statistics`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function calculates basic statistics related to the duration of annotations of a Pandas Dataframe compatible with PyHa. + +| Parameter | Type | Description | +| --- | --- | --- | +| `df` | Pandas Dataframe | Dataframe of automated labels or manual labels. | + +This function returns a Pandas Dataframe containing count, mean, mode, standard deviation, and IQR values based on annotation duration. + +Usage: `annotation_duration_statistics(df)` + +### [`bird_label_scores`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function to generates a dataframe with statistics relating to the efficiency of the automated label compared to the human label. These statistics include true positive, false positive, false negative, true negative, union, precision, recall, F1, and Global IoU for general clip overlap. + +| Parameter | Type | Description | +| --- | --- | --- | +| `automated_df` | Dataframe | Dataframe of automated labels for one clip | +| `human_df` | Dataframe | Dataframe of human labels for one clip. | + +This function returns a dataframe with general clip overlap statistics comparing the automated and human labeling. + +Usage: `bird_label_scores(automated_df, human_df)` + +### [`automated_labeling_statistics`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function allows users to easily pass in two dataframes of manual labels and automated labels, and returns a dataframe with statistics examining the efficiency of the automated labelling system compared to the human labels for multiple clips. It calls `bird_local_scores` on corresponding audio clips to generate the efficiency statistics for one specific clip which is then all put into one dataframe of statistics for multiple audio clips. + +| Parameter | Type | Description | +| --- | --- | --- | +| `automated_df` | Dataframe | Dataframe of automated labels of multiple clips. | +| `manual_df` | Dataframe | Dataframe of human labels of multiple clips. | +| `stats_type` | String | String that determines which type of statistics are of interest | +| `threshold` | float | Defines a threshold for certain types of statistics | + +This function returns a dataframe of statistics comparing automated labels and human labels for multiple clips. + +Usage: `automated_labeling_statistics(automated_df, manual_df, stats_type, threshold)` + +### [`global_dataset_statistics`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function takes in a dataframe of efficiency statistics for multiple clips and outputs their global values. + +| Parameter | Type | Description | +| --- | --- | --- | +| `statistics_df` | Dataframe | Dataframe of statistics value for multiple audio clips as returned by the function automated_labelling_statistics. | + +This function returns a dataframe of global statistics for the multiple audio clips' labelling.. + +Usage: `global_dataset_statistics(statistics_df)` + +### [`clip_IoU`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function takes in the manual and automated labels for a clip and outputs IoU metrics of each human label with respect to each automated label. + +| Parameter | Type | Description | +| --- | --- | --- | +| `automated_df` | Dataframe | Dataframe of automated labels for one clip | +| `human_df` | Dataframe | Dataframe of human labels for one clip. | + +This function returns an `IoU_Matrix` (arr) - (human label count) x (automated label count) matrix where each row contains the IoU of each automated annotation with respect to a human label. + +Usage: `clip_IoU(automated_df, manual_df)` + +### [`matrix_IoU_Scores`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function takes in the manual and automated labels for a clip and outputs IoU metrics of each human label with respect to each automated label. + +| Parameter | Type | Description | +| --- | --- | --- | +| `IoU_Matrix` | arr | (human label count) x (automated label count) matrix where each row contains the IoU of each automated annotation with respect to a human label. | +| manual_df | Dataframe | Dataframe of human labels for an audio clip. | +| threshold | float | IoU threshold for determining true positives, false positives, and false negatives. | + +This function returns a dataframe of clip statistics such as True Positive, False Negative, False Positive, Precision, Recall, and F1 values for an audio clip. + +Usage: `matrix_IoU_Scores(IoU_Matrix, manual_df, threshold)` + +### [`clip_catch`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function determines whether or not a human label has been found across all of the automated labels. + +| Parameter | Type | Description | +| --- | --- | --- | +| `automated_df` | Dataframe | Dataframe of automated labels for one clip | +| `human_df` | Dataframe | Dataframe of human labels for one clip. | + +This function returns a Numpy Array of statistics regarding the amount of overlap between the manual and automated labels relative to the number of samples. + +Usage: `clip_catch(automated_df,manual_df)` + +### [`global_IoU_Statistics`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function takes the output of dataset_IoU Statistics and outputs a global count of true positives and false positives, as well as computes the precision, recall, and f1 metrics across the dataset. + +| Parameter | Type | Description | +| --- | --- | --- | +| `statistics_df` | Dataframe | Dataframe of matrix IoU scores for multiple clips. | + +This function returns a dataframe of global IoU statistics which include the number of true positives, false positives, and false negatives. Contains Precision, Recall, and F1 metrics as well + +Usage: `global_IoU_Statistics(statistics_df)` + +### [`dataset_Catch`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +This function determines the overlap of each human label with respect to all of the human labels in a clip across a large number of clips. + +| Parameter | Type | Description | +| --- | --- | --- | +| `automated_df` | Dataframe | Dataframe of automated labels for one clip | +| `human_df` | Dataframe | Dataframe of human labels for one clip. | + +This function returns a dataframe of human labels with a column for the catch values of each label. + +Usage: `dataset_Catch(automated_df, manual_df)` + + +### [`dataset_IoU_Statistics`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py) +*Found in [`statistics.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/statistics.py)* + +*The description for this function has not yet been updated* + +| Parameter | Type | Description | +| --- | --- | --- | +| `automated_df` | Dataframe | Dataframe of automated labels for one clip | +| `human_df` | Dataframe | Dataframe of human labels for one clip. | +| `threshold` | float | Defines a threshold for certain types of statistics | + +*The return for this function is not yet specified* + +Usage: `dataset_IoU_Statistics(automated_df, manual_df, threshold)` + +
+ + + +
+ visualizations.py file + +### [`local_line_graph`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/visualizations.py) +*Found in [`visualizations.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/visualizations.py)* + +This function produces graphs with the local score plot and spectrogram of an audio clip. It is now integrated with Pandas so you can visualize human and automated annotations. + +| Parameter | Type | Description | +| --- | --- | --- | +| `local_scores` | list of floats | Local scores for the clip determined by the RNN. | +| `clip_name` | string | Directory of the clip. | +| `sample_rate` | int | Sample rate of the audio clip, usually 44100. | +| `samples` | list of ints | Each of the samples from the audio clip. | +| `automated_df` | Dataframe | Dataframe of automated labelling of the clip. | +| `premade_annotations_df` | Dataframe | Dataframe labels that have been made outside of the scope of this function. | +| `premade_annotations_label` | string | Descriptor of premade_annotations_df | +| `log_scale` | boolean | Whether the axis for local scores should be logarithmically scaled on the plot. | +| `save_fig` | boolean | Whether the clip should be saved in a directory as a png file. | + +This function does not return anything. + +Usage: `local_line_graph(local_scores, clip_name, sample_rate, samples, automated_df, premade_annotations_df, premade_annotations_label, log_scale, save_fig, normalize_local_scores)` + +### [`local_score_visualization`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/visualizations.py) +*Found in [`visualizations.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/visualizations.py)* + +This is the wrapper function for the local_line_graph function for ease of use. Processes clip for local scores to be used for the local_line_graph function. + +| Parameter | Type | Description | +| --- | --- | --- | +| `clip_path` | string | Path to an audio clip. | +| `weight_path` | string | Weights to be used for RNNDetector. | +| `premade_annotations_df` | Dataframe | Dataframe of annotations to be displayed that have been created outside of the function. | +| `premade_annotations_label` | string | String that serves as the descriptor for the premade_annotations dataframe. | +| `automated_df` | Dataframe | Whether the audio clip should be labelled by the isolate function and subsequently plotted. | +| `log_scale` | boolean | Whether the axis for local scores should be logarithmically scaled on the plot. | +| `save_fig` | boolean | Whether the plots should be saved in a directory as a png file. | + +This function does not return anything. + +Usage: `local_score_visualization(clip_path, weight_path, premade_annotations_df, premade_annotations_label,automated_df = False, isolation_parameters, log_scale, save_fig, normalize_local_scores)` + +### [`plot_bird_label_scores`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/visualizations.py) +*Found in [`visualizations.py`](https://github.com/UCSD-E4E/PyHa/blob/main/PyHa/visualizations.py)* + +This function visualizes automated and human annotation scores across an audio clip. + +| Parameter | Type | Description | +| --- | --- | --- | +| `automated_df` | Dataframe | Dataframe of automated labels for one clip. | +| `human_df` | Dataframe | Dataframe of human labels for one clip. | +| `plot_fig` | boolean | Whether or not the efficiency statistics should be displayed. | +| `save_fig` | boolean | Whether or not the plot should be saved within a file. | + +This function returns a dataframe with statistics comparing the automated and human labeling. + +Usage: `plot_bird_label_scores(automated_df,human_df,save_fig)` + +
+ + +All files in the `microfaune_package` directory are from the [microfaune repository](https://github.com/microfaune/microfaune), and their associated documentation can be found there. + +## Examples +*These examples were created on an Ubuntu 16.04 machine. Results may vary between different Operating Systems and Tensorflow versions.* + +Examples were created using this dictionary for the `isolation_parameters`: + +```json +isolation_parameters = { + "technique" : "steinberg", + "threshold_type" : "median", + "threshold_const" : 2.0, + "threshold_min" : 0.0, + "window_size" : 2.0, + "chunk_size" : 5.0 +} +``` + +### To generate automated labels and get manual labels: +```python +automated_df = generate_automated_labels(path,isolation_parameters,normalize_local_scores=True) +manual_df = pd.read_csv("ScreamingPiha_Manual_Labels.csv") +``` + +### Function that gathers statistics about the duration of labels +```python +annotation_duration_statistics(automated_df) +``` +![image](https://user-images.githubusercontent.com/44332326/127575042-96d46c11-cc3e-470e-a10d-31f1d7ef052a.png) + +```python +annotation_duration_statistics(manual_df) +``` +![image](https://user-images.githubusercontent.com/44332326/127575181-9ce49439-5396-425d-a1d5-148ef47db373.png) + + +### Helper function to convert to kaleidoscope-compatible format +```python +kaleidoscope_conversion(manual_df) +``` +![image](https://user-images.githubusercontent.com/44332326/127575089-023bc41a-5aaf-43fc-8ea6-3a8b9dd69b66.png) + + +### Baseline Graph without any annotations +```python +clip_path = "./TEST/ScreamingPiha2.wav" +local_score_visualization(clip_path) +``` +![image](https://user-images.githubusercontent.com/44332326/126691710-01c4e88c-0c54-4539-a24d-c682cd93aebf.png) + + +### Baseline Graph with log scale +```python +local_score_visualization(clip_path,log_scale = True) +``` +![image](https://user-images.githubusercontent.com/44332326/126691745-b1cb8be6-c52f-45cc-b7e6-9973070aacc9.png) + + +### Baseline graph with normalized local score values between [0,1] +```python +local_score_visualization(clip_path, normalize_local_scores = True) +``` +![image](https://user-images.githubusercontent.com/44332326/126691803-b01c96e8-31bc-45dd-b936-58f0d9a153b4.png) + +### Graph with Automated Labeling +```python +local_score_visualization(clip_path,automated_df = True, isolation_parameters = isolation_parameters) +``` +![image](https://user-images.githubusercontent.com/44332326/127575291-8e83e9ed-0ca3-4caf-a3fb-a83785123f33.png) + + +### Graph with Human Labelling +```python +local_score_visualization(clip_path, premade_annotations_df = manual_df[manual_df["IN FILE"] == "ScreamingPiha2.wav"],premade_annotations_label = "Piha Human Labels") +``` +![image](https://user-images.githubusercontent.com/44332326/127575314-712aeaf8-f88c-44ef-8afa-3c3da86000cb.png) + + +### Graph with Both Automated and Human Labels +*Legend:* + + - Orange ==> True Positive + - Red ==> False Negative + - Yellow ==> False Positive + - White ==> True Negative + +```python +local_score_visualization(clip_path,automated_df = True,isolation_parameters=isolation_parameters,premade_annotations_df = manual_df[manual_df["IN FILE"] == "ScreamingPiha2.wav"]) +``` +![image](https://user-images.githubusercontent.com/44332326/127575359-9dbfd330-f9e1-423c-a063-62b2a9af78dc.png) + + +### Another Visualization of True Positives, False Positives, False Negatives, and True Negatives +```python +automated_piha_df = automated_df[automated_df["IN FILE"] == "ScreamingPiha2.wav"] +manual_piha_df = manual_df[manual_df["IN FILE"] == "ScreamingPiha2.wav"] +piha_stats = plot_bird_label_scores(automated_piha_df,manual_piha_df) +``` +![image](https://user-images.githubusercontent.com/44332326/127575392-2c5df40c-27e7-490f-ace5-7d9d253487f7.png) + + +### Function that generates statistics to gauge efficacy of automated labeling compared to human labels +```python +statistics_df = automated_labeling_statistics(automated_df,manual_df,stats_type = "general") +``` +![image](https://user-images.githubusercontent.com/44332326/127575467-cb9a8637-531e-4ed7-a15e-5b5b611ba92c.png) + + +### Function that takes the statistical ouput of all of the clips and gets the equivalent global scores +```python +global_dataset_statistics(statistics_df) +``` +![image](https://user-images.githubusercontent.com/44332326/127575622-5be17af4-f3a0-40ee-8a54-365825eea03e.png) + + +### Function that takes in the manual and automated labels for a clip and outputs human label-by-label IoU Scores. Used to derive statistics that measure how well a system is isolating desired segments of audio clips +```python +Intersection_over_Union_Matrix = clip_IoU(automated_piha_df,manual_piha_df) +``` +![image](https://user-images.githubusercontent.com/44332326/127575675-71f91fc8-3143-49e6-a10b-0c1781fb498e.png) + + +### Function that turns the IoU Matrix of a clip into true positive and false positives values, as well as computing the precision, recall, and F1 statistics +```python +matrix_IoU_Scores(Intersection_over_Union_Matrix,manual_piha_df,0.5) +``` +![image](https://user-images.githubusercontent.com/44332326/127575732-6c805bcc-a863-4c32-aba6-712ce2bac7bb.png) + +### Wrapper function that takes matrix_IoU_Scores across multiple clips. Allows user to modify the threshold that determines whether or not a label is a true positive. +```python +stats_df = automated_labeling_statistics(automated_df,manual_df,stats_type = "IoU",threshold = 0.5) +``` +![image](https://user-images.githubusercontent.com/44332326/127575771-9866f288-61cf-47c5-b9de-041b49e583d1.png) + +### Function that takes the output of dataset_IoU Statistics and ouputs a global count of true positives and false positives, as well as computing common metrics across the dataset +```python +global_stats_df = global_IoU_Statistics(stats_df) +``` +![image](https://user-images.githubusercontent.com/44332326/127575798-f84540ea-5121-4e7a-83c4-4ca5ad02e9d0.png) + + + diff --git a/ScreamingPiha_Manual_Labels.csv b/ScreamingPiha_Manual_Labels.csv new file mode 100644 index 0000000..2b00f41 --- /dev/null +++ b/ScreamingPiha_Manual_Labels.csv @@ -0,0 +1,255 @@ +FOLDER,IN FILE,CLIP LENGTH,CHANNEL,OFFSET,DURATION,SAMPLING RATE,MANUAL ID +./TEST/,ScreamingPiha1.wav,32.616,0,1.5448,2.1297,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,10.1638,0.8498,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,0.5549,0.9999,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,8.7739,0.8399,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,12.6335,1.9997,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,11.2436,1.4198,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,21.0024,0.57,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,22.1623,0.8099,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,24.262,0.6899,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,29.5814,0.6999,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,27.6316,0.6699,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,28.7315,0.8399,16000,bird +./TEST/,ScreamingPiha1.wav,32.616,0,30.2213,1.8698,16000,bird +./TEST/,ScreamingPiha3.wav,6.84408,0,1.6094,0.4741,22050,bird +./TEST/,ScreamingPiha3.wav,6.84408,0,1.2209,0.2495,22050,bird +./TEST/,ScreamingPiha3.wav,6.84408,0,2.1441,0.2959,22050,bird +./TEST/,ScreamingPiha3.wav,6.84408,0,3.2991,0.7984,22050,bird +./TEST/,ScreamingPiha3.wav,6.84408,0,2.4471,0.8056,22050,bird +./TEST/,ScreamingPiha3.wav,6.84408,0,4.094,1.8357,22050,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,4.897,0.1906,44100,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,2.6303,0.4378,44100,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,3.2446,1.6453,44100,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,5.1159,0.2259,44100,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,5.589,0.2047,44100,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,7.8839,0.2824,44100,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,9.4938,1.8712,44100,bird +./TEST/,ScreamingPiha4.wav,13.5576,0,8.9077,0.5437,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,0.565,0.8199,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,2.4249,1.7699,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,4.2048,0.68,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,5.3348,0.81,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,7.8647,0.73,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,6.9247,0.66,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,8.5947,3.1199,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,13.4645,0.58,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,14.2745,0.7699,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,15.6844,0.75,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,16.6644,0.7299,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,17.3643,2.38,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,22.9041,2.03,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,25.954,0.9,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,24.8941,0.6999,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,27.854,0.9699,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,28.9439,1.15,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,31.2338,2.3999,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,30.4239,0.8399,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,33.9037,0.44,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,34.3337,1.9499,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,37.0936,0.54,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,38.2336,0.3699,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,41.0635,0.4699,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,38.6335,2.03,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,41.5434,2.18,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,47.0032,0.62,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,48.3232,0.9799,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,49.7231,0.72,44100,bird +./TEST/,ScreamingPiha5.wav,54.178,0,50.4031,2.3599,44100,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,0.075,1.2099,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,1.3449,0.52,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,9.3943,0.61,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,5.6646,1.9299,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,1.7849,1.8998,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,9.9743,1.9699,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,14.564,1.8199,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,22.3534,0.66,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,23.0634,2.0599,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,30.6129,0.5399,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,31.1828,2.0799,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,43.012,0.69,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,42.1121,0.4699,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,43.722,1.9898,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,47.4817,1.9299,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,55.5711,1.6699,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,58.101,0.5099,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,59.0109,0.51,22050,bird +./TEST/,ScreamingPiha6.wav,70.6351,0,59.5409,1.8998,22050,bird +./TEST/,ScreamingPiha7.wav,133.59,0,0.175,1.66,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,6.985,0.6,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,1.815,0.33,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,5.875,0.4,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,7.555,1.56,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,14.585,0.26,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,15.005,1.82,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,18.565,0.39,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,19.585,0.55,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,20.235,1.63,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,28.415,0.56,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,28.935,1.57,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,22.045,0.6,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,30.595,2.16,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,33.045,0.39,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,34.485,0.42,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,36.1651,1.87,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,35.615,0.5001,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,39.8651,0.68,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,41.4851,0.45,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,42.6751,0.44,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,46.2651,0.56,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,47.2551,0.71,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,47.7951,1.78,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,54.0451,0.41,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,55.2051,0.52,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,56.0151,1.64,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,58.0151,1.59,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,59.6951,1.33,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,63.7951,0.52,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,62.7651,0.42,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,64.8151,0.47,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,65.3051,1.47,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,74.3851,3.02,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,66.7051,1.63,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,77.4351,2.41,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,79.8151,0.41,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,91.7151,0.27,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,92.8151,0.55,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,99.1051,0.4,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,100.105,0.67,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,93.4551,1.79,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,103.025,0.52,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,101.205,1.75,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,103.585,0.37,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,103.995,1.75,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,105.805,2.01,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,127.305,1.77,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,125.435,1.67,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,118.645,0.33,44100,bird +./TEST/,ScreamingPiha7.wav,133.59,0,132.605,0.41,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,3.7851,1.99,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,15.1353,0.35,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,21.6754,0.48,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,27.0255,0.4,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,16.0053,0.44,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,29.7555,0.6401,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,31.1956,0.36,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,35.7257,0.4,44100,bird +./TEST/,ScreamingPiha8.wav,44.1208,0,36.1757,1.84,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,5.6554,1.9902,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,2.9052,0.9201,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,4.2453,0.6701,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,8.2356,0.8301,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,4.9254,1.5901,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,9.0257,0.64,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,9.6657,1.7202,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,10.9458,2.0802,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,13.446,0.9001,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,14.5861,1.0001,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,15.9062,0.9301,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,17.4363,0.6301,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,18.0464,1.8601,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,19.9365,2.2602,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,22.8367,0.8901,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,23.8568,0.7101,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,24.5569,2.1901,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,27.2171,2.2602,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,29.9273,0.72,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,31.3974,0.9301,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,35.3877,1.6201,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,32.3675,0.71,44100,bird +./TEST/,ScreamingPiha9.wav,37.3029,0,33.0375,1.9502,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,1.035,0.8001,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,7.6752,0.4401,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,2.4751,1.71,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,0.035,0.24,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,1.9051,0.59,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,8.5753,0.8,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,9.5153,0.67,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,10.1953,1.8701,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,18.2356,0.45,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,19.2456,0.63,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,20.1856,0.7601,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,20.9157,1.75,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,22.9757,1.7201,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,27.8159,0.69,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,30.336,1.79,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,28.7059,0.83,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,29.6859,0.6901,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,37.3862,0.61,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,39.2162,0.7401,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,38.2462,0.83,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,39.9163,1.91,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,44.6964,0.67,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,46.6965,0.83,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,45.5464,0.6201,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,56.4368,0.59,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,47.6665,0.83,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,48.4665,1.8701,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,57.4168,0.9001,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,58.3569,0.74,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,71.0873,0.85,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,59.0469,1.87,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,66.1571,0.63,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,70.1272,0.7501,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,72.2573,0.71,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,72.9173,1.8601,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,81.9476,0.5,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,84.3677,1.58,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,85.8877,0.8501,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,86.8978,0.66,44100,bird +./TEST/,ScreamingPiha10.wav,89.7829,0,87.5578,1.87,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,0.015,0.9499,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,4.4147,0.6699,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,5.5446,1.6599,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,5.1846,0.4,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,3.5348,0.3699,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,7.0345,1.6999,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,12.5241,0.35,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,12.6141,2.0699,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,14.624,2.0698,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,20.1036,0.45,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,18.2637,1.9499,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,20.9235,0.78,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,21.7635,0.5099,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,29.4029,0.51,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,23.8533,2.2699,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,28.453,0.38,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,22.2134,1.8599,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,30.2029,0.5599,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,36.3524,0.5,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,38.3023,0.54,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,36.5724,1.8199,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,38.9923,0.4799,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,30.6528,2.0499,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,39.4322,2.0199,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,45.2118,0.37,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,42.842,1.9098,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,47.0917,0.39,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,46.2617,0.44,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,47.4617,1.9898,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,49.2415,1.8099,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,55.1711,0.37,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,56.0411,0.5299,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,56.831,0.51,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,61.0007,2.1599,44100,bird +./TEST/,ScreamingPiha11.wav,63.8955,0,57.281,2.1498,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,2.4252,0.6501,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,3.0553,2.1002,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,0.7751,0.53,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,10.2159,0.5701,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,1.5751,0.8501,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,11.166,0.7801,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,12.0661,0.8101,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,12.8862,0.6,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,21.777,0.59,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,13.4762,1.8002,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,23.9471,1.0301,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,22.9671,0.58,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,25.0172,1.1101,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,26.4474,0.46,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,29.0376,0.5801,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,26.9274,1.7602,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,30.8178,0.72,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,29.8677,0.9401,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,31.5378,1.9502,44100,bird +./TEST/,ScreamingPiha2.wav,33.9331,0,33.788,0.11,44100,bird diff --git a/TEST/ScreamingPiha2.wav b/TEST/ScreamingPiha2.wav deleted file mode 100644 index 2231165..0000000 Binary files a/TEST/ScreamingPiha2.wav and /dev/null differ