{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"from IPython.display import HTML\nHTML('<iframe width=\"600\" height=\"400\" src=\"https://www.youtube.com/embed/pzmdOETnhI0\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport folium\n\n\n\nimport plotly.express as px\nimport plotly.graph_objects as go\nimport plotly.figure_factory as ff\nfrom plotly.subplots import make_subplots\nimport IPython.display as ipd\nimport librosa\nimport warnings\nimport matplotlib.pyplot as plt\nimport librosa.display\nimport IPython","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n**What is Speech Recogniton**\n\n\nLet’s take a moment to talk about how speech recognition works. A full discussion would fill a book, so I won’t bore you with all of the technical details here. In fact. If you’d like to get straight to the point, then feel free to skip ahead.\n\n\n# History\nSpeech recognition has its roots in research done at Bell Labs in the early 1950s. Early systems were limited to a single speaker and had limited vocabularies of about a dozen words. Modern speech recognition systems have come a long way since their ancient counterparts. They can recognize speech from multiple speakers and have enormous vocabularies in numerous languages.\n\nThe first component of speech recognition is, of course, speech. Speech must be converted from physical sound to an electrical signal with a microphone, and then to digital data with an analog-to-digital converter. Once digitized, several models can be used to transcribe the audio to text.\n\n","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"**Speech and Sound Seems similar dosen't it ?**","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"Let's do A deep dive into EDA first then talk about speech Components and Sound Components and what approach Can we use to tackle this problem","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"\n\ndf = pd.read_csv('../input/birdsong-recognition/train.csv')\ntrain=pd.read_csv('../input/birdsong-recognition/train.csv')\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import bokeh\nimport os\n\nimport numpy as np\nimport pandas as pd\nimport IPython.display as ipd\n\nfrom bokeh.layouts import column, row\nfrom bokeh.models import ColumnDataSource, LinearAxis, Range1d\nfrom bokeh.models.tools import HoverTool\nfrom bokeh.palettes import BuGn4\nfrom bokeh.plotting import figure, output_notebook, show\nfrom bokeh.transform import cumsum\n\nfrom math import pi\n\noutput_notebook()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cols = df.columns\n\nnum_cols = df._get_numeric_data().columns\n\nnum_cols\nc=list(set(cols) - set(num_cols))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Total Number of colums are\",len(df.columns))\nprint(\"Number of Numerical Cols is :\",len(num_cols))\nprint(\"Number of Categorical cols is:\", len(c))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Name of Numerical Cols is :\",num_cols)\nprint(\"Name of Numerical Cols is :\",c)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.read_csv('../input/birdsong-recognition/train.csv')\nprint(f\"{train.ebird_code.nunique()} species, {len(train)} birds.\")\nprint(\"subdirectories and files\")\n!ls -d ../input/birdsong-recognition/train_audio/* |wc\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# convert lat/lon to numeric/NaN\ndf.latitude = pd.to_numeric(df.latitude, errors='coerce')\ndf.longitude = pd.to_numeric(df.longitude, errors='coerce')\n\nsns.scatterplot(x='longitude', y='latitude', data=df)\nplt.grid()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Just plotting the points gives us an essence of what the points really feels like its as if we have the data of entire globe, although key point to note here is The main focus is on American and Asian Continent with the data we have**","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"state_details = pd.pivot_table(df, values=['rating', 'duration', 'xc_id','elevation','sampling_rate','number_of_notes','channels','time','country'], index='species', aggfunc='max')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = make_subplots(rows=1, cols=2, specs=[[{'type':'domain'}, {'type':'domain'}]])\ndf1 = df.volume.value_counts()\nfig.add_trace(go.Pie(labels=df.index, values=df1.values, name=\"Volume\"),\n              1, 1)\n\ndf1 = df.pitch.value_counts()\nfig.add_trace(go.Pie(labels=df.index ,values=df1.values, name=\"Pitch\"),\n              1, 2)\n\n# Use `hole` to create a donut-like pie chart\nfig.update_traces(hole=.4, hoverinfo=\"label+percent+name\")\n\nfig.update_layout(\n    title_text=\"Volume and Pitch of Observation\",\n    # Add annotations in the center of the donut pies.\n    annotations=[dict(text='Volume', x=0.18, y=0.5, font_size=20, showarrow=False),\n                 dict(text='Pitch', x=0.82, y=0.5, font_size=20, showarrow=False)])\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"This was just down as a part of EDA just scroll through the dataframe to know the results","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"state_details = state_details.sort_values(by='rating', ascending= False).reset_index(level=0)\nstate_details.style.background_gradient(cmap='plasma_r')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Upon Taking a subset of features we notice fishy behaviour of columns, the categorical variables have numerical values and key feature points are missing in some of them.\n\n* elevation\n* number of notes\n* sampling rate\n* time\n* channel","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"**Volume and Pitch Observation**","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"\nimport plotly.offline as pyo\nfig = go.Figure(data=[\n    go.Bar(x=species.index, y=species.values)\n])\n\n#ig.update_layout(title='Distribution of Bird Species')\npyo.iplot(fig)\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"rec = train.recordist.value_counts()[:20]\nfig = go.Figure(data=[\n    go.Bar(x=rec.index, y=rec.values)\n])\n\nfig.update_layout(title='Top Recordists')\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"How many times was the bird seen when there was a recording?","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"df = train.bird_seen.value_counts()\nfig = px.pie(df,df.index,df.values,labels={'index':'Bird Seen'})\nfig.update_layout(title='Bird Seen')\n\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# **Length of Audio Signal**","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"df=df.length.value_counts()\nfig = px.pie(df,df.index,df.values,labels={'index':'length of audio'})\nfig.update_layout(title='Length of audio signal')\n\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"rec = train.sampling_rate.value_counts()\nfig = go.Figure(data=[\n    go.Bar(x=rec.index, y=rec.values)\n])\n\nfig.update_layout(title='Frequency')\nfig.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df.country.unique() ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Number of unique locations are:\",len(df.location.unique())) \nprint(\"Number of unique country are:\",len(df.country.unique() ))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"species=df.species.value_counts()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!pip install plotly","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\n\nfrom pathlib import Path\nimport pandas as pd\nimport colorcet as cc\nimport geoviews as gv\nimport holoviews as hv\nfrom holoviews.operation.datashader import datashade, dynspread\nhv.extension('bokeh')\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = train.assign(latitude=pd.to_numeric(train.latitude, errors='coerce'),\n                     longitude=pd.to_numeric(train.longitude, errors='coerce')) \\\n             .dropna(subset=['latitude', 'longitude'])\n    \ntypes = train.species.str.extract('([a-zA-Z]+ )', expand=False).value_counts(normalize=True).cumsum()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"%%opts Points {+axiswise} [width=250 height=220 xaxis=None yaxis=None] (alpha=0.3)\n\n\ndef plot_birds(df):\n    points_trn = gv.Points(df, kdims=['longitude', 'latitude'], vdims='species')\n    tiles = gv.tile_sources.CartoLight\n    chart = tiles*points_trn\n    return chart.relabel(df.species.unique()[0]) \n\n    \nlayout_list = []\nfor type in types.index:\n    train_part = train[train.species.str.contains(type)]\n    chart = plot_birds(train_part)\n    layout_list.append(chart)\n\nlayout = hv.Layout(layout_list[2::3]).cols(3)\ndisplay(layout)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\n\ndf_bird = df.groupby(\"species\")[\"filename\"].count().reset_index().rename(columns = {\"filename\": \"recordings\"}).sort_values(\"recordings\")\n\n\ndf_date = df.groupby(\"date\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"})\ndf_date.date = pd.to_datetime(df_date.date, errors = \"coerce\")\ndf_date.dropna(inplace = True)\ndf_date[\"weekday\"] = df_date.date.dt.day_name()\n\nsource_1 = ColumnDataSource(df_date)\n\ntooltips_1 = [\n    (\"Date\", \"@date{%F}\"),\n    (\"Recordings\", \"@recordings\")\n]\n\nformatters = {\n    \"@date\": \"datetime\"\n}\n\nv1 = figure(plot_width = 450, plot_height = 400, x_axis_type = \"datetime\", title = \"Date of recording\")\nv1.line(\"date\", \"recordings\", source = source_1, color = \"orange\", alpha = 0.6)\n\nv1.add_tools(HoverTool(tooltips = tooltips_1, formatters = formatters))\n\nv1.xaxis.axis_label = \"Date\"\nv1.yaxis.axis_label = \"Recordings\"\n\n\ndf_weekday = df_date.groupby(\"weekday\")[\"recordings\"].sum().reset_index().sort_values(\"recordings\", ascending = False)\n\nsource_2 = ColumnDataSource(df_weekday)\n\ntooltips_2 = [\n    (\"Weekday\", \"@weekday\"),\n    (\"Recordings\", \"@recordings\")\n]\n\nv2 = figure(plot_width = 250, plot_height = 400, x_range = df_weekday.weekday.values, tooltips = tooltips_2, title = \"Weekday of recording\")\nv2.vbar(\"weekday\", top = \"recordings\", source = source_2, width = 0.75, color = \"maroon\", alpha = 0.6)\n\nv2.xaxis.axis_label = \"Weekday\"\nv2.yaxis.axis_label = \"Recordings\"\n\nv2.xaxis.major_label_orientation = pi / 2\n\n\nshow(row(v1, v2))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_rating = df.groupby(\"rating\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"})\n\nsource_1 = ColumnDataSource(df_rating)\n\ntooltips_1 = [\n    (\"Rating\", \"@rating{0.0}\"),\n    (\"Recordings\", \"@recordings\")\n]\n\nv1 = figure(plot_width = 350, plot_height = 300, tooltips = tooltips_1, title = \"Distribution of Rating\")\nv1.vbar(\"rating\", top = \"recordings\", source = source_1, width = 0.4, color = \"lightseagreen\", alpha = 0.6)\n\nv1.xaxis.axis_label = \"Rating\"\nv1.yaxis.axis_label = \"Recordings\"\n\n\ndf_playback = df.groupby(\"playback_used\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"})\ndf_playback[\"percentage\"] = df_playback.recordings * 100 / df_playback.recordings.sum()\ndf_playback[\"angle\"] = df_playback.recordings / df_playback.recordings.sum() * 2 * pi\ndf_playback[\"color\"] = [\"mediumseagreen\", \"lightseagreen\"]\n\nsource_2 = ColumnDataSource(df_playback)\n\ntooltips_2 = [\n    (\"Playback Used\", \"@playback_used\"),\n    (\"Recordings\", \"@recordings\"),\n    (\"Percentage\", \"@percentage{0}%\")\n]\n\nv2 = figure(plot_width = 350, plot_height = 300, tooltips = tooltips_2, title = \"Distribution of Playback Used\")\nv2.wedge(x = 0, y = 1, radius = 0.4, start_angle = cumsum(\"angle\", include_zero = True), end_angle = cumsum(\"angle\"), line_color = \"white\", fill_color = \"color\", legend_field = \"playback_used\", source = source_2)\n\nv2.axis.axis_label = None\nv2.axis.visible = False\nv2.grid.grid_line_color = None\n\n\ndf_pitch = df.groupby(\"pitch\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"}).sort_values(\"recordings\", ascending = False)\n\nsource_3 = ColumnDataSource(df_pitch)\n\ntooltips_3 = [\n    (\"Pitch\", \"@pitch\"),\n    (\"Recordings\", \"@recordings\")\n]\n\nv3 = figure(plot_width = 350, plot_height = 300, x_range = df_pitch.pitch.values, tooltips = tooltips_3, title = \"Distribution of Pitch\")\nv3.vbar(\"pitch\", top = \"recordings\", source = source_3, width = 0.4, color = \"lightseagreen\", alpha = 0.6)\n\nv3.xaxis.axis_label = \"Pitch\"\nv3.yaxis.axis_label = \"Recordings\"\n\n\ndf_channels = df.groupby(\"channels\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"})\ndf_channels[\"percentage\"] = df_channels.recordings * 100 / df_channels.recordings.sum()\ndf_channels[\"angle\"] = df_channels.recordings / df_channels.recordings.sum() * 2 * pi\ndf_channels[\"color\"] = [\"mediumseagreen\", \"lightseagreen\"]\n\nsource_4 = ColumnDataSource(df_channels)\n\ntooltips_4 = [\n    (\"Channel\", \"@channels\"),\n    (\"Recordings\", \"@recordings\"),\n    (\"Percentage\", \"@percentage{0}%\")\n]\n\nv4 = figure(plot_width = 350, plot_height = 300, tooltips = tooltips_4, title = \"Distribution of Channel\")\nv4.wedge(x = 0, y = 1, radius = 0.4, start_angle = cumsum(\"angle\", include_zero = True), end_angle = cumsum(\"angle\"), line_color = \"white\", fill_color = \"color\", legend_field = \"channels\", source = source_4)\n\nv4.axis.axis_label = None\nv4.axis.visible = False\nv4.grid.grid_line_color = None\n\n\ndf_speed = df.groupby(\"speed\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"}).sort_values(\"recordings\", ascending = False)\n\nsource_5 = ColumnDataSource(df_speed)\n\ntooltips_5 = [\n    (\"Speed\", \"@speed\"),\n    (\"Recordings\", \"@recordings\")\n]\n\nv5 = figure(plot_width = 350, plot_height = 300, x_range = df_speed.speed.values, tooltips = tooltips_5, title = \"Distribution of Speed\")\nv5.vbar(\"speed\", top = \"recordings\", source = source_5, width = 0.4, color = \"lightseagreen\", alpha = 0.6)\n\nv5.xaxis.axis_label = \"Speed\"\nv5.yaxis.axis_label = \"Recordings\"\n\n\ndf_bird_seen = df.groupby(\"bird_seen\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"})\ndf_bird_seen[\"percentage\"] = df_bird_seen.recordings * 100 / df_bird_seen.recordings.sum()\ndf_bird_seen[\"angle\"] = df_bird_seen.recordings / df_bird_seen.recordings.sum() * 2 * pi\ndf_bird_seen[\"color\"] = [\"mediumseagreen\", \"lightseagreen\"]\n\nsource_6 = ColumnDataSource(df_bird_seen)\n\ntooltips_6 = [\n    (\"Bird Seen\", \"@bird_seen\"),\n    (\"Recordings\", \"@recordings\"),\n    (\"Percentage\", \"@percentage{0}%\")\n]\n\nv6 = figure(plot_width = 350, plot_height = 300, tooltips = tooltips_6, title = \"Distribution of Bird Seen\")\nv6.wedge(x = 0, y = 1, radius = 0.4, start_angle = cumsum(\"angle\", include_zero = True), end_angle = cumsum(\"angle\"), line_color = \"white\", fill_color = \"color\", legend_field = \"bird_seen\", source = source_6)\n\nv6.axis.axis_label = None\nv6.axis.visible = False\nv6.grid.grid_line_color = None\n\n\ndf_volume = df.groupby(\"volume\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"}).sort_values(\"recordings\", ascending = False)\n\nsource_7 = ColumnDataSource(df_volume)\n\ntooltips_7 = [\n    (\"Volume\", \"@volume\"),\n    (\"Recordings\", \"@recordings\")\n]\n\nv7 = figure(plot_width = 350, plot_height = 300, x_range = df_volume.volume.values, tooltips = tooltips_7, title = \"Distribution of Volume\")\nv7.vbar(\"volume\", top = \"recordings\", source = source_7, width = 0.4, color = \"lightseagreen\", alpha = 0.6)\n\nv7.xaxis.axis_label = \"Volume\"\nv7.yaxis.axis_label = \"Recordings\"\n\n\ndf[\"filetype\"] = \"mp3\"\ndf.loc[df.file_type != \"mp3\", \"filetype\"] = \"other\"\n\ndf_file_type = df.groupby(\"filetype\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"})\ndf_file_type[\"percentage\"] = df_file_type.recordings * 100 / df_file_type.recordings.sum()\ndf_file_type[\"angle\"] = df_file_type.recordings / df_file_type.recordings.sum() * 2 * pi\ndf_file_type[\"color\"] = [\"mediumseagreen\", \"lightseagreen\"]\n\nsource_8 = ColumnDataSource(df_file_type)\n\ntooltips_8 = [\n    (\"File Type\", \"@filetype\"),\n    (\"Recordings\", \"@recordings\"),\n    (\"Percentage\", \"@percentage{0.000}%\")\n]\n\nv8 = figure(plot_width = 350, plot_height = 300, tooltips = tooltips_8, title = \"Distribution of File Type\")\nv8.wedge(x = 0, y = 1, radius = 0.4, start_angle = cumsum(\"angle\", include_zero = True), end_angle = cumsum(\"angle\"), line_color = \"white\", fill_color = \"color\", legend_field = \"filetype\", source = source_8)\n\nv8.axis.axis_label = None\nv8.axis.visible = False\nv8.grid.grid_line_color = None\n\n\ndf_sampling_rate = df.groupby(\"sampling_rate\")[\"species\"].count().reset_index().rename(columns = {\"species\": \"recordings\"}).sort_values(\"recordings\", ascending = False)\n\nsource_9 = ColumnDataSource(df_sampling_rate)\n\ntooltips_9 = [\n    (\"Sampling Rate\", \"@sampling_rate\"),\n    (\"Recordings\", \"@recordings\")\n]\n\nv9 = figure(plot_width = 350, plot_height = 300, x_range = df_sampling_rate.sampling_rate.values, tooltips = tooltips_7, title = \"Distribution of Sampling Rate\")\nv9.vbar(\"sampling_rate\", top = \"recordings\", source = source_9, width = 0.4, color = \"red\", alpha = 0.6)\n\nv9.xaxis.axis_label = \"Sampling Rate\"\nv9.yaxis.axis_label = \"Recordings\"\n\nv9.xaxis.major_label_orientation = pi / 4\n\n\nlicense_map = {\n    \"Creative Commons Attribution-NonCommercial-ShareAlike 3.0\": \"CC BY-NC-SA 3.0\",\n    \"Creative Commons Attribution-NonCommercial-ShareAlike 4.0\": \"CC BY-NC-SA 4.0\",\n    \"Creative Commons Attribution-ShareAlike 3.0\": \"CC BY-SA 3.0\",\n    \"Creative Commons Attribution-ShareAlike 4.0\": \"CC BY-SA 4.0\"\n}\n\ndf[\"license_abbr\"] = df.license.map(license_map)\n\ndf_license = df.groupby(\"license_abbr\")[\"species\"].count().reset_index().rename(columns = {\"license_abbr\": \"license\", \"species\": \"recordings\"}).sort_values(\"recordings\", ascending = False)\ndf_license[\"percentage\"] = df_license.recordings * 100 / df_license.recordings.sum()\ndf_license[\"angle\"] = df_license.recordings / df_license.recordings.sum() * 2 * pi\ndf_license[\"color\"] = BuGn4\n\nsource_10 = ColumnDataSource(df_license)\n\ntooltips_10 = [\n    (\"License\", \"@license\"),\n    (\"Recordings\", \"@recordings\"),\n    (\"Percentage\", \"@percentage{0}%\")\n]\n\nv10 = figure(plot_width = 350, plot_height = 300, tooltips = tooltips_10, title = \"Distribution of License\")\nv10.wedge(x = 0, y = 1, radius = 0.4, start_angle = cumsum(\"angle\", include_zero = True), end_angle = cumsum(\"angle\"), line_color = \"white\", fill_color = \"color\", legend_field = \"license\", source = source_10)\n\nv10.axis.axis_label = None\nv10.axis.visible = False\nv10.grid.grid_line_color = None\n\nv10.legend.label_text_font_size = \"6pt\"\n\n\nshow(column(row(v1, v2), row(v3, v4), row(v5, v6), row(v7, v8), row(v9, v10)))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n\nThere are 264 different birds in train data!\n\nInteresting to notice that max count of rcordings per a bird is 100.\n\n\nMany Categorical Variables are actually Numerical Variables and need Further Analysis,before jumping in straight to solve the problem","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"<span style=\"color:red\"> **Do Upvote my kernel if you find my insights helpful.** </span>\n\n<span style=\"color:red\">I would covering these approaches in future\n    \n* What are various features available in the data\n* What are spectograms\n* What is acoustic Modelling\n* Mapping Spectograms and Speech Signals\n* Visualizing Sound Signals with various Libraires\n</span>\n\n\n<span style=\"color:red\">Stay updated with my kernels</span>","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"References:\n\n\n http://www.kaggle.com/jpmiller/where-the-birds-live\n \n","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}