{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.7.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":70203,"databundleVersionId":8068726,"sourceType":"competition"}],"dockerImageVersionId":30381,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# BirdClef2024 soud to 5s's Mel","metadata":{"papermill":{"duration":0.008208,"end_time":"2023-02-12T07:39:45.606224","exception":false,"start_time":"2023-02-12T07:39:45.598016","status":"completed"},"tags":[]}},{"cell_type":"markdown","source":"A Mel Spectrogram is a spectrogram of an audio signal displayed on the Mel scale, a frequency scale close to human hearing. It is widely used as one of acoustic feature extraction in speech processing and acoustic signal processing.","metadata":{}},{"cell_type":"code","source":"import os\nimport cv2\nimport random\nfrom tqdm import tqdm\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport librosa","metadata":{"papermill":{"duration":7.173866,"end_time":"2023-02-12T07:39:52.785901","exception":false,"start_time":"2023-02-12T07:39:45.612035","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-04-16T08:09:08.322347Z","iopub.execute_input":"2024-04-16T08:09:08.323333Z","iopub.status.idle":"2024-04-16T08:09:10.518151Z","shell.execute_reply.started":"2024-04-16T08:09:08.323224Z","shell.execute_reply":"2024-04-16T08:09:10.516357Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_dir = '/kaggle/input/birdclef-2024/train_audio'\npaths=[]\n#labels=[]\nfor dirname, _, filenames in os.walk(data_dir):\n    #print(len(filenames),filenames)\n    if len(filenames)>0:\n        for filename in filenames[0:12]:\n            if filename[-4:]=='.ogg':\n                paths+=[(os.path.join(dirname, filename))]\n                #labels+=[dirname.split('/')[-1]]\nprint(len(paths))\nrandom.shuffle(paths)","metadata":{"papermill":{"duration":3.070181,"end_time":"2023-02-12T07:39:55.861515","exception":false,"start_time":"2023-02-12T07:39:52.791334","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-04-16T08:09:10.521094Z","iopub.execute_input":"2024-04-16T08:09:10.531175Z","iopub.status.idle":"2024-04-16T08:09:19.724086Z","shell.execute_reply.started":"2024-04-16T08:09:10.531104Z","shell.execute_reply":"2024-04-16T08:09:19.72301Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"names=os.listdir('/kaggle/input/birdclef-2024/train_audio')\n\n!mkdir mel\nfor name in names:\n    !mkdir mel/{name} ","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(len(paths)):\n    if i%100==0:\n        print('i=',i)\n    path=paths[i]\n    label=path.split('/')[-2]\n    file=path.split('/')[-1][0:-4]\n    \n    try:\n        y, sr = librosa.load(path)\n        time = int(len(y)/sr)\n\n        for j in range(time//5):\n    \n            mel_spectrogram = librosa.feature.melspectrogram(y=y[5*sr*j:5*sr*(j+1)], sr=sr, n_mels=128)\n            log_mel_spectrogram = librosa.power_to_db(mel_spectrogram, ref=np.max)\n            img=log_mel_spectrogram\n            img=cv2.resize(np.array(img),dsize=(128,128))\n            X=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n            X = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))\n\n            plt.imshow(X)\n            plt.axis('off') \n            plt.savefig(f'./mel/{label}/'+file+'_'+str(j).zfill(3)+'.png', bbox_inches='tight', pad_inches=0)\n            plt.close()\n\n    except: \n        print('except',label,file)\n        continue","metadata":{"_kg_hide-output":true,"papermill":{"duration":1695.43868,"end_time":"2023-02-12T08:08:11.502062","exception":false,"start_time":"2023-02-12T07:39:56.063382","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2023-04-06T16:42:31.050789Z","iopub.execute_input":"2023-04-06T16:42:31.051336Z","iopub.status.idle":"2023-04-06T16:42:35.326446Z","shell.execute_reply.started":"2023-04-06T16:42:31.051278Z","shell.execute_reply":"2023-04-06T16:42:35.325499Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}