{"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":"markdown","source":"# This notebook consists of two main parts: audio visualization and augment.","metadata":{}},{"cell_type":"markdown","source":"## This is a simple eda.\n## please vote me if it helps you.\n![193330546B4B0A68D5D95FDEE0DA98F3.png](https://s2.loli.net/2022/04/23/ZTgoUvuLcdjpKWr.jpg)","metadata":{}},{"cell_type":"markdown","source":"![QQ图片20220423191012.png](https://s2.loli.net/2022/04/23/2sl9ROucwEx6Q8q.png)","metadata":{}},{"cell_type":"markdown","source":"# 1.Audio post-processing ","metadata":{}},{"cell_type":"code","source":"import numpy as np \nimport pandas as pd \nimport os\nimport librosa","metadata":{"_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-04-23T11:24:27.050075Z","iopub.execute_input":"2022-04-23T11:24:27.05071Z","iopub.status.idle":"2022-04-23T11:24:29.334998Z","shell.execute_reply.started":"2022-04-23T11:24:27.05066Z","shell.execute_reply":"2022-04-23T11:24:29.333848Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x , sr = librosa.load('../input/birdclef-2022/test_soundscapes/soundscape_453028782.ogg')\nprint(type(x), type(sr))\nprint(x.shape, sr)\n# sr:sampling rate\n#The higher the sampling rate, the more realistic and natural the sound is restored.","metadata":{"execution":{"iopub.status.busy":"2022-04-23T11:25:58.403142Z","iopub.execute_input":"2022-04-23T11:25:58.403439Z","iopub.status.idle":"2022-04-23T11:26:01.187694Z","shell.execute_reply.started":"2022-04-23T11:25:58.403409Z","shell.execute_reply":"2022-04-23T11:26:01.186885Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Playing Bird Audio:","metadata":{}},{"cell_type":"code","source":"import IPython.display as ipd\nipd.Audio('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T11:33:18.007386Z","iopub.execute_input":"2022-04-23T11:33:18.007686Z","iopub.status.idle":"2022-04-23T11:33:18.018582Z","shell.execute_reply.started":"2022-04-23T11:33:18.007655Z","shell.execute_reply":"2022-04-23T11:33:18.017834Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ipd.Audio('../input/birdclef-2022/test_soundscapes/soundscape_453028782.ogg')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T11:33:20.438159Z","iopub.execute_input":"2022-04-23T11:33:20.438733Z","iopub.status.idle":"2022-04-23T11:33:20.458173Z","shell.execute_reply.started":"2022-04-23T11:33:20.438685Z","shell.execute_reply":"2022-04-23T11:33:20.457447Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Visualizing Bird Audio:","metadata":{}},{"cell_type":"markdown","source":"#### (a)Audio waveform","metadata":{}},{"cell_type":"code","source":"%matplotlib inline\nimport matplotlib.pyplot as plt\nimport librosa.display\nx , sr = librosa.load('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')\nplt.figure(figsize=(14, 5))\nlibrosa.display.waveshow(x, sr=sr)","metadata":{"execution":{"iopub.status.busy":"2022-04-23T11:49:04.403068Z","iopub.execute_input":"2022-04-23T11:49:04.403371Z","iopub.status.idle":"2022-04-23T11:49:05.394247Z","shell.execute_reply.started":"2022-04-23T11:49:04.403337Z","shell.execute_reply":"2022-04-23T11:49:05.393118Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### (b)Spectrogram","metadata":{}},{"cell_type":"code","source":"X = librosa.stft(x)\nXdb = librosa.amplitude_to_db(abs(X))\nplt.figure(figsize=(14, 5))\nlibrosa.display.specshow(Xdb, sr=sr, x_axis='time', y_axis='hz')\nplt.colorbar()","metadata":{"execution":{"iopub.status.busy":"2022-04-23T11:53:41.390071Z","iopub.execute_input":"2022-04-23T11:53:41.390375Z","iopub.status.idle":"2022-04-23T11:53:42.283306Z","shell.execute_reply.started":"2022-04-23T11:53:41.390342Z","shell.execute_reply":"2022-04-23T11:53:42.2826Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### (c)Mel-Frequency Cepstral Coefficients(MFCCs)","metadata":{}},{"cell_type":"code","source":"mfccs = librosa.feature.mfcc(x, sr=sr)\n\n#Displaying  the MFCCs:\nplt.figure(figsize=(15, 7))\nlibrosa.display.specshow(mfccs, sr=sr, x_axis='time')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:03:31.879221Z","iopub.execute_input":"2022-04-23T12:03:31.879481Z","iopub.status.idle":"2022-04-23T12:03:32.160713Z","shell.execute_reply.started":"2022-04-23T12:03:31.879453Z","shell.execute_reply":"2022-04-23T12:03:32.159672Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(15, 7))\n\nmelspec = librosa.feature.melspectrogram(x, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        #Convert to a logarithmic scale\nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n#This graph actually represents a matrix whose colors represent specific values.","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:05:17.341377Z","iopub.execute_input":"2022-04-23T12:05:17.3417Z","iopub.status.idle":"2022-04-23T12:05:17.684019Z","shell.execute_reply.started":"2022-04-23T12:05:17.341665Z","shell.execute_reply":"2022-04-23T12:05:17.683449Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 2.Audio-aug","metadata":{}},{"cell_type":"code","source":"x , sr = librosa.load('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')\nprint(type(x), type(sr))\nprint(x.shape, sr)","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:26:53.390541Z","iopub.execute_input":"2022-04-23T12:26:53.390821Z","iopub.status.idle":"2022-04-23T12:26:53.753449Z","shell.execute_reply.started":"2022-04-23T12:26:53.390792Z","shell.execute_reply":"2022-04-23T12:26:53.752569Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Augment the original audio：","metadata":{}},{"cell_type":"code","source":"# Audio cropping\nx , sr = librosa.load('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')\nx[10 * sr:15 * sr]","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:42:21.431162Z","iopub.execute_input":"2022-04-23T12:42:21.43146Z","iopub.status.idle":"2022-04-23T12:42:21.792969Z","shell.execute_reply.started":"2022-04-23T12:42:21.431429Z","shell.execute_reply":"2022-04-23T12:42:21.791959Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Audio rotation\nx , sr = librosa.load('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')\nx = np.roll(x, sr*10)\nprint(x.shape, sr)","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:42:23.513386Z","iopub.execute_input":"2022-04-23T12:42:23.513808Z","iopub.status.idle":"2022-04-23T12:42:23.867378Z","shell.execute_reply.started":"2022-04-23T12:42:23.513763Z","shell.execute_reply":"2022-04-23T12:42:23.866405Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Audio tuning\nimport cv2\nx , sr = librosa.load('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')\nx_tune = cv2.resize(x, (1, int(len(x) * 1.2))).squeeze()\nlc = len(x_tune) - len(x)\nx_tune = x_tune[int(lc / 2):int(lc / 2) + len(x)]\nx_tune","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:42:25.578893Z","iopub.execute_input":"2022-04-23T12:42:25.579158Z","iopub.status.idle":"2022-04-23T12:42:25.949649Z","shell.execute_reply.started":"2022-04-23T12:42:25.57913Z","shell.execute_reply":"2022-04-23T12:42:25.948689Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Audio noise cancellation\nx , sr = librosa.load('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')\nwn = np.random.randn(len(x))\nx = np.where(x != 0.0, x + 0.02 * wn, 0.0)\nx","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:42:27.815253Z","iopub.execute_input":"2022-04-23T12:42:27.815578Z","iopub.status.idle":"2022-04-23T12:42:28.213837Z","shell.execute_reply.started":"2022-04-23T12:42:27.815541Z","shell.execute_reply":"2022-04-23T12:42:28.213085Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Augment the Spectrogram：","metadata":{}},{"cell_type":"code","source":"!pip install audiomentations\n!pip install pyloudnorm","metadata":{"execution":{"iopub.status.busy":"2022-04-23T13:00:09.671516Z","iopub.execute_input":"2022-04-23T13:00:09.672224Z","iopub.status.idle":"2022-04-23T13:00:27.31773Z","shell.execute_reply.started":"2022-04-23T13:00:09.672172Z","shell.execute_reply":"2022-04-23T13:00:27.316706Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from audiomentations import *\nimport numpy as np\nx , sr = librosa.load('../input/birdclef-2022/train_audio/afrsil1/XC125458.ogg')\naugment = Compose([\n    AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.5),\n    TimeStretch(min_rate=0.8, max_rate=1.25, p=0.5),\n    PitchShift(min_semitones=-4, max_semitones=4, p=0.5),\n    Shift(min_fraction=-0.5, max_fraction=0.5, p=0.5),\n])\n\naugmented_samples = augment(samples=x, sample_rate=sr)","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:46:50.600575Z","iopub.execute_input":"2022-04-23T12:46:50.60085Z","iopub.status.idle":"2022-04-23T12:46:52.241169Z","shell.execute_reply.started":"2022-04-23T12:46:50.600821Z","shell.execute_reply":"2022-04-23T12:46:52.240204Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import librosa.display\n%pylab inline\n\nplt.figure(figsize=(10, 6))\nplt.subplot(2, 1, 1)\nmelspec = librosa.feature.melspectrogram(x, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n\nplt.subplot(2, 1, 2)\nmelspec = librosa.feature.melspectrogram(augmented_samples, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:47:08.778096Z","iopub.execute_input":"2022-04-23T12:47:08.778413Z","iopub.status.idle":"2022-04-23T12:47:09.321407Z","shell.execute_reply.started":"2022-04-23T12:47:08.778371Z","shell.execute_reply":"2022-04-23T12:47:09.320563Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# augment_shift\naugment = Compose([\n    Shift(min_fraction=-1, max_fraction=1, p=1),\n])\naugmented_samples = augment(samples=x, sample_rate=sr)\n\nplt.figure(figsize=(10, 6))\nplt.subplot(2, 1, 1)\nmelspec = librosa.feature.melspectrogram(x, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)       \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n\nplt.subplot(2, 1, 2)\nmelspec = librosa.feature.melspectrogram(augmented_samples, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:48:54.587748Z","iopub.execute_input":"2022-04-23T12:48:54.588033Z","iopub.status.idle":"2022-04-23T12:48:55.055357Z","shell.execute_reply.started":"2022-04-23T12:48:54.588004Z","shell.execute_reply":"2022-04-23T12:48:55.054653Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# augment_TimeMask\naugment = Compose([\n    TimeMask(p=1),\n])\naugmented_samples = augment(samples=x, sample_rate=sr)\n\nplt.figure(figsize=(10, 6))\nplt.subplot(2, 1, 1)\nmelspec = librosa.feature.melspectrogram(x, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n\nplt.subplot(2, 1, 2)\nmelspec = librosa.feature.melspectrogram(augmented_samples, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:50:51.186316Z","iopub.execute_input":"2022-04-23T12:50:51.18719Z","iopub.status.idle":"2022-04-23T12:50:51.649493Z","shell.execute_reply.started":"2022-04-23T12:50:51.187135Z","shell.execute_reply":"2022-04-23T12:50:51.648674Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# augment_FrequencyMask\naugment = Compose([\n    FrequencyMask(p=1),\n])\naugmented_samples = augment(samples=x, sample_rate=sr)\n\nplt.figure(figsize=(10, 6))\nplt.subplot(2, 1, 1)\nmelspec = librosa.feature.melspectrogram(x, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n\nplt.subplot(2, 1, 2)\nmelspec = librosa.feature.melspectrogram(augmented_samples, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:50:55.132752Z","iopub.execute_input":"2022-04-23T12:50:55.133204Z","iopub.status.idle":"2022-04-23T12:50:55.603975Z","shell.execute_reply.started":"2022-04-23T12:50:55.133152Z","shell.execute_reply":"2022-04-23T12:50:55.603257Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# augment_Resample\naugment = Compose([\n    Resample(p=1),\n])\naugmented_samples = augment(samples=x, sample_rate=sr)\n\nplt.figure(figsize=(10, 6))\nplt.subplot(2, 1, 1)\nmelspec = librosa.feature.melspectrogram(x, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n\nplt.subplot(2, 1, 2)\nmelspec = librosa.feature.melspectrogram(augmented_samples, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T12:57:41.095563Z","iopub.execute_input":"2022-04-23T12:57:41.096256Z","iopub.status.idle":"2022-04-23T12:57:41.795216Z","shell.execute_reply.started":"2022-04-23T12:57:41.096202Z","shell.execute_reply":"2022-04-23T12:57:41.794015Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# augment_Normalization\naugment = Compose([\n    LoudnessNormalization(p=1),\n])\naugmented_samples = augment(samples=x, sample_rate=sr)\n\nplt.figure(figsize=(10, 6))\nplt.subplot(2, 1, 1)\nmelspec = librosa.feature.melspectrogram(x, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)       \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')\n\nplt.subplot(2, 1, 2)\nmelspec = librosa.feature.melspectrogram(augmented_samples, sr, n_fft=1024, hop_length=512, n_mels=128)\nlogmelspec = librosa.amplitude_to_db(melspec)        \nlibrosa.display.specshow(logmelspec, sr=sr, x_axis='time')","metadata":{"execution":{"iopub.status.busy":"2022-04-23T13:00:35.073403Z","iopub.execute_input":"2022-04-23T13:00:35.073717Z","iopub.status.idle":"2022-04-23T13:00:35.690077Z","shell.execute_reply.started":"2022-04-23T13:00:35.073686Z","shell.execute_reply":"2022-04-23T13:00:35.688984Z"},"trusted":true},"execution_count":null,"outputs":[]}]}