{"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 ../input/torchlibrosa/torchlibrosa-0.0.5-py3-none-any.whl > /dev/null","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import cv2\nimport audioread\nimport logging\nimport gc\nimport os\nimport sys\nsys.path.append('../input/pytorch-image-models/pytorch-image-models-master')\nimport random\nimport time\nimport warnings\n\nimport librosa\nimport numpy as np\nimport pandas as pd\nimport soundfile as sf\nimport timm\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.utils.data as torchdata\n\nfrom contextlib import contextmanager\nfrom joblib import Parallel, delayed\nfrom pathlib import Path\nfrom typing import Optional\nfrom sklearn.model_selection import StratifiedKFold, GroupKFold\n\nfrom albumentations.core.transforms_interface import ImageOnlyTransform\nfrom torchlibrosa.stft import LogmelFilterBank, Spectrogram\nfrom torchlibrosa.augmentation import SpecAugmentation\nfrom tqdm import tqdm\n\nimport albumentations as A\nimport albumentations.pytorch.transforms as T\n\nimport matplotlib.pyplot as plt","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"SR = 32000\nUSE_SEC = 30 # 60 # 90 # 60\n\ndef Audio_to_Array(path):\n    y, sr = sf.read(path, always_2d=True)\n    y = np.mean(y, 1) # there is (X, 2) array\n    if len(y) > SR:\n        y = y[SR:-SR]\n\n    if len(y) > SR * USE_SEC:\n        y = y[:SR * USE_SEC]\n    return y\n\ndef save_(path):\n    save_path = \"train_np/\" + \"/\".join(path.split('/')[-2:])\n    np.save(save_path, Audio_to_Array(path))\n\n\nAUDIO_PATH = '../input/birdclef-2022/train_audio'\n\n\ntrain = pd.read_csv('../input/birdclef-2022/train_metadata.csv')\ntrain[\"file_path\"] = AUDIO_PATH + '/' + train['filename']\npaths = train[\"file_path\"].values","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"i = 3\nstep = int(len(paths)/4)\nstep\n# paths[step * i:step * (i+1)]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"NUM_WORKERS = 4\nCLASSES = sorted(os.listdir(AUDIO_PATH))\n\nfor dir_ in tqdm(CLASSES):\n    _ = os.makedirs('train_np/' + dir_, exist_ok=True)\n_ = Parallel(n_jobs=NUM_WORKERS)(delayed(save_)(AUDIO_PATH) for AUDIO_PATH in tqdm(paths[step * i:step * (i+1)]))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}