{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt \nimport librosa\nimport librosa.display\nimport warnings\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"data_orig = pd.read_csv('../input/birdsong-recognition/train.csv')\ndata_orig.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Objectives:\n* Find way to reduce white noise / isolate bird sounds \n* Explore Chroma feature","execution_count":null},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"def data_grab(data, *args):\n    \"\"\"returns a copied dataframe data[*args]\"\"\"\n    cols = [col for col in args]\n    return data[cols].copy()\n\ntrimmed_data = data_grab(data_orig, 'ebird_code', 'filename', 'species')\ntrimmed_data.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_audio_path(bird_code):\n    \"\"\"returns audio path for ebird_code\"\"\"\n    PATH_train_audio = \"../input/birdsong-recognition/train_audio/\"\n    return PATH_train_audio + bird_code +\"/\"\n\ndef librosaload(bird_code, idx): \n    PATH = get_audio_path(bird_code)\n    file = os.listdir(PATH)[idx]\n    return librosa.load(PATH+file, sr=44100)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_waveform(bird_code, idx): \n    \"\"\"returns waveform for ebird_code, alongwith wave-form timeseries, sr, filename\"\"\"\n    x, sr = librosaload(bird_code, idx)\n    return librosa.display.waveplot(x, sr)\n\nget_waveform('aldfly', 2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_chromap(bird_code, idx, seconds): \n    \"\"\"returns chroma map for ebrid_code file\"\"\"\n    x, sr = librosaload(bird_code, idx)\n    seconds = seconds * 23000\n    chromagram = librosa.feature.chroma_stft(np.array(x[:seconds]), sr)\n    return librosa.display.specshow(chromagram, x_axis='time', y_axis='chroma', cmap='coolwarm')\n\nget_chromap('aldfly', 2, 10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_melspect(bird_code, idx, seconds): \n    x, sr = librosaload(bird_code, idx)\n    seconds = seconds * 10000\n    spect = librosa.feature.melspectrogram(np.array(x[:seconds]), sr)\n    spect = librosa.power_to_db(spect, ref=np.max)\n    plt.imshow(spect)\n#     return librosa.display.specshow(spect, x_axis='time')\n\nget_melspect('aldfly', 2, 3)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Modeling\nCreating a baseline model. ","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"\n\ndef get_melspect(bird_code, idx): \n    x, sr = librosaload(bird_code, idx)\n#     seconds = seconds * 10000\n    spect = librosa.feature.melspectrogram(x, sr)\n    spect = librosa.power_to_db(spect, ref=np.max)\n    return librosa.display.specshow(spect, x_axis='time')\n\n\n\n\ndef librosaload(bird_code, idx=None): \n    PATH = get_audio_path(bird_code)\n    file = os.listdir(PATH)[idx]\n    return librosa.load(PATH+file, sr=44100)\n\n\ndef get_melspect_all(bird_code, list_): \n    PATH = get_audio_path(bird_code)\n    for file in os.listdir(PATH): \n        x, sr = librosa.load(PATH+file, sr=44100)\n        spect = librosa.feature.melspectrogram(x, sr)\n        spect = librosa.power_to_db(spect, ref=np.max)\n        list_.append([bird_code, spect])\n        \n    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"os.mkdir('/kaggle/working/spectograms')\nos.mkdir('/kaggle/working/spectograms/ameavo')\nos.mkdir('/kaggle/working/spectograms/amebit')\nos.mkdir('/kaggle/working/spectograms/amecro')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ameavo_spect = []\n\nget_melspect_all('ameavo', ameavo_spect)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"amebit_spect = []\nget_melspect_all('amebit', amebit_spect)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"amecro_spect = []\nget_melspect_all('amecro', amecro_spect)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i in range(len(ameavo_spect)):\n    librosa.display.specshow(ameavo_spect[i][1][:400])\n    plt.savefig(f'spectograms/ameavo/ameavo{i}')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i in range(len(amebit_spect)):\n    librosa.display.specshow(amebit_spect[i][1][:400])\n    plt.savefig(f'spectograms/amebit/amebit{i}')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true},"cell_type":"code","source":"for i in range(len(amecro_spect)):\n    librosa.display.specshow(amecro_spect[i][1][:400])\n    plt.savefig(f'spectograms/amecro/amecro{i}')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from PIL import Image\nim = Image.open(\"spectograms/ameavo/ameavo30.png\")\nnp_im = np.array(im)\nprint(np_im.shape)\nim","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}