{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":70203,"databundleVersionId":8068726,"sourceType":"competition"}],"dockerImageVersionId":30673,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Imports","metadata":{}},{"cell_type":"code","source":"import os\nfrom tqdm import tqdm\nimport pandas as pd\nimport librosa\nimport numpy as np\nfrom sklearn.preprocessing import LabelEncoder\nimport gc\nfrom joblib import load, dump\nfrom joblib import Parallel, delayed\n\nimport librosa.display\nimport matplotlib.pyplot as plt\n\n\ntrain_path = '/kaggle/input/birdclef-2024/train_audio/'\nbirds = os.listdir(train_path)\nprint(f'number of bird species: {len(birds)}')\n\naudio_count = 0\nfor i in tqdm(birds):\n    audios = os.listdir(train_path+i)\n    audio_count += len(audios)\nprint(f'Total audio files: {audio_count}')","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:50:24.720563Z","iopub.execute_input":"2024-04-06T13:50:24.720936Z","iopub.status.idle":"2024-04-06T13:50:24.819528Z","shell.execute_reply.started":"2024-04-06T13:50:24.720909Z","shell.execute_reply":"2024-04-06T13:50:24.818450Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta = pd.read_csv('/kaggle/input/birdclef-2024/train_metadata.csv')\nmeta.shape","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:45:28.321211Z","iopub.execute_input":"2024-04-06T13:45:28.321632Z","iopub.status.idle":"2024-04-06T13:45:28.447656Z","shell.execute_reply.started":"2024-04-06T13:45:28.321598Z","shell.execute_reply":"2024-04-06T13:45:28.446632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta = meta.drop(columns = ['secondary_labels', 'type', 'longitude', 'latitude', 'scientific_name', 'common_name', 'license', 'url'])","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:45:30.466253Z","iopub.execute_input":"2024-04-06T13:45:30.466672Z","iopub.status.idle":"2024-04-06T13:45:30.478182Z","shell.execute_reply.started":"2024-04-06T13:45:30.466639Z","shell.execute_reply":"2024-04-06T13:45:30.477048Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"label_encoder = LabelEncoder()\nmeta['primary_label'] = label_encoder.fit_transform(meta['primary_label'])","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:45:32.364959Z","iopub.execute_input":"2024-04-06T13:45:32.365769Z","iopub.status.idle":"2024-04-06T13:45:32.376049Z","shell.execute_reply.started":"2024-04-06T13:45:32.365736Z","shell.execute_reply":"2024-04-06T13:45:32.375147Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta.head(30)","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:57:13.939808Z","iopub.execute_input":"2024-04-06T13:57:13.940224Z","iopub.status.idle":"2024-04-06T13:57:13.957117Z","shell.execute_reply.started":"2024-04-06T13:57:13.940189Z","shell.execute_reply":"2024-04-06T13:57:13.955943Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Loading and croping audio files","metadata":{}},{"cell_type":"code","source":"X, Y = [], []\n\ndef process_audio(row):\n    sr = 32000\n    audio_file = train_path + row[3]\n    y, _ = librosa.load(audio_file, sr=None)\n    total_duration = len(y) / sr\n    start_idx = int((total_duration / 2 - 2.5) * sr)\n    middle_5_seconds = y[start_idx:start_idx + 5 * sr]\n    return middle_5_seconds, row[0]\n\nresults = Parallel(n_jobs=-1)(delayed(process_audio)(row) for row in tqdm(meta.values[0:32]))","metadata":{"execution":{"iopub.status.busy":"2024-04-06T14:00:29.264259Z","iopub.execute_input":"2024-04-06T14:00:29.264675Z","iopub.status.idle":"2024-04-06T14:00:33.052502Z","shell.execute_reply.started":"2024-04-06T14:00:29.264643Z","shell.execute_reply":"2024-04-06T14:00:33.051361Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x, y = [], []\n\nfor i in results:\n    if len(i[0])==32000*5:\n        x.append(i[0])\n        y.append(i[1])\n    \nx = np.asarray(x)\ny = np.asarray(y)","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:49:44.264565Z","iopub.execute_input":"2024-04-06T13:49:44.264955Z","iopub.status.idle":"2024-04-06T13:49:44.275467Z","shell.execute_reply.started":"2024-04-06T13:49:44.264924Z","shell.execute_reply":"2024-04-06T13:49:44.274594Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(x.shape, y.shape)","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:49:45.893690Z","iopub.execute_input":"2024-04-06T13:49:45.894346Z","iopub.status.idle":"2024-04-06T13:49:45.899962Z","shell.execute_reply.started":"2024-04-06T13:49:45.894305Z","shell.execute_reply":"2024-04-06T13:49:45.898758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Generating Spectrograms","metadata":{}},{"cell_type":"code","source":"for i in range(0,10):\n    sr = 32000\n    S = librosa.feature.melspectrogram(y=x[i], sr=sr)\n\n    S_db = librosa.power_to_db(S, ref=np.max)\n\n    # Display the Mel spectrogram\n    plt.figure(figsize=(5, 4))\n    librosa.display.specshow(S_db, sr=sr, x_axis='time', y_axis='mel')\n    plt.title('Mel spectrogram')\n    plt.tight_layout()\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2024-04-06T13:51:51.393890Z","iopub.execute_input":"2024-04-06T13:51:51.394283Z","iopub.status.idle":"2024-04-06T13:51:55.914068Z","shell.execute_reply.started":"2024-04-06T13:51:51.394251Z","shell.execute_reply":"2024-04-06T13:51:55.912783Z"},"trusted":true},"execution_count":null,"outputs":[]}]}