diff --git a/SoundProject.ipynb b/SoundProject.ipynb new file mode 100644 index 0000000..0bdc09b --- /dev/null +++ b/SoundProject.ipynb @@ -0,0 +1,796 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import librosa\n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.multiclass import OneVsRestClassifier\n", + "import matplotlib.pyplot as plt\n", + "import soundfile as sf\n", + "from sklearn.metrics import classification_report\n", + "from keras.models import Sequential\n", + "from keras.utils import to_categorical\n", + "from keras.layers import Dense, Conv2D,Flatten,MaxPooling2D,Dropout\n", + "from sklearn.svm import NuSVC\n", + "from sklearn.svm import SVC" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "y = []\n", + "X = []; \n", + "yp = []; \n", + "new_X = []\n", + "new_X_mel =[]\n", + "yp_mel=[]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "path = 'C:/Users/clyde/Documents/Thinkful/Pre Data Science Bootcamp/Sound Classification Datbase/Train/'\n", + "df = pd.read_csv('C:/Users/clyde/Documents/Thinkful/Pre Data Science Bootcamp/Sound Classification Datbase/train.csv')\n", + "class_label = df.Class.unique().tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "i=1" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "[y,sr] = sf.read('C:/Users/clyde/Documents/Thinkful/Pre Data Science Bootcamp/Sound Classification Datbase/Train/%d.wav'%i)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "zz = librosa.feature.melspectrogram(y=y, sr=sr,S=None, n_fft=2048, hop_length=1510)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "S = librosa.feature.inverse.mel_to_stft(zz)\n", + "y = librosa.griffinlim(S)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import IPython.display as ipd\n", + "ipd.Audio(y,rate=sr)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([15809.936 , 15787.592 , 15768.905 , ..., 1401.3564, 1418.318 ,\n", + " 1432.3749], dtype=float32)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "librosa.feature.inverse.mfcc_to_audio(zz, n_mels=128, dct_type=2, norm='ortho', ref=1.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "q = librosa.istft(S)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ipd.Audio(q,rate=sr)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "zzz=librosa.feature.inverse.mel_to_audio(zz, sr=sr, n_fft=2048, hop_length=1510)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ipd.Audio(zzz,rate=sr)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[y,sr] = sf.read('C:/Users/clyde/Documents/Thinkful/Pre Data Science Bootcamp/Sound Classification Datbase/Train/%d.wav'%3)\n", + "ipd.Audio(y[:,1],rate=sr)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.00198364, -0.00192261, -0.00210571, ..., 0.01861572,\n", + " 0.15274048, 0.12020874])" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y[:,1]" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import IPython.display as ipd\n", + "n = len(y[0:89999])\n", + "hl = 353\n", + "n_fft = 511\n", + "y_pad = librosa.util.fix_length(y[:,1], n + n_fft // 2)\n", + "D = librosa.stft(y_pad, n_fft=n_fft,hop_length=hl)\n", + "y_out = librosa.istft(D,length=n,hop_length=hl)\n", + "ipd.Audio(y_out,rate=sr)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((256, 256), 89999)" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "D.shape,n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.03317261, 0.08050537, 0.0947876 , ..., -0.01226807,\n", + " -0.01998901, -0.03671265])" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_pad" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\clyde\\Anaconda3\\envs\\dask-scipy\\lib\\site-packages\\librosa\\display.py:709: UserWarning: Trying to display complex-valued input. Showing magnitude instead.\n", + " warnings.warn('Trying to display complex-valued input. '\n" + ] + }, + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Linear-frequency power spectrogram')" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from librosa import display\n", + "DD = librosa.amplitude_to_db(np.abs(D), ref=np.max)\n", + "plt.subplot(1, 1, 1)\n", + "librosa.display.specshow(D, y_axis='linear')\n", + "plt.colorbar(format='%+2.0f dB')\n", + "plt.title('Linear-frequency power spectrogram')" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "from librosa import display\n" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Linear-frequency power spectrogram')" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + ">>> DD = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)\n", + ">>> plt.subplot(4, 2, 1)\n", + ">>> librosa.display.specshow(DD, y_axis='linear')\n", + ">>> plt.colorbar(format='%+2.0f dB')\n", + ">>> plt.title('Linear-frequency power spectrogram')" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "def extract_features(window_size,n,hl,n_fft):\n", + "\n", + " for i in df.ID[0:20]:\n", + " try:\n", + " [y,sr] = sf.read('C:/Users/clyde/Documents/Thinkful/Pre Data Science Bootcamp/Sound Classification Datbase/Train/%d.wav'%i)\n", + " if y.ndim ==2 and len(y) < window_size:\n", + " continue\n", + " \n", + " elif y.ndim == 2 and len(y)>=window_size:\n", + " y= y[:,1].T[0:window_size] \n", + " y_pad = librosa.util.fix_length(y, n + n_fft // 2)\n", + " print(len(y))\n", + " \n", + " elif y.ndim ==1 and len(y)