{"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"},{"sourceId":15853,"sourceType":"modelInstanceVersion","isSourceIdPinned":true,"modelInstanceId":2739}],"dockerImageVersionId":30698,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport librosa\nimport tensorflow_hub as hub\n","metadata":{"execution":{"iopub.status.busy":"2024-05-10T03:10:09.031755Z","iopub.execute_input":"2024-05-10T03:10:09.032977Z","iopub.status.idle":"2024-05-10T03:10:09.037377Z","shell.execute_reply.started":"2024-05-10T03:10:09.032940Z","shell.execute_reply":"2024-05-10T03:10:09.036597Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = hub.load('https://www.kaggle.com/models/google/bird-vocalization-classifier/TensorFlow2/bird-vocalization-classifier/8')","metadata":{"execution":{"iopub.status.busy":"2024-05-10T03:10:09.038821Z","iopub.execute_input":"2024-05-10T03:10:09.039609Z","iopub.status.idle":"2024-05-10T03:10:14.609101Z","shell.execute_reply.started":"2024-05-10T03:10:09.039580Z","shell.execute_reply":"2024-05-10T03:10:14.608188Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_audio_dir = '../input/birdclef-2024/test_soundscapes/'\nfile_list = [f for f in sorted(os.listdir(test_audio_dir))]\nfile_list = [file.split('.')[0] for file in file_list if file.endswith('.ogg')]\n","metadata":{"execution":{"iopub.status.busy":"2024-05-10T03:10:14.613270Z","iopub.execute_input":"2024-05-10T03:10:14.613592Z","iopub.status.idle":"2024-05-10T03:10:14.618773Z","shell.execute_reply.started":"2024-05-10T03:10:14.613565Z","shell.execute_reply":"2024-05-10T03:10:14.617776Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred = {'row_id': []}\ntrain_audio_dir = '../input/birdclef-2024/train_audio/'\nspecies_list = sorted(os.listdir(train_audio_dir))\nfor species_code in species_list:\n    pred[species_code] = []\n","metadata":{"execution":{"iopub.status.busy":"2024-05-10T03:10:14.621410Z","iopub.execute_input":"2024-05-10T03:10:14.621979Z","iopub.status.idle":"2024-05-10T03:10:14.627994Z","shell.execute_reply.started":"2024-05-10T03:10:14.621941Z","shell.execute_reply":"2024-05-10T03:10:14.627141Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred = {'row_id': []}\ntrain_audio_dir = '../input/birdclef-2024/train_audio/'\nspecies_list = sorted(os.listdir(train_audio_dir))\nfor species_code in species_list:\n    pred[species_code] = []","metadata":{"execution":{"iopub.status.busy":"2024-05-10T03:10:14.629405Z","iopub.execute_input":"2024-05-10T03:10:14.629757Z","iopub.status.idle":"2024-05-10T03:10:14.636819Z","shell.execute_reply.started":"2024-05-10T03:10:14.629725Z","shell.execute_reply":"2024-05-10T03:10:14.635974Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for afile in file_list:\n    path = test_audio_dir + afile + '.ogg'\n    sig, rate = librosa.load(path, sr=32000)\n    total_duration = librosa.get_duration(sig, sr=rate)\n    num_chunks = int(np.floor(total_duration / 5))\n    \n    for i in range(num_chunks):\n        start = i * 5 * rate\n        end = start + 5 * rate\n        audio_chunk = sig[start:end]\n        \n        if len(audio_chunk) < 5 * rate:\n            continue  # Skip this chunk if it's shorter than 5 seconds\n\n        # Run the model\n        logits, embeddings = model.infer_tf(audio_chunk[np.newaxis, :])\n        \n        chunk_end_time = (i + 1) * 5\n        row_id = afile + '_' + str(chunk_end_time)\n        pred['row_id'].append(row_id)\n        \n        for idx, bird in enumerate(species_list):\n            score = logits[0, idx]\n            pred[bird].append(score)","metadata":{"execution":{"iopub.status.busy":"2024-05-10T03:10:14.638042Z","iopub.execute_input":"2024-05-10T03:10:14.638892Z","iopub.status.idle":"2024-05-10T03:10:14.646392Z","shell.execute_reply.started":"2024-05-10T03:10:14.638863Z","shell.execute_reply":"2024-05-10T03:10:14.645352Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"results = pd.DataFrame(pred, columns=['row_id'] + species_list)\nresults.to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2024-05-10T03:10:14.647904Z","iopub.execute_input":"2024-05-10T03:10:14.648344Z","iopub.status.idle":"2024-05-10T03:10:14.669820Z","shell.execute_reply.started":"2024-05-10T03:10:14.648309Z","shell.execute_reply":"2024-05-10T03:10:14.669062Z"},"trusted":true},"execution_count":null,"outputs":[]}]}