{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%reload_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from local.torch_basics import *\n", "from local.test import *\n", "from local.basics import *\n", "from local.data.all import *\n", "from local.vision.core import *\n", "from local.notebook.showdoc import show_doc\n", "from local.audio.core import *\n", "from local.audio.augment import *\n", "from local.vision.learner import *\n", "from local.vision.models.xresnet import *\n", "from local.metrics import *\n", "from local.callback.schedule import *\n", "import torchaudio" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial: Training a Voice Recognition Model" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "p10speakers = Config()['data_path'] / 'ST-AEDS-20180100_1-OS'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PosixPath('/home/jupyter/.fastai/data/250_speakers/250-speakers')" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Warning this dataset is ~8GB\n", "p250speakers = Config()['data_path'] / '250_speakers'\n", "untar_data(URLs.SPEAKERS250, fname=str(p250speakers)+'.tar', dest=p250speakers)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x = AudioGetter(\"\", recurse=True, folders=None)\n", "files_10 = x(p10speakers)\n", "files_250 = x(p250speakers)\n", "#original_aud = AudioItem.create(files[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Datablock and Basic End to End Training on 10 Speakers" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def AudioBlock(cls=AudioItem): return TransformBlock(type_tfms=cls.create, batch_tfms=IntToFloatTensor)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "auds = DataBlock(blocks=(AudioBlock, CategoryBlock), \n", " get_items=get_audio_files, \n", " splitter=RandomSplitter(),\n", " get_y=lambda x: str(x).split('/')[-1][:5])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cats = [y for _,y in auds.datasource(p10speakers)]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#verify categories are being correctly assigned\n", "test_eq(min(cats).item(), 0)\n", "test_eq(max(cats).item(), 9)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#crop 2s from the signal and turn it to a MelSpectrogram with no augmentation\n", "cfg_voice = AudioConfig.Voice()\n", "a2s = AudioToSpec.from_cfg(cfg_voice)\n", "crop_2000ms = CropSignal(2000)\n", "tfms = [crop_2000ms, a2s]\n", "dbunch = auds.databunch(p10speakers, item_tfms=tfms, bs=64)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Broken:
Show batch is broken as it appears to just be grabbing the data from the sg, and not the sg object itself, but calls the sg's show method which relies on nchannels, which is an object of AudioSpectrogram (part of sg settings but we overrode getattr to make it work like an attribute). This means that, for the moment, the items cant show themselves for the batch, but training still works
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#dbunch_cropspec.show_batch(max_n=9)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "torch.Size([64, 1, 128, 251])" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dbunch.one_batch()[0].shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# credit to Kevin Bird and Hiromi Suenaga for these two lines to adjust a CNN model to take 1 channel input\n", "def alter_learner(learn, channels=1):\n", " learn.model[0][0].in_channels=channels\n", " learn.model[0][0].weight = torch.nn.parameter.Parameter(learn.model[0][0].weight[:,1,:,:].unsqueeze(1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn = Learner(dbunch, \n", " xresnet18(),\n", " torch.nn.CrossEntropyLoss(), \n", " metrics=[accuracy])\n", "nchannels = dbunch.one_batch()[0].shape[1]\n", "alter_learner(learn, nchannels)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU9b3/8ddnJntIwpIEAkkImyAgawSFggrWpVixdaNqlbpQq7WLt97qr7e9t73d7m17q9a21mJdcWlxA7XuWnFDAoIgICRsCVtCAmTfZj6/P2aCMYQskDNnJvN5Ph7zYOacM3PeDJAP3/P9nu9XVBVjjDHRy+N2AGOMMe6yQmCMMVHOCoExxkQ5KwTGGBPlrBAYY0yUs0JgjDFRLsbtAN2Vnp6ueXl5bscwxpiIsnr16gOqmtHevogrBHl5eRQUFLgdwxhjIoqI7DzWPrs0ZIwxUc4KgTHGRDkrBMYYE+WsEBhjTJSzQmCMMVHOCoExxkS5iBs+Go6KK2rZsr+KuBgPcV4PMV4PzT4/Tb7AFN9Th/YjMc57XJ+tqojI57b5/cq2AzXsPlRHrEeIjfEQ6/XgEfCIIAIJsV6S4rwkxcaQFO8l1nt0zW/vs40x0cexQiAio4EnW20aDvxEVe9sdYwAdwFfAmqBhaq6xqlMXbF1fxUb91Zy2vABDExNOLL9cF0Tm/dW0ichhsFpiaQlxvJu0QEefHcHb3xaSkfLOqQmxPDVKdlcOT2XUQNTjmwvrapn1faDrNpRwY7yGhJjvSTHxxDr9bDnUB27KmopOVhLUlwMg/smMqRvAlX1zXyyp5LqhuZu/b7iYjwkxwUKQn2Tj/omP01+P2mJsfRLiqNfUiy5/ZMYlt6HYRnJJMZ6qW1spq7RR1V9M+U1jZRXN3C4rgmvR/B6hBiPkBjnPVJ0/AoNTX7qm334fIrHI3iE4LEeYryB97TUHkFI7xPH0PRk8gYkk90vsd2CZYxxloRiYRoR8QK7gemqurPV9i8BtxAoBNOBu1R1ekeflZ+fr07dUPbkql38+LlPaGz2AzBmUAonZ6WycU8lW0qrPvfDPsYjNPuV9D5xXDEtlzPHZOLzK43Nfpp8fuK8HmJjPFQ3NPPMmt38c8NemnxKrFcQEQRoCJ4nIdbDiIw+NDb7qWlopqHZT1bfBIb2Tya7fyK1DT72HKpj96E64mO9TMxO45QhaQxLTw6c0xc4p98PCvj8SkOzj9pGHzUNgR/m1Y3N1Db4aPL5SYgN/PCO8QiH65o4WNtIeXUjuypq2XO4rt2iFuf1MKBPHKkJsShKs19p9il1TT7qGn3UNjbjEQl+tgevR/BroPXiU8XnU5r8fpp9n324XxV/q3PFeoVh6cmMykxh9KAUpuT2Y2JOGikJsQ78aRsTXURktarmt7cvVJeG5gJFrYtA0HzgYQ1Uow9EpK+IZKnqXifDqCpvflqKzw/D0pPISEng589v5B+rS5g1Kp3vzh1Fwc6DvL2ljBVbDzBucCrzJmRxSnYa9Y0+9hyuZ39lPWMGpTBvQhbxMR1f9jlrdCbl1WNZtm4PZVUN+DWQYUCfOE7N68/4IWlh8z/h+iYfO8praGz2By4txcXQJyGGlPiYDi8jHc9lJlXlQHUjO8tr2FFey7ayarbsr+aTPYd5ccNeVMEjcNLAFIYOSCK7XxJD+iaSkRJP/+Q4+iXFkd0/kVQrFMackFC1CP4GrFHVe9psfx74taq+E3z9OvBDVS1oc9wiYBFAbm7u1J07j3mndJf85V9F/Oqfm4/a/p25o/ju3FF4PXbd3G2V9U2sKz7E6p0HWVd8iOKDdew+WEddk++oY/MGJDF+SBqTcvoyY0Q6Ywal4LE/Q2M+x9UWgYjEARcCd7S3u51tR1UmVb0PuA8Cl4ZOJM/rm/bz65c2M++ULK6fNYwd5TXsLK9lWl5/ZoxMP5GPNj0oNSGWWaMymDXqszmyVJWDtU2UVzdQUdNIRU0j2w7UsL7kMB/tOsTzHwcakul94pgxIp1Zo9KZNSqDQWkJxzqNMYbQXBo6n0BrYH87+0qAnFavs4E9TgXZsr+K7z6xlnGDU/ntpRNJjPMyObefU6czPUxE6J8cR//kuHb37z1cx7uF5byztYx3CstZti7wV2n0wBTOP2UQF0/JJqd/UigjGxMRHL80JCJPAC+r6gPt7JsHfJvPOovvVtVpHX3e8XYWV9Q0ctEf36Wuyceyb88kKy2x259hIoffr2zeV8WKrWW8+WkpK7dXoArThvXnkinZnH/KIOuENlGlo0tDjhYCEUkCioHhqno4uO1GAFW9Nzh89B7gPALDR7/Rtn+greMtBMvX7eG2pet4/IbTrBUQhXYfquOZNSU8tWY32w/UkBDr4bxxg1gwLZfThg9wO54xjnOtEDjhRIaPllbWk5lq14ujmaryUfEhnlpdwvJ1e6isb+aMkzK4/fwxnJyV6nY8YxxjhcCYdtQ3+Xj0g5384Y1CKuubuHhKNv9+7mj7z4LplToqBOExeN0YFyTEerl+1nDevu0sFs0azrK1e5jzu3+xeMU2mnx+t+MZEzJWCEzUS0uK5Y4vncwr35/NqXn9+PkLmzj/rhW8W3jA7WjGhIQVAmOC8tKT+dvCU1l8dT4NzT6uXLySm5asZvehOrejGeMoKwTGtCIinD12IK9+/wz+7Ysn8cbmUub+7i3ue7sIvz+y+tOM6SorBMa0IyHWyy1zR/H6v53JrFEZ/PLFzVz70CrKqxvcjmZMj7NCYEwHhvRN5L6vT+W/54/jvcJyvnT3Cj7cXuF2LGN6lBUCYzohInz99DyevmkGibFerlq8ktc2tjdjijGRyQqBMV00fkgaz948k5OzUrjx0dW8uN7R2dKNCRkrBMZ0Q9+kOB65fjoTc/ry7cfW8OxHu92OZMwJs0JgTDelJsTy8LXTmDasP9//+1pe+NhaBiayWSEw5jgkx8fwwMJp5A/tx/ee/Ii3t5S5HcmY42aFwJjjlBjnZfE1pzIyM4VvPrKaNbsOuh3JmONihcCYE5CWGMtD155KZmo833hgFVv3V7kdyZhus0JgzAnKTEng0eumExfj4RsPruKA3XRmIowVAmN6QE7/JBZfnc+B6gZueLiA+iaf25GM6TIrBMb0kIk5fbnz8kl8tOsQP/jHOpubyEQMKwTG9KDzxmdx+/ljeP7jvdz1+la34xjTJVYIjOlh35w9nIunZHPX61t5c3Op23GM6ZQVAmN6mIjw84vGc3JWKt97ci3FFbVuRzKmQ1YIjHFAYpyXe6+agl+Vby1ZbZ3HJqxZITDGIUMHJPP7yyaxYXclP12+0e04xhyTFQJjHHT22IEsmj2cxz/cxcpt5W7HMaZdVgiMcdj3zz6JIX0T+fFzG2jy+d2OY8xRHC0EItJXRJaKyGYR2SQip7fZf6aIHBaRtcHHT5zMY4wbEuO8/PTCcWzZX83972x3O44xR4lx+PPvAl5S1UtEJA5IaueYFap6gcM5jHHV2WMHcvbJA7nrta1cMCGL7H7t/VMwxh2OtQhEJBWYDdwPoKqNqnrIqfMZE+7+68KxKGodxybsOHlpaDhQBjwgIh+JyGIRSW7nuNNFZJ2I/FNExrX3QSKySEQKRKSgrMzmfTeRKbtfErfMGcWrG/fzXtEBt+MYc4SThSAGmAL8WVUnAzXA7W2OWQMMVdWJwB+AZ9v7IFW9T1XzVTU/IyPDwcjGOOu6LwwjKy2B/33pU1RtLiITHpwsBCVAiaquDL5eSqAwHKGqlapaHXz+IhArIukOZjLGVQmxXr539ijWFh/ilY373Y5jDOBgIVDVfUCxiIwObpoLfO7iqIgMEhEJPp8WzGODrU2vdvGUbIZnJPPblz/FZzOUmjDg9H0EtwBLRORjYBLwSxG5UURuDO6/BNggIuuAu4EFau1l08vFeD3cds5otpZW88xHu92OYwwSaT938/PztaCgwO0YxpwQVWX+H9+lvLqRN35wBvExXrcjmV5ORFaran57++zOYmNcICL88Lwx7D5UxyPv73Q7jolyVgiMccnMkenMGpXOPW8Wcriuye04JopZITDGRbefP4bDdU3c+68it6OYKGaFwBgXjRucxkWThvC3d7az51Cd23FMlLJCYIzLbv3iSajC71/d4nYUE6WsEBjjspz+SVx9+lCeWlPCp/uq3I5jopAVAmPCwLfnjCQ5PoY7X7NWgQk9KwTGhIG+SXFcffpQXvpkH9vKqt2OY6KMFQJjwsTCGcOI83q47+1tbkcxUcYKgTFhIiMlnkvzs3l6zW72V9a7HcdEESsExoSRRbNG0Oz38zdb0tKEkBUCY8JI7oAk5k0YzJKVu+xuYxMyVgiMCTM3njGc6oZmHv3A5iAyoWGFwJgwM25wGrNPyuCh93bQ5PO7HcdEASsExoShq08bSmlVA69vKnU7iokCVgiMCUNnjclkcFoCS1ba5SHjPCsExoQhr0dYMC2XFVsPsONAjdtxTC9nhcCYMLXg1By8HuHxD3e5HcX0clYIjAlTmakJnDN2IH8vKKah2ed2HOOyZev2sHFPpSOfbYXAmDB25fShHKxt4qUN+9yOYlykqtz65FqWf7zHkc+3QmBMGJsxYgB5A5LsnoIo19Dsp9mvpCTEOPL5VgiMCWMej3DF9FxW7TjIlv22VkG0qqwP3GWeEm+FwJiodPGUbGK9wpOrit2OYlxSVd8MQEpCrCOfb4XAmDA3oE8854wdxNNrSqzTOEpVBwtBn0hsEYhIXxFZKiKbRWSTiJzeZr+IyN0iUigiH4vIFCfzGBOpFkzL4WBtEy9/st/tKMYFn7UIIrAQAHcBL6nqGGAisKnN/vOBUcHHIuDPDucxJiLNHJFOdr9EnrB7CqJSdUOwjyDSLg2JSCowG7gfQFUbVfVQm8PmAw9rwAdAXxHJciqTMZHK4xEuz8/hvaJydpbbncbRpjKCWwTDgTLgARH5SEQWi0hym2OGAK17wEqC2z5HRBaJSIGIFJSVlTmX2Jgwdml+Dh6BJ6zTOOpE8qWhGGAK8GdVnQzUALe3OUbaeZ8etUH1PlXNV9X8jIyMnk9qTAQYlJbAnDGZ/KOgxKanjjItncXJEdhZXAKUqOrK4OulBApD22NyWr3OBpy5dc6YXmDBqbkcqG7gtY3WaRxNquqbSIz1Eut15ke2Y4VAVfcBxSIyOrhpLrCxzWHLgKuDo4dOAw6r6l6nMhkT6c4ak8mQvok8atNTR5XqhmbHLguB86OGbgGWiMjHwCTglyJyo4jcGNz/IrANKAT+CtzkcB5jIpo3eKfxu4XlFJZWux3HhEhVfTN9IrUQqOra4LX9Cap6kaoeVNV7VfXe4H5V1ZtVdYSqnqKqBU7mMaY3uCw/h1iv2KI1UaSyvsmxoaNgdxYbE3EyUuI5f3wWS1eXUNvY7HYcEwLVDc2kRmqLwBjjjK+fPpSq+maWrbWxFdGgqr7ZseklwAqBMREpf2g/xgxK4eH3d6J61Ihr08tU10d2Z7ExxgEiwlWnDWXj3ko+Km57w77pbarqm+gTb30Expg2Lpo8hD7xMbZoTS/n8ys1jT5rERhjjtYnPob5kwbzwsd7OVzb5HYc45DqBmenlwArBMZEtCum59LQ7OepNSVuRzEOqWpZncwKgTGmPeMGpzExO43HPtxlnca9lNOrk4EVAmMi3hXTcyksraZg50G3oxgHtFwasuGjxphj+vLEwaTEx/DYSlu0pjeyS0PGmE4lxcVw0eQhvLB+LwdrGt2OY3qYXRoyxnTJFdNzabRO417J6UVpwAqBMb3CyVmpTM7ta53GvZAVAmNMl31tWi7bymr4cHuF21FMD6puaMLrERJjvY6dwwqBMb3ElycMJiUhhsc+tE7j3qRlwjmR9lb27RlWCIzpJRLjvHx18hD+uX6fdRr3Ik5POAddLAQiMkJE4oPPzxSR74hIX0eTGWO67WvTc2n0Wadxb1Lp8BTU0PUWwVOAT0RGAvcDw4DHHEtljDkuYwalMsU6jXuVqvomUh0cOgpdLwR+VW0GvgLcqarfB7Kci2WMOV5XTB/KtrIaVlqnca/g9ML10PVC0CQiXwOuAZ4PbnO2RBljjsu8U7ICncZ2p3Gv4PTC9dD1QvAN4HTgF6q6XUSGAY86F8sYc7wS47xcPCWblzbs41CtdRpHurBpEajqRlX9jqo+LiL9gBRV/bWjyYwxx+3S/GwafX6Wr7M1jSOZqjq+Ohl0fdTQWyKSKiL9gXXAAyLyf44mM8Yct3GD0zg5K5V/rLbRQ5GsodlPk0/Do0UApKlqJfBV4AFVnQqc7VwsY8yJunRqNh+XHObTfVVuRzHHqWV6idQwKQQxIpIFXMZnncWdEpEdIrJeRNaKSEE7+88UkcPB/WtF5Cdd/WxjTMfmTxpMjEfsnoII1jIFdbh0Fv8MeBkoUtVVIjIc2NrF956lqpNUNf8Y+1cE909S1Z918TONMZ0Y0CeeOWMyeXrNbpp9frfjmONwZL3icOgjUNV/qOoEVf1W8PU2Vb3Y0WTGmBN2aX4OB6obeHtrmdtRzHFouTQUFi0CEckWkWdEpFRE9ovIUyKS3YW3KvCKiKwWkUXHOOZ0EVknIv8UkXFdTm6M6dSZozMYkBzHPwrs8lAkCsXqZND1S0MPAMuAwcAQYHlwW2dmquoU4HzgZhGZ3Wb/GmCoqk4E/gA8296HiMgiESkQkYKyMvufjTFdFev1cNHkIby2aT8VNhFdxPmsszgMLg0BGar6gKo2Bx8PAhmdvUlV9wR/LQWeAaa12V+pqtXB5y8CsSKS3s7n3Keq+aqan5HR6WmNMa1clp9Dk0952jqNI86RS0NhMuncARG5SkS8wcdVQHlHbxCRZBFJaXkOnANsaHPMIAlOsi0i04J5OvxcY0z3jB6UwtSh/XhspU1EF2laOovDoo8AuJbA0NF9wF7gEgLTTnRkIPCOiKwDPgReUNWXRORGEbkxeMwlwIbgMXcDC9T+phrT466cnsu2AzW8v83+nxVJquqbSIz1Eut1dumYLpUZVd0FXNh6m4h8D7izg/dsAya2s/3eVs/vAe7palhjzPH50ilZ/HT5Rh5buYsZI466+mrCVCgmnIMTW6Hs1h5LYYxxVEKsl0umZvPyJ/s4UN3gdhzTRVUhmHAOTqwQOLeApjGmx31tWi5NPrWhpBGkqr6ZFIc7iuHECoFdyzcmgozM7MP0Yf15/MNd+P32zzcSVNc3keLw0FHopBCISJWIVLbzqCJwT4ExJoJcedpQdlXUsqLwgNtRTBdUhWDheuikEKhqiqqmtvNIUVXn0xljetS54wYyIDmOJR/sdDuK6YKqECxcDyd2acgYE2HiY7xcdmoOr23az55DdW7HMZ0IrE7m8qUhY0zvc8W0XBR44kNb0zic+fxKdUP4Dx81xkSgnP5JzBmdyeOrimmy6anDVk1jaBalASsExkSlq04bSllVA698st/tKOYYWuYZcr2z2BjTO80+KYOc/ok88sEOt6OYYziyOpnDi9KAFQJjopLXI1wxbSgfbKtg635b0zgc7a8M3AGe3ifO8XNZITAmSl2Wn02c18OjNpQ0LBWVVgMwIrOP4+eyQmBMlBrQJ555E7J4as3uI9Mdm/BRVFZNWmIsA5KtRWCMcdA1M/Kobmi2RWvCUGFpNSMz+xBcssVRVgiMiWKTcvoyMTuNh97bYYvWhJmishpGZCSH5FxWCIyJclefnkdRWQ3vFdmiNeHicG0TB6obGJHhfP8AWCEwJurNm5BF/+Q4Hnxvh9tRTFBhWaCjeGQIOorBCoExUS8h1suCU3N4fdN+iitq3Y5jCHQUA9YiMMaEzlWnDQVgyUqbfygcFJVWE+f1kNM/KSTns0JgjGFw30TOGTuIJ1btor7J53acqFdUVs2w9GS8ntAsBGmFwBgDwNUzhnKotolla/e4HSXqtQwdDRUrBMYYAE4fPoDRA1N40IaSuqqh2ceuitqQDR0FKwTGmCAR4ZoZeWzcW0nBzoNux4laO8tr8WtoppZoYYXAGHPERZMHk5oQY0NJXVRYGtoRQ+BwIRCRHSKyXkTWikhBO/tFRO4WkUIR+VhEpjiZxxjTsaS4GC4/NYeXNuxj3+F6t+NEpZbJ5ob3sktDZ6nqJFXNb2ff+cCo4GMR8OcQ5DHGdODrp+XhV2XJSpuV1A2FZdUM6ZtIUpzzC9K0cPvS0HzgYQ34AOgrIlkuZzImquUOSGLumEweW7mLhmYbShpqRWXVIe0fAOcLgQKviMhqEVnUzv4hQHGr1yXBbcYYFy2cMYzymkaes6GkIeX3K0WloZtsroXThWCmqk4hcAnoZhGZ3WZ/e3dLHDVuTUQWiUiBiBSUlZU5kdMY08rMkQMYMyiF+1dst6GkIbS3sp66Jl9I7yEAhwuBqu4J/loKPANMa3NICZDT6nU2cNR/QVT1PlXNV9X8jIwMp+IaY4JEhOtnDefT/VW8vfWA23GiRpELI4bAwUIgIskiktLyHDgH2NDmsGXA1cHRQ6cBh1V1r1OZjDFdd+HEwWSmxLN4xTa3o0QNN4aOgrMtgoHAOyKyDvgQeEFVXxKRG0XkxuAxLwLbgELgr8BNDuYxxnRDXIyHa2bksWLrATbvq3Q7TlRoWZ4yFAvWt+bY+CRV3QZMbGf7va2eK3CzUxmMMSfmyum53PNGIYtXbOe3lx71z9n0sFAuT9ma28NHjTFhrG9SHJflZ/Pc2t2UVtoNZk4rKqtmZIgvC4EVAmNMJ679wjCa/cpD7+9wO0qvdqi2kQPVjYzIDO3QUbBCYIzpxNAByZwzdiBLVu6irtFuMHNKUYiXp2zNCoExplPXzxrOodomnlpT4naUXqtlxNDIjJSQn9sKgTGmU/lD+zExO42/vbMdv99uMHNCUVkNcTEehvRLDPm5rRAYYzolIlw3azjbDtTw5qelbsfplQpLqxkewuUpW7NCYIzpkvPHD2JwWgKLV2x3O0qvVFga+snmWlghMMZ0SazXw8KZeby/rZwNuw+7HadXqW/yUXyw1pWho2CFwBjTDZefmktynNemnehh2w/UoOrOiCGwQmCM6Ya0xFi+Ni2X5R/vpbii1u04vYZbcwy1sEJgjOmW62cNxyvCX94ucjtKr1FUVo1IaJenbM0KgTGmWwalJXDx1CH8vaCE0iqbdqInFJZWk9MviYRYryvnt0JgjOm2b84eQbPPz/3v2AiinlBYWh3yVclas0JgjOm2vPRk5k0YzJIPdnG4tsntOBHN51e2HahxraMYrBAYY47Tt84YQXVDMw+/v8PtKBFt98E6Gpv9VgiMMZFn7OBU5ozJ5IH3dlDb2Ox2nIhVWFYFuDdiCKwQGGNOwE1njqCippEnVxW7HSViHZlszloExphIlJ/Xn1Pz+vHXt7fR5PO7HSciFZXWkN4njr5JoV2esjUrBMaYE3LTmSPZc7ie59bucTtKRNpeXkPeAPdGDIEVAmPMCTpzdAZjBqVw77+KbIrq41BSUUvugCRXM1ghMMacEBHhW2eOoLC0mlc37Xc7TkRpaPaxt7KenH5WCIwxEW7eKVnk9k/iT28VoWqtgq7ac6geVcjtb4XAGBPhYrwevnnGcNYVH+KtLWVux4kYu4IT9+VYITDG9AaXTs0hu18iv3vlU2sVdFFLIbAWgTGmV4iL8fD9s09iw+5KXtqwz+04EaGkopa4GA+ZKfGu5nC8EIiIV0Q+EpHn29m3UETKRGRt8HG903mMMc65aPIQRmb24bevfIrPRhB1aldFLdn9EvG4sE5xa6FoEXwX2NTB/idVdVLwsTgEeYwxDvF6hH/74kkUldXwzEe73Y4T9ooP1rp+WQgcLgQikg3MA+wHvDFR4rzxgzhlSBp3vraFxma727gju8prXR86Cs63CO4E/h3o6G/DxSLysYgsFZGc9g4QkUUiUiAiBWVlNiLBmHAmIvzg3NGUHKzjofd2uB0nbB2ubaKyvrl3twhE5AKgVFVXd3DYciBPVScArwEPtXeQqt6nqvmqmp+RkeFAWmNMT5o9Kp25YzL5v1e3sPtQndtxwlLxwZaho4kuJ3G2RTATuFBEdgBPAHNE5NHWB6hquao2BF/+FZjqYB5jTIiICD+dPw6A/3zuE5fThKdwuYcAHCwEqnqHqmarah6wAHhDVa9qfYyIZLV6eSEddyobYyJIdr8kvnf2KF7btJ+XP7HhpG0VR0MhOBYR+ZmIXBh8+R0R+URE1gHfARaGOo8xxjnXfmEYYwal8F/LPqG6wRavaW1XRS19k2JJTYh1O0poCoGqvqWqFwSf/0RVlwWf36Gq41R1oqqepaqbQ5HHGBMasV4Pv/jKePYeruf3r25xO05Y2VURHkNHwe4sNsY4bOrQ/nxtWi4PvLudDbsPux0nbJQcrAuLoaNghcAYEwK3nzeG/slx/OiZ9XbHMeDzKyUHa8OifwCsEBhjQiAtKZb/mDeWdSWHWbJyp9txXLe/sp4mn4bF0FGwQmCMCZH5kwbzhZHp/OalT9lfWe92HFeFy6yjLawQGGNCQkT4+UXjafD5+dnyjW7HcVWxFQJjTLTKS0/mlrNG8sL6vby2MXqXtSyuqMUjMLivXRoyxkShb54xgtEDU/jxcxuoqm9yO44rdlXUkpWWSKw3PH4Eh0cKY0zUiIvx8OuLT2FfZT2/eflTt+O4ovhgXdh0FIMVAmOMCybn9mPhjDwe+WAnBTsq3I4TUnsO1bFlXxVD+ye7HeUIKwTGGFf84JzRDE5L5Pan19PQ7HM7TkhU1DTy9ftXAvCNL+S5G6YVKwTGGFckx8fwi6+Mp7C0mrtf3+p2HEf4W908V9PQzDceXEXxwToWX5PPmEGpLib7vBi3AxhjoteZozO5ZGo29/5rG+eNy+KU7DTHz1lYWsWf3ipi4Yw8JmT3dew8r3yyj5uWrGFIv0RGZfahrLqR9SWHuPeqqUwfPsCx8x4PaxEYY1z143ljGZAcx21L1zm+tGVRWTUL7lvJ02t2c9Ef3+Xnz2+kttGZWVGfW7uHlIQYxg9OY1dFLbvKa/ifiydwzrhBjpzvRFiLwBjjqrSkWH75lVO4/uEC7nmzkFu/eJIj59lZXsMVf/0AVeXpm2awdHUJi9/Zzkuf7G8Mq2oAAAwUSURBVOPy/BymDO3HxJy+9Ik/8R+Ljc1+/rWljC9PzOJXX53QA+mdZYXAGOO6s8cO5KJJg/nTm4XMGZPJpJyevWRTXFHLFX9dSWOzn8cXncaYQalMye3H/ImD+fkLm/hdcIpsj8DpIwZw7cxhnDU6E49Hjut8q3ZUUN3QzNwxA3vyt+EYKwTGmLDwn18eR8HOg9zwcAHP3jyTIT101+37ReXc/Ngamn1+HrvhtM910k4fPoDlt3yBw3VNrC0+xKrtFSxdXcJ1DxUwPD2ZG2YP57L8HLzdLAivbdpPfIyHmSPTe+T34DTrIzDGhIV+yXE8sPBU6ht9XPfgqhO+61hVefDd7Vx1/0r6JcXyzM0zGT+k/c7otMRYzjgpgx+cO5oVPzyLuxZMok9CDHc8vZ4v/+Gdbt3roKq8vqmUmSPTSYzzntDvIVSsEBhjwsaogSn86aopbC2t5pbHP6LZ1/3O48ZmP69u3M/1DxXwX8s3ctboTJ69eSYjMvp06f2xXg/zJw3huZtncs8VkzlY28gl977PrU+upbILxamorJpdFbXMGZPZ7exusUtDxpiwMmtUBv89fzz/75n1/PCp9fzvJRO6dGnG51d+8/KnPLlqFwdrm+ifHMdt547mW2eMOK5r/SLCBRMGM2dMJn98s5C//Gsba4sPcd/VUxmZmXLM9722qRSAuSdbITDGmON2xfRcyqoa+P1rW6hv8vH7yycRF9PxBYxfvbiJxe9s57xxg7g0P5vZJ2X0yKRuSXEx3HbuGM44KZOblqxm/j3v8n+XT+LcYwwDfWNTKWOzUslKC5+5hDpjl4aMMWHpu2eP4kdfOpkX1u9l0SMF1DUeexqKx1buYvE721k4I497vz6VuScP7PGZPacN68/yW77AyIEpfPOR1fzqxU1H3fdwsKaRgp0VnB1BrQGwFoExJozdMHs4yfEx/OjZ9Zz127eYmtePSdl9GT8kjRGZyWT0iee9onJ+8twGzhydwX/MO9nRPFlpiTy56DR+/sJG/vL2Nt7fVs7dCyaTl56MqvLyJ/vwK8w5OTKGjbYQ1chaSDo/P18LCgrcjmGMCaE3Nu/nqdW7WVt8iN2H6o5sT4mPocnvZ2j/ZJZ+63RSEmJDlumlDfv44VMf0+zzM3ZwKpv3VVFV30xmSjwf3DH3uO9BcIqIrFbV/Pb2WYvAGBP25owZyJzgzVllVQ1s2lvJtrJqth2oobqhmVu/eFJIiwDAeeMHMSE7jZ889wkHaxu5cOJgxgxKYcbI9LArAp1xvEUgIl6gANitqhe02RcPPAxMBcqBy1V1R0efZy0CY4zpvo5aBKHoLP4usOkY+64DDqrqSOD3wP+EII8xxphWHC0EIpINzAMWH+OQ+cBDwedLgbkiElltKmOMiXBOtwjuBP4dONbtgUOAYgBVbQYOA0dN1C0ii0SkQEQKysrKnMpqjDFRybFCICIXAKWqurqjw9rZdlSnharep6r5qpqfkZHRYxmNMcY42yKYCVwoIjuAJ4A5IvJom2NKgBwAEYkB0oDoWsnaGGNc5lghUNU7VDVbVfOABcAbqnpVm8OWAdcEn18SPCaybmwwxpgIF/L7CETkZ0CBqi4D7gceEZFCAi2BBaHOY4wx0S4khUBV3wLeCj7/Savt9cClochgjDGmfRE3xYSIlAE7gy/TCIw0OtbztttigQPdPGXrz+jKvrbbupqx5df0bmYMVb6WbfYdhle+SMgY7vlOJGNH28LtOxyqqu2PtlHViH0A93X0vO02ApekjvscXdnXdltXM7b6tVsZQ5XPvsPwzBcJGcM934lk7CRrWH2HHT0ifRrq5Z08P9b+4z1HV/a13dbVjOGer7NzdcS+w87P05HO3hfuGcM937H2dyVjZ9u6w+nv8Jgi7tLQiRCRAj3GXBvhItwzhns+CP+M4Z4Pwj9juOeDyMjYItJbBN11n9sBuiDcM4Z7Pgj/jOGeD8I/Y7jng8jICERZi8AYY8zRoq1FYIwxpg0rBMYYE+WsEBhjTJSzQhAkIrNE5F4RWSwi77mdpz0i4hGRX4jIH0Tkms7fEVoicqaIrAh+j2e6nac9IpIsIquDs+OGHRE5Ofj9LRWRb7mdpz0icpGI/FVEnhORc9zO05aIDBeR+0VkqdtZWgT/3j0U/N6udDtPW72iEIjI30SkVEQ2tNl+noh8KiKFInJ7R5+hqitU9UbgeT5bLCesMhJYyGcI0ERg5tZwy6dANZAQpvkAfgj8vSez9WRGVd0U/Ht4GdDjQw97KOOzqnoDsBC4PAzzbVPV63oyV3u6mfWrwNLg93ah09m6rTt3voXrA5gNTAE2tNrmBYqA4UAcsA4YC5xC4Id960dmq/f9HUgNx4zA7cA3g+9dGob5PMH3DQSWhGG+swlMbLgQuCAc/4yD77kQeA+4IlwzBt/3O2BKGOfr0X8jJ5j1DmBS8JjHnMx1PI+Qzz7qBFV9W0Ty2myeBhSq6jYAEXkCmK+qvwLavSwgIrnAYVWtDMeMIlICNAZf+sItXysHgfhwyyciZwHJBP5h1onIi6p6rNXzXMkY/JxlwDIReQF4rKfy9VTG4HKyvwb+qaprwi1fqHQnK4EWcjawljC8EtMrCsExHFkGM6gEmN7Je64DHnAs0dG6m/Fp4A8iMgt428lgQd3KJyJfBc4F+gL3OBsN6GY+Vf0RgIgsBA70ZBHoQHe/wzMJXEaIB150NNlnuvv38BYCras0ERmpqvc6GY7uf4cDgF8Ak0XkjmDBCJVjZb0buEdE5nH8U1A4pjcXgi4tg/m5nar/6VCWY+lWRlWtJVCsQqW7+Z4mUKxCpdt/xgCq+mDPRzmm7n6HbxGcsj2EupvxbgI/2EKlu/nKgRudi9OhdrOqag3wjVCH6aqwa6L0oCPLYAZlA3tcynIs4Z7R8p04y3jiwj1fa5GU9YjeXAhWAaNEZJiIxBHoJFzmcqa2wj2j5TtxlvHEhXu+1iIp62fc7q3uod77x4G9fDas8rrg9i8BWwj04v/IMlo+yxjeGcM9X6Rm7exhk84ZY0yU682XhowxxnSBFQJjjIlyVgiMMSbKWSEwxpgoZ4XAGGOinBUCY4yJclYITK8gItUhPt9iERnbQ5/lE5G1IrJBRJaLSN9Oju8rIjf1xLmNAVu83vQSIlKtqn168PNiVLW5pz6vk3MdyS4iDwFbVPUXHRyfBzyvquNDkc/0ftYiML2WiGSIyFMisir4mBncPk1E3hORj4K/jg5uXygi/xCR5cArElhx7S0JrBa2WUSWBKdgJrg9P/i8WgIrx60TkQ9EZGBw+4jg61Ui8rMutlreJzCDJSLSR0ReF5E1IrJeROYHj/k1MCLYivhN8Njbguf5WER+2oNfo4kCVghMb3YX8HtVPRW4GFgc3L4ZmK2qk4GfAL9s9Z7TgWtUdU7w9WTgewTWMBgOzGznPMnAB6o6kcD04De0Ov9dwfN3OvGYiHiBuXw2N0098BVVnQKcBfwuWIhuB4pUdZKq3iaB5SJHEZgLfxIwVURmd3Y+Y1r05mmojTkbGBv8TzxAqoikAGnAQyIyisB0xrGt3vOqqla0ev2hqpYAiMhaIA94p815GgmsjgWwGvhi8PnpwEXB548Bvz1GzsRWn70aeDW4XYBfBn+o+wm0FAa28/5zgo+Pgq/7ECgMoVizwvQCVghMb+YBTlfVutYbReQPwJuq+pXg9fa3Wu2uafMZDa2e+2j/30yTftbZdqxjOlKnqpNEJI1AQbmZwHz/VwIZwFRVbRKRHQTWg25LgF+p6l+6eV5jALs0ZHq3V4Bvt7wQkUnBp2nA7uDzhQ6e/wMCl6QgMB1xh1T1MPAd4AciEksgZ2mwCJwFDA0eWgWktHrry8C1ItLS4TxERDJ76PdgooAVAtNbJIlISavHrQR+qOYHO1A38tmqVf8L/EpE3iWw2LhTvgfcKiIfAlnA4c7eoKofEVjwfAGwhED+AgKtg83BY8qBd4PDTX+jqq8QuPT0voisB5by+UJhTIds+KgxDhGRJAKXfVREFgBfU9X5nb3PmFCzPgJjnDOVwILlAhwCrnU5jzHtshaBMcZEOesjMMaYKGeFwBhjopwVAmOMiXJWCIwxJspZITDGmChnhcAYY6Lc/weheLP6swBL2AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(#5) [0,1.996047854423523,4.532247066497803,0.2330729216337204,00:12]\n", "(#5) [1,0.8295692801475525,6.905653476715088,0.28125,00:11]\n", "(#5) [2,0.4226909577846527,0.5031284689903259,0.84375,00:11]\n", "(#5) [3,0.21792858839035034,0.38277533650398254,0.8841145634651184,00:11]\n", "(#5) [4,0.14074330031871796,0.9695820808410645,0.765625,00:11]\n", "(#5) [5,0.10544496029615402,0.5057219862937927,0.8619791865348816,00:11]\n", "(#5) [6,0.07608238607645035,0.061512526124715805,0.9791666865348816,00:11]\n", "(#5) [7,0.04908550903201103,0.03860814869403839,0.9921875,00:11]\n", "(#5) [8,0.03291779011487961,0.0291567575186491,0.9934895634651184,00:11]\n", "(#5) [9,0.02519594505429268,0.0238693505525589,0.9934895634651184,00:11]\n" ] } ], "source": [ "#epochs are a bit longer due to the chosen melspectrogram settings\n", "learn.fit_one_cycle(10, lr_max=slice(1e-2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Training on 250 Speakers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Baseline" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "44655" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(files_250)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09051/jc-o8Ra0WPg/00314.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09269/qua5gFTUPvU/00317.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09190/fMiIZC8EFsI/00118.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09269/uti81NExz4E/00345.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09215/yHiDOytgM70/00053.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09065/aL-u-4exX6M/00031.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09033/JsuM8CLM6WA/00185.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09225/sdnCDYiQUBg/00366.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09160/n4jJCVbK5-I/00073.wav\n", "/home/jupyter/.fastai/data/250_speakers/250-speakers/id09269/l_dPwDhJGRY/00247.wav\n" ] } ], "source": [ "for i in range(10):\n", " print(random.choice(files_250))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "get_250speakers_label = lambda x: str(x).split('/')[-3][3:]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id09071/evswEAQC1w0/00234.wav\n", "Label: 9071\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id09049/a1LSgSTO-lQ/00400.wav\n", "Label: 9049\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id09269/1-ycYhStJ4U/00073.wav\n", "Label: 9269\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id08983/P3M8OQZEPUQ/00221.wav\n", "Label: 8983\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id09069/NfSFfEgKABg/00059.wav\n", "Label: 9069\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id08902/_SVTdgG6oaQ/00165.wav\n", "Label: 8902\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id08999/_r2RfU9wZfM/00270.wav\n", "Label: 8999\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id08937/vKLxqqt7hfw/00429.wav\n", "Label: 8937\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id09171/VobJGb4r1nA/00306.wav\n", "Label: 9171\n", "File: /home/jupyter/.fastai/data/250_speakers/250-speakers/id09052/FGBRDssRvs4/00161.wav\n", "Label: 9052\n" ] } ], "source": [ "for i in range(10):\n", " f = random.choice(files_250)\n", " print(\"File:\",f )\n", " print(\"Label:\", get_250speakers_label(f))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "auds = DataBlock(blocks=(AudioBlock, CategoryBlock), \n", " get_items=get_audio_files, \n", " splitter=RandomSplitter(),\n", " get_y=get_250speakers_label)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "dbunch250 = auds.databunch(p250speakers, item_tfms=tfms, bs=64)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from fastprogress import progress_bar as pb" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 100.00% [44655/44655 12:12<00:00]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cats = [y for _,y in pb(auds.datasource(p250speakers))]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#verify categories are being correctly assigned for 250 speakers\n", "test_eq(min(cats).item(), 0)\n", "test_eq(max(cats).item(), 249)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Use torchaudio default MelSpectrogram to get a baseline\n", "a2s = AudioToSpec()\n", "crop_4000ms = CropSignal(4000)\n", "tfms = [crop_4000ms, a2s]\n", "dbunch = auds.databunch(p250speakers, item_tfms=tfms, bs=256)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn = Learner(dbunch, \n", " xresnet18(),\n", " torch.nn.CrossEntropyLoss(), \n", " metrics=[accuracy])\n", "nchannels = dbunch.one_batch()[0].shape[1]\n", "alter_learner(learn, nchannels)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(#5) [0,3.120875597000122,4.190258502960205,0.21565334498882294,01:02]\n", "(#5) [1,1.2305573225021362,2.119953155517578,0.5156197547912598,01:02]\n", "(#5) [2,0.6071012616157532,0.8982534408569336,0.7704624533653259,01:03]\n", "(#5) [3,0.2425542175769806,0.37595334649086,0.9043779969215393,01:03]\n", "(#5) [4,0.09204515814781189,0.29298263788223267,0.9297950863838196,01:03]\n" ] } ], "source": [ "learn.fit_one_cycle(5, lr_max=slice(2e-2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(#5) [0,0.06576913595199585,0.2908884286880493,0.930578887462616,01:04]\n", "(#5) [1,0.06111183762550354,0.28608283400535583,0.9310267567634583,01:03]\n", "(#5) [2,0.0446171835064888,0.26805636286735535,0.9380808472633362,01:03]\n", "(#5) [3,0.035814180970191956,0.2634187936782837,0.9383047819137573,01:03]\n", "(#5) [4,0.029347669333219528,0.26514604687690735,0.9392005205154419,01:04]\n" ] } ], "source": [ "learn.unfreeze()\n", "learn.fit_one_cycle(5, lr_max=slice(1e-3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Customize our AudioToSpec Function using a config" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "voice_cfg = AudioConfig.Voice()\n", "a2s = AudioToSpec.from_cfg(voice_cfg)\n", "tfms = [crop_4000ms, a2s]\n", "# tfms = Pipeline([CropSignal(4000), a2s, MaskFreq(size=12), MaskTime(size=15), SGRoll()], as_item=True)\n", "dbunch = auds.databunch(p250speakers, item_tfms=tfms, bs=128)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn = Learner(dbunch, \n", " xresnet18(),\n", " torch.nn.CrossEntropyLoss(), \n", " metrics=[accuracy])\n", "nchannels = dbunch.one_batch()[0].shape[1]\n", "alter_learner(learn, nchannels)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(#5) [0,2.5127463340759277,5.194817543029785,0.195722758769989,03:54]\n", "(#5) [1,1.0193027257919312,1.549010992050171,0.6296047568321228,03:52]\n", "(#5) [2,0.48157766461372375,0.749039351940155,0.8093158602714539,03:51]\n", "(#5) [3,0.1896345317363739,0.300977885723114,0.9261000752449036,03:51]\n", "(#5) [4,0.0649874284863472,0.22395987808704376,0.9474862813949585,03:52]\n" ] } ], "source": [ "# Better results even without fine tuning, but much slower. We need to move a2s to the GPU and \n", "# then add data augmentation!\n", "learn.fit_one_cycle(5, lr_max=slice(2e-2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training an MFCC with Delta" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# only grab 1500ms of the clip, voice identity can be done with shorter sections and it will speed it up\n", "# this is really slow for mfcc, even for 45k files, need to figure out what's going on here. Also the results\n", "# shouldn't be this much worse than melspectrogram\n", "a2mfcc = AudioToMFCC(n_mffc=20, melkwargs={\"n_fft\":2048, \"hop_length\":256, \"n_mels\":128})\n", "tfms = [CropSignal(1500), a2mfcc, Delta()]\n", "# tfms = Pipeline([CropSignal(4000), a2s, MaskFreq(size=12), MaskTime(size=15), SGRoll()], as_item=True)\n", "dbunch = auds.databunch(p250speakers, item_tfms=tfms, bs=1024)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "torch.Size([1024, 3, 40, 94])" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#n_mfcc isn't getting passed down? \n", "dbunch.one_batch()[0].shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "learn = Learner(dbunch, \n", " xresnet18(),\n", " torch.nn.CrossEntropyLoss(), \n", " metrics=[accuracy])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(#5) [0,4.673135757446289,5.774165630340576,0.08151382952928543,01:17]\n", "(#5) [1,3.332381248474121,7.908496379852295,0.07625126093626022,01:12]\n", "(#5) [2,2.4578614234924316,2.660874605178833,0.41025641560554504,01:12]\n", "(#5) [3,1.832728624343872,1.9707183837890625,0.5239055156707764,01:13]\n", "(#5) [4,1.3838961124420166,1.9342174530029297,0.5400291085243225,01:12]\n", "(#5) [5,1.0394622087478638,1.495416283607483,0.6420333385467529,01:13]\n", "(#5) [6,0.7791723012924194,0.8641145825386047,0.7863621115684509,01:12]\n", "(#5) [7,0.5757192373275757,0.6926474571228027,0.8310379385948181,01:12]\n", "(#5) [8,0.4234640896320343,0.5842545628547668,0.861045777797699,01:12]\n", "(#5) [9,0.32844018936157227,0.5443729758262634,0.8720188140869141,01:12]\n" ] } ], "source": [ "learn.fit_one_cycle(10, lr_max=slice(2e-2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.unfreeze()\n", "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(#5) [0,0.23045498132705688,0.6166905760765076,0.8526480793952942,01:12]\n", "(#5) [1,0.2589111030101776,0.7880717515945435,0.8061807155609131,01:13]\n", "(#5) [2,0.2605298161506653,0.723810613155365,0.8249915838241577,01:12]\n", "(#5) [3,0.23205164074897766,0.6235433220863342,0.8501847386360168,01:12]\n", "(#5) [4,0.19764986634254456,0.5251900553703308,0.8772813677787781,01:13]\n", "(#5) [5,0.16184552013874054,0.4946998059749603,0.8892621397972107,01:12]\n", "(#5) [6,0.1400141716003418,0.48173633217811584,0.889710009098053,01:12]\n" ] } ], "source": [ "learn.fit_one_cycle(7, lr_max=slice(3e-3, 4e-3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
From Here:
\n", " 1. Get transforms on the GPU
\n", " 2. Once it's faster test signal and spectrogram augments for speed/efficacy
\n", " 3. Fine-tune and see how high we can push results on 250 speakers\n", "
\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }