{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Birdcall Recognition EDA","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"![image.png](attachment:image.png)","attachments":{"image.png":{"image/png":"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"}},"execution_count":null},{"metadata":{},"cell_type":"markdown","source":"<font size='5' color='#1C2833'>Contents</font> \n<font size='3' color='#717D7E'>\n1. [Loading Data and Libraries](#1)\n2. [Data Exploration](#2)<br>\n    2.1 [Birds and its Evnironment](#2.1)<br>\n    2.2 [Audio and background](#2.2)<br>\n    2.3 [Authors](#2.3)<br>\n    2.4 [Locations](#2.4)<br>\n    2.5 [Date wise](#2.5)<br>\n    2.6 [Box plots](#2.6)<br>\n3. [Audio Exploration](#3)<br>\n    3.1 [Tempo](#3.1)<br>\n    3.2 [Spectrogram](#3.2)<br>\n    3.3 [Chromagram](#3.3)<br>\n    3.4 [Tempogram](#3.4)<br>\n    3.5 [Linear power spectrogram (grayscale)](#3.5)<br>\n4. [Bird's song Comparison](#4)<br>\n    4.1 [Amplitude](#4.1)<br>\n    4.2 [Linear-frequency power spectrogram](#4.2)<br>\n    4.3 [Choromagram](#4.3)<br>\n    4.4 [Tempogram](#4.4)<br>\n    4.5 [Linear power spectrogram (grayscale)](#4.5)<br>\n    4.6 [Harmonic + Percussive](#4.6)<br>\n    \n   ","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"## 1. Loading Data and Libraries<a id=\"1\"></a> ","execution_count":null},{"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)\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\n#for 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":"Input files\n\n/kaggle/input/birdsong-recognition/test.csv\n\n/kaggle/input/birdsong-recognition/train.csv\n\n/kaggle/input/birdsong-recognition/example_test_audio_summary.csv\n\n/kaggle/input/birdsong-recognition/example_test_audio_metadata.csv","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"import plotly.express as px\nimport plotly.graph_objects as go\nimport folium\nimport librosa\nimport matplotlib.pyplot as plt\nimport librosa.display\nfrom matplotlib import gridspec\nfrom PIL import Image\nimport warnings\nwarnings.filterwarnings(\"ignore\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pd.set_option(\"max.columns\",100)\npd.set_option(\"max.rows\",1000)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data = pd.read_csv(\"/kaggle/input/birdsong-recognition/train.csv\")\nprint(train_data.info())\ntest_data = pd.read_csv('/kaggle/input/birdsong-recognition/test.csv')\nprint(test_data.info())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_data.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2. Data Exploration <a id=\"2\"></a>","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"## 2.1 Birds and its environment <a id=\"2.1\"></a>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"min_play = train_data.groupby(['species'])['xc_id'].count().reset_index()\nmin_play = min_play.rename(columns={'xc_id':'count'})\nmin_play.sort_values(by = ['count'], inplace = True, ascending = True)\nmin_play\n\nfig = px.bar(min_play, x='count', y='species',\n             hover_data=['species'], color='species',\n             labels={'count':'Count'}, height=1400, width = 1000)\nfig.update_layout(\n    title=\"Species Names and Distribution - Total # Species:  264\",\n    xaxis_title=\"Counts\",\n    yaxis_title=\"Names\",\n    font=dict(\n        family=\"sans serif\",\n        size=10,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data['elevation'] = train_data['elevation'].str.replace('m','')\ntrain_data['elevation'] = train_data['elevation'].str.replace('?','')\ntrain_data['elevation'] = train_data['elevation'].str.replace('930-990','990')\ntrain_data['elevation'] = train_data['elevation'].str.replace('1650-1900','1900')\ntrain_data['elevation'] = train_data['elevation'].str.replace(',','')\ntrain_data['elevation'] = train_data['elevation'].str.replace('Unknown','')\ntrain_data['elevation'] = train_data['elevation'].str.replace('~','')\ntrain_data['elevation'] = train_data['elevation'].str.replace('-','')\ntrain_data['elevation'] = train_data['elevation'].str.replace(' ','')\ntrain_data['elevation'] = pd.to_numeric(train_data['elevation'])\n\nelev = train_data.groupby('elevation')['xc_id'].count().reset_index()\nelev = elev.rename(columns = {'xc_id':'count'})\nfig = px.scatter(elev, x='elevation', y='count', color = 'elevation')\nfig.update_layout(\n    title=\"Elevation Distribution\",\n    xaxis_title=\"Elevation\",\n    yaxis_title=\"Count\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"eled = train_data.groupby('elevation')['bird_seen'].value_counts().reset_index(name = 'counts')\np_ele = eled.pivot(columns = 'bird_seen', values = 'counts', index = 'elevation')\np_ele = p_ele.reset_index()\np_ele = p_ele.fillna(0)\n\nfig = px.scatter(p_ele, x=\"yes\", y=\"no\",size=\"elevation\", color=\"elevation\",size_max=20, height = 600, width= 800)\nfig.update_layout(\n    title=\"Elevation vs Bird_seen\",\n    xaxis_title=\"Bird_seen Yes\",\n    yaxis_title=\"Bird_seen No\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"elevs = train_data.groupby('country')['elevation'].mean().reset_index()\nfig = px.scatter(elevs, x='country', y='elevation', color = 'country')\nfig.update_layout(\n    title=\"Elevation vs country\",\n    xaxis_title=\"Country\",\n    yaxis_title=\"Elevation\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.2 EDA - Audio and backgrounds<a id='2.2'></a>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"rating_count = train_data.groupby('rating')['xc_id'].count().reset_index()\nrating_count = rating_count.rename(columns = {'xc_id':'count'})\nfig = px.bar(rating_count, x='rating', y='count', color = 'rating')\nfig.update_layout(\n    title=\"Rating Distribution\",\n    xaxis_title=\"Ratings\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f7f\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### More number of sound samples are having **good** ratings","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"palyback_count = train_data.groupby('playback_used')['xc_id'].count().reset_index()\npalyback_count = palyback_count.rename(columns = {'xc_id':'count'})\nfig = px.bar(palyback_count, x='playback_used', y='count', color = 'playback_used')\nfig.update_layout(\n    title=\"Sound Playback Used\",\n    xaxis_title=\"Playback Used\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f7f\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"channels_count = train_data.groupby('channels')['xc_id'].count().reset_index()\nchannels_count = channels_count.rename(columns = {'xc_id':'count'})\nchannels_count.channels = channels_count.channels.str.replace('(','')\nchannels_count.channels = channels_count.channels.str.replace(')','')\nfig = px.bar(channels_count, x='channels', y='count', color = 'channels')\nfig.update_layout(\n    title=\"Channel Types\",\n    xaxis_title=\"Types\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pitch = train_data.groupby(['pitch'])['xc_id'].count().reset_index()\npitch = pitch.rename(columns={'xc_id':'count'})\nfig = go.Figure(data = [go.Pie(labels = pitch.pitch,values = pitch['count'])])\nfig.update_layout(\n    title=\"Pitch Levels\",\n    xaxis_title=\"Levels\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"speed = train_data.groupby(['speed'])['xc_id'].count().reset_index()\nspeed = speed.rename(columns={'xc_id':'count'})\nfig = go.Figure(data = [go.Pie(labels = speed['speed'],values = speed['count'])])\nfig.update_layout(\n    title=\"Play Speed\",\n    xaxis_title=\"Play Speed\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"notes= train_data.groupby(['number_of_notes'])['xc_id'].count().reset_index()\nnotes = notes.rename(columns={'xc_id':'count'})\nnotes.sort_values(by = ['count'], inplace = True, ascending=False)\nfig = px.bar(notes, x='number_of_notes', y='count',\n             hover_data=['number_of_notes'], color='number_of_notes',\n             labels={'count':'count'}, height=400)\nfig.update_layout(\n    title=\"Notes Ranges\",\n    xaxis_title=\"Notes Range\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"bird_seen = train_data.groupby(['bird_seen'])['xc_id'].count().reset_index()\nbird_seen = bird_seen.rename(columns={'xc_id':'count'})\nfig = go.Figure(data = [go.Pie(labels = bird_seen.bird_seen,values = bird_seen['count'])])\nfig.update_layout(\n    title=\"Birds Seen by Author\",\n    xaxis_title=\"Birds Seen\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Most of the birds have been seen by the Author","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"stype= train_data.groupby(['type'])['xc_id'].count().reset_index()\nstype = stype.rename(columns={'xc_id':'count'})\nstype.sort_values(by = ['count'], inplace = True, ascending=False)\nfig = px.bar(stype[0:15], x='type', y='count',\n             hover_data=['type'], color='type',\n             labels={'count':'count'}, height=400)\nfig.update_layout(\n    title=\"Types of Sounds\",\n    xaxis_title=\"Sound types\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### mostly these birds sounds are songs or calls","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"volume= train_data.groupby(['volume'])['xc_id'].count().reset_index()\nvolume = volume.rename(columns={'xc_id':'count'})\nvolume.sort_values(by = ['count'], inplace = True, ascending=False)\nfig = px.bar(volume, x='count', y='volume',\n             hover_data=['volume'], color='volume',\n             labels={'count':'count'}, height=400)\nfig.update_layout(\n    title=\"Volume Levels\",\n    xaxis_title=\"Count\",\n    yaxis_title=\"Volume levels\",\n    font=dict(\n        family=\"sans serif\",\n        size=18,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"slength= train_data.groupby(['length'])['xc_id'].count().reset_index()\nslength = slength.rename(columns={'xc_id':'count'})\nslength.sort_values(by = ['count'], inplace = True, ascending=False)\nfig = px.bar(slength, x='length', y='count',\n             hover_data=['length'], color='length',\n             labels={'count':'count'}, height=400)\nfig.update_layout(\n    title=\"Sounds Length\",\n    xaxis_title=\"Length Category\",\n    yaxis_title=\"Count\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_rate = train_data.groupby(['sampling_rate'])['sampling_rate'].count().reset_index(name = 'count')\nfig = px.bar(sample_rate, x='sampling_rate', y='count',\n             hover_data=['sampling_rate'], color='sampling_rate',\n             labels={'count':'count'}, height=400)\nfig.update_layout(\n    title=\"Audio Sample Rate\",\n    xaxis_title=\"Sample Rate\",\n    yaxis_title=\"Count\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"country= train_data.groupby('country')['xc_id'].count().reset_index()\ncountry = country.rename(columns={'xc_id':'count'})\nfig = px.scatter(country, x=\"count\", y=\"count\",size=\"count\", color=\"country\", hover_name=\"country\", log_x=True, size_max=60)\nfig.update_layout(\n    title=\"Country wise recordings\",\n    xaxis_title=\"Count\",\n    yaxis_title=\"Count\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Higher number of birds sounds recored in USA followed by Canada and Mexico","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"## 2.3 EDA - Authors<a id='2.3'></a>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"author= train_data.groupby(['author','ebird_code'])['ebird_code'].count().reset_index(name = 'count')\nauthor.sort_values(by = ['count'], inplace = True, ascending=False)\nfig = px.bar(author[0:100], x='author', y='count',\n             hover_data=['author'], color='ebird_code',\n             labels={'count':'count'}, height=400)\nfig.update_layout(\n    title=\"Author's Works on each species\",\n    xaxis_title=\"Authors\",\n    yaxis_title=\"Count\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"author= train_data.groupby(['author'])['xc_id'].count().reset_index()\nauthor = author.rename(columns={'xc_id':'count'})\nauthor.sort_values(by = ['count'], inplace = True, ascending=False)\nfig = px.bar(author[0:10], x='author', y='count',\n             hover_data=['author'], color='author',\n             labels={'count':'count'}, height=400)\nfig.update_layout(\n    title=\"Author's Works\",\n    xaxis_title=\"Authors\",\n    yaxis_title=\"Count\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"author_rating = train_data.groupby(['author','rating']).agg({'rating':'count'})\nauthor_rating.columns = [\"_\".join(x) for x in author_rating.columns.ravel()]\nauthor_rating = author_rating.rename(columns= {'r_a_t_i_n_g':'count'}).reset_index()\nauthor_rating.author = author_rating.author.str.slice(0,20)\n\nfig = px.scatter(author_rating, x=\"count\", y=\"rating\",size=\"count\", color=\"author\",size_max=50, height = 600, width= 800)\nfig.update_layout(\n    title=\"Author vs Ratings\",\n    xaxis_title=\"Count\",\n    yaxis_title=\"Ratings\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.4 EDA - Location wise<a id='2.4'></a>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"map_data = train_data[train_data.latitude!='Not specified']\nmap_data.latitude = pd.to_numeric(map_data.latitude)\nmap_data.longitude = pd.to_numeric(map_data.longitude)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"map_osm = folium.Map(location=[40.742, -73.956], zoom_start=11, tiles='Stamen Terrain')\n\nmap_data.apply(lambda row:folium.CircleMarker(location=[row[\"latitude\"], row[\"longitude\"]], \n                                              radius=10, fill_color = row['rating'])\n                                             .add_to(map_osm), axis=1)\n\nmap_osm","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Most of the birds are found in urban areas","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"seen = {'yes':'green','no':'red'}\nmap_seen = folium.Map(location=[40.742, -73.956], zoom_start=5)\n\nmap_clr_data = map_data.dropna()\n\nmap_clr_data.apply(lambda row:folium.CircleMarker(location=[row[\"latitude\"], row[\"longitude\"]], \n                                              radius=10, fill_color = seen[row['bird_seen']])\n                                             .add_to(map_seen), axis=1)\n\nmap_seen","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"map_data.columns","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"map_osm = folium.Map(location=[40.742, -73.956],zoom_start=4)\n\nmap_data.apply(lambda row:folium.CircleMarker(location=[row[\"latitude\"], row[\"longitude\"]], \n                                              radius=10, fill_color = row['elevation'])\n                                             .add_to(map_osm), axis=1)\n\nmap_osm","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"seen = train_data.groupby('country')['author'].count().reset_index()\nfig = px.scatter(seen, x='country', y='author', color = 'country')\nfig.update_layout(\n    title=\"Author vs country\",\n    xaxis_title=\"Country\",\n    yaxis_title=\"Author\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.5 EDA - Date wise <a id='2.5'></a>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data['date'] = train_data['date'].str.replace('-00','-01')\ntrain_data['date'] = train_data['date'].str.replace('0-01-01','2000-01-01')\ntrain_data['date'] = train_data['date'].str.replace('1012','2012')\ntrain_data['date'] = train_data['date'].str.replace('201-','2010')\ntrain_data['date'] = train_data['date'].str.replace('0201007-11','2010-07-11')\ntrain_data['date'] = train_data['date'].astype('datetime64[ns]')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tdate= train_data.groupby(['date'])['xc_id'].count().reset_index(name = 'count')\nfig = px.line(tdate, x='date', y='count')\nfig.update_layout(\n    title=\"Recordings by Date\",\n    xaxis_title=\"Date\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tdate= train_data.groupby(['date','ebird_code'])['ebird_code'].count().reset_index(name = 'count')\nfig = px.scatter(tdate, x='date', y='count', color = 'ebird_code', size='count')\nfig.update_layout(\n    title=\"Birds obsorbed by date\",\n    xaxis_title=\"Date\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tdate= train_data.groupby(['date','bird_seen'])['bird_seen'].count().reset_index(name = 'count')\nfig = px.scatter(tdate, x='date', y='count', color = 'bird_seen', size='count')\nfig.update_layout(\n    title=\"Birds seen by date\",\n    xaxis_title=\"Date\",\n    yaxis_title=\"Counts\",\n    font=dict(\n        family=\"sans serif\",\n        size=14,\n        color=\"#7f7f72\"\n    )\n)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2.6 EDA- Box plots<a id='2.6'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = px.box(train_data, y=\"rating\")\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = px.box(train_data, y=\"duration\")\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = px.box(train_data, y=\"elevation\")\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data.columns","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3. Audio Analysis 🎼<a id='3'></a>","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"## 3.1 Tempo<a id ='3.1'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"y, sr = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/houspa/XC479586.mp3\")\nplt.figure(figsize=(10, 10))\nplt.subplot(2, 1, 1)\nlibrosa.display.waveplot(y, sr=sr)\nplt.title('Monophonic')\n\ny_harm, y_perc = librosa.effects.hpss(y)\nplt.subplot(2, 1, 2)\nlibrosa.display.waveplot(y_harm, sr=sr, alpha=0.25)\nlibrosa.display.waveplot(y_perc, sr=sr, color='r', alpha=0.5)\nplt.title('Harmonic + Percussive')\nplt.tight_layout()\nplt.show()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y1, sr1 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/dowwoo/XC460991.mp3\")\nplt.figure(figsize=(10, 10))\nplt.subplot(2, 1, 1)\nlibrosa.display.waveplot(y1, sr=sr1)\nplt.title('Monophonic')\n\ny_harm, y_perc = librosa.effects.hpss(y1)\nplt.subplot(2, 1, 2)\nlibrosa.display.waveplot(y_harm, sr=sr1, alpha=0.25)\nlibrosa.display.waveplot(y_perc, sr=sr1, color='r', alpha=0.5)\nplt.title('Harmonic + Percussive')\n#plt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y2, sr2 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/logshr/XC236573.mp3\")\nplt.figure(figsize=(10, 10))\nplt.subplot(2, 1, 1)\nlibrosa.display.waveplot(y2, sr=sr2)\nplt.title('Monophonic')\n\ny_harm, y_perc = librosa.effects.hpss(y2)\nplt.subplot(2, 1, 2)\nlibrosa.display.waveplot(y_harm, sr=sr2, alpha=0.25)\nlibrosa.display.waveplot(y_perc, sr=sr2, color='r', alpha=0.5)\nplt.title('Harmonic + Percussive')\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3.2 Spectrogram<a id = '3.2'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"D = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)\nplt.figure(figsize=(35, 15))\nplt.subplot(4, 2, 1)\nlibrosa.display.specshow(D, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nplt.title('Linear-frequency power spectrogram')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"D = librosa.amplitude_to_db(np.abs(librosa.stft(y1)), ref=np.max)\nplt.figure(figsize=(35, 15))\nplt.subplot(4, 2, 1)\nlibrosa.display.specshow(D, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nplt.title('Linear-frequency power spectrogram')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"D = librosa.amplitude_to_db(np.abs(librosa.stft(y2)), ref=np.max)\nplt.figure(figsize=(35, 15))\nplt.subplot(4, 2, 1)\nlibrosa.display.specshow(D, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nplt.title('Linear-frequency power spectrogram')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3.3 Chromagram<a id ='3.3'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"C = librosa.feature.chroma_cqt(y=y, sr=sr)\nplt.figure(figsize=(35, 15))\ntempo, beat_f = librosa.beat.beat_track(y=y, sr=sr, trim=False)\nbeat_f = librosa.util.fix_frames(beat_f, x_max=C.shape[1])\nCsync = librosa.util.sync(C, beat_f, aggregate=np.median)\nbeat_t = librosa.frames_to_time(beat_f, sr=sr)\nax1 = plt.subplot(2,1,1)\nlibrosa.display.specshow(C, y_axis='chroma', x_axis='time')\nplt.title('Chroma (linear time)')\nax2 = plt.subplot(2,1,2, sharex=ax1)\nlibrosa.display.specshow(Csync, y_axis='chroma', x_axis='time',x_coords=beat_t)\nplt.title('Chroma (beat time)')\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"C = librosa.feature.chroma_cqt(y=y1, sr=sr1)\nplt.figure(figsize=(35, 15))\ntempo, beat_f = librosa.beat.beat_track(y=y1, sr=sr, trim=False)\nbeat_f = librosa.util.fix_frames(beat_f, x_max=C.shape[1])\nCsync = librosa.util.sync(C, beat_f, aggregate=np.median)\nbeat_t = librosa.frames_to_time(beat_f, sr=sr)\nax1 = plt.subplot(2,1,1)\nlibrosa.display.specshow(C, y_axis='chroma', x_axis='time')\nplt.title('Chroma (linear time)')\nax2 = plt.subplot(2,1,2, sharex=ax1)\nlibrosa.display.specshow(Csync, y_axis='chroma', x_axis='time',x_coords=beat_t)\nplt.title('Chroma (beat time)')\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"C = librosa.feature.chroma_cqt(y=y2, sr=sr2)\nplt.figure(figsize=(35, 15))\ntempo, beat_f = librosa.beat.beat_track(y=y2, sr=sr, trim=False)\nbeat_f = librosa.util.fix_frames(beat_f, x_max=C.shape[1])\nCsync = librosa.util.sync(C, beat_f, aggregate=np.median)\nbeat_t = librosa.frames_to_time(beat_f, sr=sr)\nax1 = plt.subplot(2,1,1)\nlibrosa.display.specshow(C, y_axis='chroma', x_axis='time')\nplt.title('Chroma (linear time)')\nax2 = plt.subplot(2,1,2, sharex=ax1)\nlibrosa.display.specshow(Csync, y_axis='chroma', x_axis='time',x_coords=beat_t)\nplt.title('Chroma (beat time)')\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3.4 Tempogram<a id = '3.4'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(15,4))\ngram = librosa.feature.tempogram(y=y, sr=sr)\nlibrosa.display.specshow(gram, x_axis='time', y_axis='tempo')\nplt.colorbar()\nplt.title('Tempogram')\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(15,4))\ngram = librosa.feature.tempogram(y=y1, sr=sr1)\nlibrosa.display.specshow(gram, x_axis='time', y_axis='tempo')\nplt.colorbar()\nplt.title('Tempogram')\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(15,4))\ngram = librosa.feature.tempogram(y=y2, sr=sr2)\nlibrosa.display.specshow(gram, x_axis='time', y_axis='tempo')\nplt.colorbar()\nplt.title('Tempogram')\nplt.tight_layout()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3.5 Linear power spectrogram (grayscale)<a id = '3.5'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(15,4))\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nplt.title('Linear power spectrogram (grayscale)')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(15,4))\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y1)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nplt.title('Linear power spectrogram (grayscale)')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(15,4))\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y2)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nplt.title('Linear power spectrogram (grayscale)')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4. Bird Song Audio Features Comparison<a id = '4'>","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"## 4.1 Amplitutde<a id = '4.1'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = plt.figure(figsize=(15, 13)) \ngs = gridspec.GridSpec(5, 2, width_ratios=[2, 6]) \nax0 = plt.subplot(gs[0])\nimg = Image.open(\"/kaggle/input/osic-bird-image/bkbwar.jpg\")\nax0.axis('off')\nax0.imshow(img)\nax1 = plt.subplot(gs[1])\ny, sr = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/bkbwar/XC101580.mp3\")\nlibrosa.display.waveplot(y, sr)\nax1.plot()\n\nax2 = plt.subplot(gs[2])\nimg = Image.open(\"/kaggle/input/osic-bird-image/clanut.jpg\")\nax2.axis('off')\nax2.imshow(img)\nax3 = plt.subplot(gs[3])\ny1, sr1 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/clanut/XC391597.mp3\")\nlibrosa.display.waveplot(y1, sr1)\nax3.plot()\n   \nax4 = plt.subplot(gs[4])\nimg = Image.open(\"/kaggle/input/osic-bird-image/whcspa.jpg\")\nax4.axis('off')\nax4.imshow(img)\nax5 = plt.subplot(gs[5])\ny2, sr2 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/whcspa/XC478423.mp3\")\nlibrosa.display.waveplot(y2, sr2)\nax5.plot()\n\nax6 = plt.subplot(gs[6])\nimg = Image.open(\"/kaggle/input/osic-bird-image/prawar.jpg\")\nax6.axis('off')\nax6.imshow(img)\nax7 = plt.subplot(gs[7])\ny3, sr3 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/prawar/XC444966.mp3\")\nlibrosa.display.waveplot(y3, sr3)\nax7.plot()\n\nax8 = plt.subplot(gs[8])\nimg = Image.open(\"/kaggle/input/osic-bird-image/rebwoo.jpg\")\nax8.axis('off')\nax8.imshow(img)\nax9 = plt.subplot(gs[9])\ny4, sr4 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/rebwoo/XC145839.mp3\")\nlibrosa.display.waveplot(y4, sr4)\nax9.plot()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4.2 Linear-frequency power spectrogram<a id = '4.2'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = plt.figure(figsize=(18, 18)) \ngs = gridspec.GridSpec(5, 2, width_ratios=[2, 6]) \nax0 = plt.subplot(gs[0])\nimg = Image.open(\"/kaggle/input/osic-bird-image/bkbwar.jpg\")\nax0.axis('off')\nax0.imshow(img)\nax1 = plt.subplot(gs[1])\ny, sr = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/bkbwar/XC101580.mp3\")\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)\nlibrosa.display.specshow(D, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nplt.title('Linear-frequency power spectrogram')\nax1.plot()\n\nax2 = plt.subplot(gs[2])\nimg = Image.open(\"/kaggle/input/osic-bird-image/clanut.jpg\")\nax2.axis('off')\nax2.imshow(img)\nax3 = plt.subplot(gs[3])\ny1, sr1 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/clanut/XC391597.mp3\")\nD1 = librosa.amplitude_to_db(np.abs(librosa.stft(y1)), ref=np.max)\nlibrosa.display.specshow(D1, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nax3.plot()\n   \nax4 = plt.subplot(gs[4])\nimg = Image.open(\"/kaggle/input/osic-bird-image/whcspa.jpg\")\nax4.axis('off')\nax4.imshow(img)\nax5 = plt.subplot(gs[5])\ny2, sr2 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/whcspa/XC478423.mp3\")\nD2 = librosa.amplitude_to_db(np.abs(librosa.stft(y2)), ref=np.max)\nlibrosa.display.specshow(D2, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nax5.plot()\n\nax6 = plt.subplot(gs[6])\nimg = Image.open(\"/kaggle/input/osic-bird-image/prawar.jpg\")\nax6.axis('off')\nax6.imshow(img)\nax7 = plt.subplot(gs[7])\ny3, sr3 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/prawar/XC444966.mp3\")\nD3 = librosa.amplitude_to_db(np.abs(librosa.stft(y3)), ref=np.max)\nlibrosa.display.specshow(D3, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nax7.plot()\n\nax8 = plt.subplot(gs[8])\nimg = Image.open(\"/kaggle/input/osic-bird-image/rebwoo.jpg\")\nax8.axis('off')\nax8.imshow(img)\nax9 = plt.subplot(gs[9])\ny4, sr4 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/rebwoo/XC145839.mp3\")\nD4 = librosa.amplitude_to_db(np.abs(librosa.stft(y4)), ref=np.max)\nlibrosa.display.specshow(D4, y_axis='linear')\nplt.colorbar(format='%+2.0f dB')\nax9.plot()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4.3 Chromagram <a id = '4.3'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = plt.figure(figsize=(18, 18)) \ngs = gridspec.GridSpec(5, 2, width_ratios=[2, 6]) \nax0 = plt.subplot(gs[0])\nimg = Image.open(\"/kaggle/input/osic-bird-image/bkbwar.jpg\")\nax0.axis('off')\nax0.imshow(img)\nax1 = plt.subplot(gs[1])\ny, sr = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/bkbwar/XC101580.mp3\")\nC = librosa.feature.chroma_cqt(y=y, sr=sr)\nlibrosa.display.specshow(C, y_axis='chroma', x_axis='time')\nplt.title('Chroma (beat time)')\nax1.plot()\n\nax2 = plt.subplot(gs[2])\nimg = Image.open(\"/kaggle/input/osic-bird-image/clanut.jpg\")\nax2.axis('off')\nax2.imshow(img)\nax3 = plt.subplot(gs[3])\ny1, sr1 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/clanut/XC391597.mp3\")\nC1 = librosa.feature.chroma_cqt(y=y1, sr=sr1)\nlibrosa.display.specshow(C1, y_axis='chroma', x_axis='time')\nax3.plot()\n   \nax4 = plt.subplot(gs[4])\nimg = Image.open(\"/kaggle/input/osic-bird-image/whcspa.jpg\")\nax4.axis('off')\nax4.imshow(img)\nax5 = plt.subplot(gs[5])\ny2, sr2 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/whcspa/XC478423.mp3\")\nC2 = librosa.feature.chroma_cqt(y=y2, sr=sr2)\nlibrosa.display.specshow(C2, y_axis='chroma', x_axis='time')\nax5.plot()\n\nax6 = plt.subplot(gs[6])\nimg = Image.open(\"/kaggle/input/osic-bird-image/prawar.jpg\")\nax6.axis('off')\nax6.imshow(img)\nax7 = plt.subplot(gs[7])\ny3, sr3 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/prawar/XC444966.mp3\")\nC3 = librosa.feature.chroma_cqt(y=y3, sr=sr3)\nlibrosa.display.specshow(C3, y_axis='chroma', x_axis='time')\nax7.plot()\n\nax8 = plt.subplot(gs[8])\nimg = Image.open(\"/kaggle/input/osic-bird-image/rebwoo.jpg\")\nax8.axis('off')\nax8.imshow(img)\nax9 = plt.subplot(gs[9])\ny4, sr4 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/rebwoo/XC145839.mp3\")\nC4 = librosa.feature.chroma_cqt(y=y4, sr=sr4)\nlibrosa.display.specshow(C4, y_axis='chroma', x_axis='time')\nax9.plot()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4.4 Chromagram <a id = '4.4'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"\nfig = plt.figure(figsize=(18, 18)) \ngs = gridspec.GridSpec(5, 2, width_ratios=[2, 6]) \nax0 = plt.subplot(gs[0])\nimg = Image.open(\"/kaggle/input/osic-bird-image/bkbwar.jpg\")\nax0.axis('off')\nax0.imshow(img)\nax1 = plt.subplot(gs[1])\ny, sr = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/bkbwar/XC101580.mp3\")\ngram = librosa.feature.tempogram(y=y, sr=sr)\nlibrosa.display.specshow(gram, x_axis='time', y_axis='tempo')\nax1.plot()\n\nax2 = plt.subplot(gs[2])\nimg = Image.open(\"/kaggle/input/osic-bird-image/clanut.jpg\")\nax2.axis('off')\nax2.imshow(img)\nax3 = plt.subplot(gs[3])\ny1, sr1 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/clanut/XC391597.mp3\")\ngram1 = librosa.feature.tempogram(y=y1, sr=sr1)\nlibrosa.display.specshow(gram1, x_axis='time', y_axis='tempo')\nax3.plot()\n   \nax4 = plt.subplot(gs[4])\nimg = Image.open(\"/kaggle/input/osic-bird-image/whcspa.jpg\")\nax4.axis('off')\nax4.imshow(img)\nax5 = plt.subplot(gs[5])\ny2, sr2 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/whcspa/XC478423.mp3\")\ngram2 = librosa.feature.tempogram(y=y2, sr=sr2)\nlibrosa.display.specshow(gram2, x_axis='time', y_axis='tempo')\nax5.plot()\n\nax6 = plt.subplot(gs[6])\nimg = Image.open(\"/kaggle/input/osic-bird-image/prawar.jpg\")\nax6.axis('off')\nax6.imshow(img)\nax7 = plt.subplot(gs[7])\ny3, sr3 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/prawar/XC444966.mp3\")\ngram3 = librosa.feature.tempogram(y=y3, sr=sr3)\nlibrosa.display.specshow(gram3, x_axis='time', y_axis='tempo')\nax7.plot()\n\nax8 = plt.subplot(gs[8])\nimg = Image.open(\"/kaggle/input/osic-bird-image/rebwoo.jpg\")\nax8.axis('off')\nax8.imshow(img)\nax9 = plt.subplot(gs[9])\ny4, sr4 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/rebwoo/XC145839.mp3\")\ngram4 = librosa.feature.tempogram(y=y4, sr=sr4)\nlibrosa.display.specshow(gram4, x_axis='time', y_axis='tempo')\nax9.plot()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4.5 Linear power spectrogram (grayscale) <a id='4.5'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"\nfig = plt.figure(figsize=(18, 18)) \ngs = gridspec.GridSpec(5, 2, width_ratios=[2, 6]) \nax0 = plt.subplot(gs[0])\nimg = Image.open(\"/kaggle/input/osic-bird-image/bkbwar.jpg\")\nax0.axis('off')\nax0.imshow(img)\nax1 = plt.subplot(gs[1])\ny, sr = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/bkbwar/XC101580.mp3\")\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nax1.plot()\n\nax2 = plt.subplot(gs[2])\nimg = Image.open(\"/kaggle/input/osic-bird-image/clanut.jpg\")\nax2.axis('off')\nax2.imshow(img)\nax3 = plt.subplot(gs[3])\ny1, sr1 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/clanut/XC391597.mp3\")\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y1)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nax3.plot()\n   \nax4 = plt.subplot(gs[4])\nimg = Image.open(\"/kaggle/input/osic-bird-image/whcspa.jpg\")\nax4.axis('off')\nax4.imshow(img)\nax5 = plt.subplot(gs[5])\ny2, sr2 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/whcspa/XC478423.mp3\")\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y2)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nax5.plot()\n\nax6 = plt.subplot(gs[6])\nimg = Image.open(\"/kaggle/input/osic-bird-image/prawar.jpg\")\nax6.axis('off')\nax6.imshow(img)\nax7 = plt.subplot(gs[7])\ny3, sr3 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/prawar/XC444966.mp3\")\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y3)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nax7.plot()\n\nax8 = plt.subplot(gs[8])\nimg = Image.open(\"/kaggle/input/osic-bird-image/rebwoo.jpg\")\nax8.axis('off')\nax8.imshow(img)\nax9 = plt.subplot(gs[9])\ny4, sr4 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/rebwoo/XC145839.mp3\")\nD = librosa.amplitude_to_db(np.abs(librosa.stft(y4)), ref=np.max)\nlibrosa.display.specshow(D, cmap='gray_r', y_axis='linear')\nax9.plot()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 4.6 Harmonic + Percussive <a id ='4.6'>","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = plt.figure(figsize=(18, 18)) \ngs = gridspec.GridSpec(5, 2, width_ratios=[2, 6]) \nax0 = plt.subplot(gs[0])\nimg = Image.open(\"/kaggle/input/osic-bird-image/bkbwar.jpg\")\nax0.axis('off')\nax0.imshow(img)\nax1 = plt.subplot(gs[1])\ny, sr = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/bkbwar/XC101580.mp3\")\ny_harm, y_perc = librosa.effects.hpss(y)\nlibrosa.display.waveplot(y_harm, sr=sr, alpha=0.25)\nlibrosa.display.waveplot(y_perc, sr=sr, color='r', alpha=0.5)\nax1.plot()\n\nax2 = plt.subplot(gs[2])\nimg = Image.open(\"/kaggle/input/osic-bird-image/clanut.jpg\")\nax2.axis('off')\nax2.imshow(img)\nax3 = plt.subplot(gs[3])\ny1, sr1 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/clanut/XC391597.mp3\")\ny_harm1, y_perc1 = librosa.effects.hpss(y1)\nlibrosa.display.waveplot(y_harm1, sr=sr1, alpha=0.25)\nlibrosa.display.waveplot(y_perc1, sr=sr1, color='r', alpha=0.5)\nax3.plot()\n   \nax4 = plt.subplot(gs[4])\nimg = Image.open(\"/kaggle/input/osic-bird-image/whcspa.jpg\")\nax4.axis('off')\nax4.imshow(img)\nax5 = plt.subplot(gs[5])\ny2, sr2 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/whcspa/XC478423.mp3\")\ny_harm2, y_perc2 = librosa.effects.hpss(y2)\nlibrosa.display.waveplot(y_harm2, sr=sr2, alpha=0.25)\nlibrosa.display.waveplot(y_perc2, sr=sr2, color='r', alpha=0.5)\nax5.plot()\n\nax6 = plt.subplot(gs[6])\nimg = Image.open(\"/kaggle/input/osic-bird-image/prawar.jpg\")\nax6.axis('off')\nax6.imshow(img)\nax7 = plt.subplot(gs[7])\ny3, sr3 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/prawar/XC444966.mp3\")\ny_harm3, y_perc3 = librosa.effects.hpss(y3)\nlibrosa.display.waveplot(y_harm3, sr=sr3, alpha=0.25)\nlibrosa.display.waveplot(y_perc3, sr=sr3, color='r', alpha=0.5)\nax7.plot()\n\nax8 = plt.subplot(gs[8])\nimg = Image.open(\"/kaggle/input/osic-bird-image/rebwoo.jpg\")\nax8.axis('off')\nax8.imshow(img)\nax9 = plt.subplot(gs[9])\ny4, sr4 = librosa.load(\"/kaggle/input/birdsong-recognition/train_audio/rebwoo/XC145839.mp3\")\ny_harm4, y_perc4 = librosa.effects.hpss(y4)\nlibrosa.display.waveplot(y_harm4, sr=sr4, alpha=0.25)\nlibrosa.display.waveplot(y_perc4, sr=sr4, color='r', alpha=0.5)\nax9.plot()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## If you like this kernel plz <font color='red'>UPVOTE</font>.\n## If you have suggestions to improve this kernel plz <font color='red'>COMMENT</font>.\n\n<font color='Blue'>************************ Notebook is under construction ************************</font>","execution_count":null}],"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}