{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"collapsed":true},"cell_type":"markdown","source":">started working (6 August)\n\n>work under progress"},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","collapsed":true,"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":false},"cell_type":"markdown","source":"> [Reference 1]( https://www.kaggle.com/c/tensorflow-speech-recognition-challenge/discussion/47674)\n\n\n>  [Reference 2](https://www.kaggle.com/davids1992/speech-representation-and-data-exploration)"},{"metadata":{"trusted":true,"_uuid":"5f3ca6c60244608baa9f3abc5350880c73cedc3f","collapsed":true},"cell_type":"code","source":"import os\n#os.path helps us to get the absolute path \nfrom os.path import isdir,join\nfrom pathlib import Path\n#pathlib is the module that creates object oriented path class for different platform, and the path submodule from the pathlib cretes the concrete path if we are not sure which module is right for our platform\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f7c52020f00601ce04a6f9d4314689af62ddbcb6","collapsed":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom scipy.fftpack import fft\n#fft in the scipy returns the fourier transform of the sequence\nfrom scipy import signal\n#the signal module is used to carry out different operations on the signals\nfrom scipy.io import wavfile\n#scipy is the module that is used to write file in different formats.\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"41467fb97235f299a8875b929e5641f7d18457c0"},"cell_type":"code","source":"import librosa\n#it is a package for video and music analysis","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7b8293494f6a4d4a6ba857c7bc0a037340c52f40"},"cell_type":"code","source":"from sklearn.decomposition import PCA\n\n#visualization\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport IPython.display as ipd\nimport librosa.display","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0044178e8118de8c9e2763f674ed3022c41d09a0"},"cell_type":"code","source":"import plotly.offline as py\npy.init_notebook_mode(connected = True)\nimport plotly.graph_objs as go\nimport plotly.tools as tls\nimport pandas as pd\n\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7334eccae51829635ff2f381b2de8821a43febdd"},"cell_type":"code","source":"# a spectrogram is visual representation of the spectrum of frequency of sound or other signal\n#MEL-Frequency Cepstral Coefficients(they are basically \n#non linear spectrum of a spectrum)\ntrain_audio_path = '../input/train/audio/'\nfilename = '/yes/0a7c2a8d_nohash_0.wav'\nsample_rate, sample = wavfile.read(str(train_audio_path)+filename)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"164c51a7c8b58c878f12a865c14aa589b568b6f9"},"cell_type":"code","source":"def log_specgram(audio, sample_rate, window_size=20,\n                 step_size=10, eps=1e-10):\n    nperseg = int(round(window_size * sample_rate / 1e3))\n    noverlap = int(round(step_size * sample_rate / 1e3))\n    freqs, times, spec = signal.spectrogram(audio,\n                                    fs=sample_rate,\n                                    window='hann',\n                                    nperseg=nperseg,\n                                    noverlap=noverlap,\n                                    detrend=False)\n    return freqs, times, np.log(spec.T.astype(np.float32) + eps)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"753877f0091a2afe03e42978ae00cf6bad3a957f"},"cell_type":"code","source":"freqs, times, spectrogram = log_specgram(sample, sample_rate)\n\nfig = plt.figure(figsize=(14, 8))\nax1 = fig.add_subplot(211)\nax1.set_title('Raw wave of ' + filename)\nax1.set_ylabel('Amplitude')\nax1.plot(np.linspace(0, sample_rate/len(sample), sample_rate), sample)\n\nax2 = fig.add_subplot(212)\nax2.imshow(spectrogram.T, aspect='auto', origin='lower', \n           extent=[times.min(), times.max(), freqs.min(), freqs.max()])\nax2.set_yticks(freqs[::16])\nax2.set_xticks(times[::16])\nax2.set_title('Spectrogram of ' + filename)\nax2.set_ylabel('Freqs in Hz')\nax2.set_xlabel('Seconds')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"69c492c393655decfaba9418375640ccf0e12b68"},"cell_type":"code","source":"mean = np.mean(spectrogram, axis=0)\nstd = np.std(spectrogram, axis=0)\nspectrogram = (spectrogram - mean) / std","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"309275476cc6bd3e18e73f38c581056410147f36"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}