{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# !pip install torchaudio --quiet\nimport numpy as np\nimport pandas as pd\nimport torchaudio\nimport matplotlib.pyplot as plt\nimport os\nfrom IPython.display import Audio\nimport random\nimport librosa\n\n\nroot = \"/kaggle/input/bengaliai-speech\"","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-08-06T13:33:02.438851Z","iopub.execute_input":"2023-08-06T13:33:02.439779Z","iopub.status.idle":"2023-08-06T13:33:02.445524Z","shell.execute_reply.started":"2023-08-06T13:33:02.439743Z","shell.execute_reply":"2023-08-06T13:33:02.444351Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h1> | Visualize the Audio files </h1>","metadata":{}},{"cell_type":"code","source":"train_data = pd.read_csv(root + \"/train.csv\")\nfile_list = os.listdir(root+'/train_mp3s')\n\ndef plot_spectrogram(spec, title=None, ylabel='freq_bin', aspect='auto', xmax=None):\n    fig, axs = plt.subplots(1, 1, figsize=(17,4))\n    axs.set_title(title or 'Spectrogram (db)')\n    axs.set_ylabel(ylabel)\n    axs.set_xlabel('frame')\n    im = axs.imshow(librosa.power_to_db(spec), origin='lower', aspect=aspect)\n    if xmax:\n        axs.set_xlim((0, xmax))\n    fig.colorbar(im, ax=axs)\n    plt.show(block=False)\n\ndef visulize_waveform():\n    instance = file_list[random.randint(0, len(file_list)-1)]\n    file_path = root+'/train_mp3s/'+ instance\n    sentence=train_data[train_data[\"id\"]==file_list[random.randint(0, len(file_list)-1)].replace(\".mp3\", \"\")]\n    title=sentence[\"sentence\"].values[0]\n    waveform, sample_rate = torchaudio.load(file_path)\n    waveform_np = waveform.numpy()\n    num_channels, num_frames = waveform_np.shape\n    time = np.arange(0, num_frames) / sample_rate\n\n    fig, axes = plt.subplots(num_channels, 1, figsize=(15,5))\n    axes.set_facecolor('#F6F4EB')\n  \n    if num_channels == 1:\n        axes = [axes]\n    for ch in range(num_channels):\n        axes[ch].plot(time, waveform_np[ch], color=\"#F11A7B\")\n        axes[ch].grid(True)\n        axes[ch].set_xlabel(\"Time\")\n        axes[ch].set_ylabel(f\"Channel: {ch+1}\")\n\n    if num_channels > 1:\n        plt.show(block = False)\n        \n    print(\"\\nText: \"+title)\n    \n    n_fft = 1024\n    hop_length = 512\n    n_mels = 128\n    mel_spectrogram = torchaudio.transforms.MelSpectrogram(sample_rate=sample_rate,\n                                   n_fft=n_fft,\n                                   hop_length=hop_length,\n                                   center=True,\n                                   pad_mode=\"reflect\",\n                                   power=2.0,\n                                   norm='slaney',\n                                   n_mels=n_mels,\n                                   mel_scale=\"htk\")\n\n    melspec = mel_spectrogram(waveform)\n    plot_spectrogram(melspec[0], title=\"MelSpectrogram\", ylabel='mel freq')\n        \n    return Audio(file_path)\n\nvisulize_waveform()","metadata":{"execution":{"iopub.status.busy":"2023-08-06T14:15:57.462248Z","iopub.execute_input":"2023-08-06T14:15:57.462706Z","iopub.status.idle":"2023-08-06T14:16:05.292556Z","shell.execute_reply.started":"2023-08-06T14:15:57.462674Z","shell.execute_reply":"2023-08-06T14:16:05.291520Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}