Spaces:
Runtime error
Runtime error
| ################# | |
| # Misc settings # | |
| ################# | |
| # Random seed for gaussian noise | |
| RANDOM_SEED = 42 | |
| ########################## | |
| # Model paths and config # | |
| ########################## | |
| # These BirdNET models are necessary also for detecting bats as we use their embeddings and classify | |
| # them to identify the bats. | |
| # MODEL_PATH = 'checkpoints/V2.4/BirdNET_GLOBAL_6K_V2.4_Model' # This will load the protobuf model | |
| MODEL_PATH = 'checkpoints/V2.4/BirdNET_GLOBAL_6K_V2.4_Model_FP32.tflite' | |
| MDATA_MODEL_PATH = 'checkpoints/V2.4/BirdNET_GLOBAL_6K_V2.4_MData_Model_FP16.tflite' | |
| LABELS_FILE = 'checkpoints/V2.4/BirdNET_GLOBAL_6K_V2.4_Labels.txt' | |
| TRANSLATED_LABELS_PATH = 'labels/V2.4' | |
| TRANSLATED_BAT_LABELS_PATH = 'labels/bats/' | |
| # Path to custom trained classifier | |
| # If None, no custom classifier will be used | |
| # Make sure to set the LABELS_FILE above accordingly | |
| CUSTOM_CLASSIFIER = None | |
| ################## | |
| # Audio settings # | |
| ################## | |
| # BirdNET uses a sample rate of 48kHz, so the model input size is | |
| # (batch size, 48000 kHz * 3 seconds) = (1, 144000) | |
| # Recordings will be resampled automatically. | |
| # For bats we use: 144000 for 1 sec. | |
| # Note that only SIG_LENGTH * SAMPLING_RATE = 144000 combinations will work, | |
| # values possible e.g. 144000 240000 360000 check your classifier frequency! | |
| SAMPLE_RATE: int = 256000 | |
| # We're using 1-second chunks | |
| SIG_LENGTH: float = 144000 / SAMPLE_RATE | |
| # Define overlap between consecutive chunks < SIG_LENGTH; 0 = no overlap | |
| SIG_OVERLAP: float = SIG_LENGTH / 4.0 | |
| # Define minimum length of audio chunk for prediction, | |
| # chunks shorter than SIG_LENGTH seconds will be padded with zeros | |
| SIG_MINLEN: float = SIG_LENGTH / 3.0 | |
| ##################### | |
| # Metadata settings # | |
| ##################### | |
| # These settings are currently not in use for bat detection | |
| LATITUDE = -1 | |
| LONGITUDE = -1 | |
| WEEK = -1 | |
| LOCATION_FILTER_THRESHOLD = 0.03 | |
| ###################### | |
| # Inference settings # | |
| ###################### | |
| # If None or empty file, no custom species list will be used | |
| # Note: Entries in this list have to match entries from the LABELS_FILE | |
| # We use the 2021 eBird taxonomy for species names (Clements list) | |
| CODES_FILE = 'eBird_taxonomy_codes_2021E.json' | |
| SPECIES_LIST_FILE = 'example/species_list.txt' | |
| # File input path and output path for selection tables | |
| INPUT_PATH: str = '' | |
| OUTPUT_PATH: str = '' | |
| # Used for bats - the files here are supposed to be analyzed by default setting | |
| INPUT_PATH_SAMPLES: str = 'put-your-files-here/' | |
| OUTPUT_PATH_SAMPLES: str = 'put-your-files-here/results/' | |
| BAT_CLASSIFIER_LOCATION: str = 'checkpoints/bats/v1.0' | |
| ALLOWED_FILETYPES = ['wav', 'flac', 'mp3', 'ogg', 'm4a'] | |
| # Number of threads to use for inference. | |
| # Can be as high as number of CPUs in your system | |
| CPU_THREADS: int = 2 | |
| TFLITE_THREADS: int = 2 | |
| # False will output logits, True will convert to sigmoid activations | |
| APPLY_SIGMOID: bool = True | |
| SIGMOID_SENSITIVITY: float = 1.0 | |
| # Minimum confidence score to include in selection table | |
| # (be aware: if APPLY_SIGMOID = False, this no longer represents | |
| # probabilities and needs to be adjusted) | |
| MIN_CONFIDENCE: float = 0.6 | |
| # Number of samples to process at the same time. Higher values can increase | |
| # processing speed, but will also increase memory usage. | |
| # Might only be useful for GPU inference. | |
| BATCH_SIZE: int = 1 | |
| # Specifies the output format. 'table' denotes a Raven selection table, | |
| # 'audacity' denotes a TXT file with the same format as Audacity timeline labels | |
| # 'csv' denotes a CSV file with start, end, species and confidence. | |
| RESULT_TYPE = 'csv' | |
| ##################### | |
| # Training settings # | |
| ##################### | |
| # Training data path | |
| TRAIN_DATA_PATH = 'train_data/' | |
| # Number of epochs to train for | |
| TRAIN_EPOCHS: int = 100 | |
| # Batch size for training | |
| TRAIN_BATCH_SIZE: int = 32 | |
| # Learning rate for training | |
| TRAIN_LEARNING_RATE: float = 0.01 | |
| # Number of hidden units in custom classifier | |
| # If >0, a two-layer classifier will be trained | |
| TRAIN_HIDDEN_UNITS: int = 0 | |
| ##################### | |
| # Misc runtime vars # | |
| ##################### | |
| CODES = {} | |
| LABELS: list[str] = [] | |
| TRANSLATED_LABELS: list[str] = [] | |
| SPECIES_LIST: list[str] = [] | |
| ERROR_LOG_FILE: str = 'error_log.txt' | |
| FILE_LIST = [] | |
| FILE_STORAGE_PATH = '' | |
| ###################### | |
| # Get and set config # | |
| ###################### | |
| def get_config(): | |
| return { | |
| 'RANDOM_SEED': RANDOM_SEED, | |
| 'MODEL_PATH': MODEL_PATH, | |
| 'MDATA_MODEL_PATH': MDATA_MODEL_PATH, | |
| 'LABELS_FILE': LABELS_FILE, | |
| 'CUSTOM_CLASSIFIER': CUSTOM_CLASSIFIER, | |
| 'SAMPLE_RATE': SAMPLE_RATE, | |
| 'SIG_LENGTH': SIG_LENGTH, | |
| 'SIG_OVERLAP': SIG_OVERLAP, | |
| 'SIG_MINLEN': SIG_MINLEN, | |
| 'LATITUDE': LATITUDE, | |
| 'LONGITUDE': LONGITUDE, | |
| 'WEEK': WEEK, | |
| 'LOCATION_FILTER_THRESHOLD': LOCATION_FILTER_THRESHOLD, | |
| 'CODES_FILE': CODES_FILE, | |
| 'SPECIES_LIST_FILE': SPECIES_LIST_FILE, | |
| 'INPUT_PATH': INPUT_PATH, | |
| 'OUTPUT_PATH': OUTPUT_PATH, | |
| 'CPU_THREADS': CPU_THREADS, | |
| 'TFLITE_THREADS': TFLITE_THREADS, | |
| 'APPLY_SIGMOID': APPLY_SIGMOID, | |
| 'SIGMOID_SENSITIVITY': SIGMOID_SENSITIVITY, | |
| 'MIN_CONFIDENCE': MIN_CONFIDENCE, | |
| 'BATCH_SIZE': BATCH_SIZE, | |
| 'RESULT_TYPE': RESULT_TYPE, | |
| 'TRAIN_DATA_PATH': TRAIN_DATA_PATH, | |
| 'TRAIN_EPOCHS': TRAIN_EPOCHS, | |
| 'TRAIN_BATCH_SIZE': TRAIN_BATCH_SIZE, | |
| 'TRAIN_LEARNING_RATE': TRAIN_LEARNING_RATE, | |
| 'TRAIN_HIDDEN_UNITS': TRAIN_HIDDEN_UNITS, | |
| 'CODES': CODES, | |
| 'LABELS': LABELS, | |
| 'TRANSLATED_LABELS': TRANSLATED_LABELS, | |
| 'SPECIES_LIST': SPECIES_LIST, | |
| 'ERROR_LOG_FILE': ERROR_LOG_FILE, | |
| 'INPUT_PATH_SAMPLES': INPUT_PATH_SAMPLES, | |
| 'OUTPUT_PATH_SAMPLES': OUTPUT_PATH_SAMPLES, | |
| 'BAT_CLASSIFIER_LOCATION': BAT_CLASSIFIER_LOCATION, | |
| 'TRANSLATED_BAT_LABELS_PATH': TRANSLATED_BAT_LABELS_PATH | |
| } | |
| def set_config(c): | |
| global RANDOM_SEED | |
| global MODEL_PATH | |
| global MDATA_MODEL_PATH | |
| global LABELS_FILE | |
| global CUSTOM_CLASSIFIER | |
| global SAMPLE_RATE | |
| global SIG_LENGTH | |
| global SIG_OVERLAP | |
| global SIG_MINLEN | |
| global LATITUDE | |
| global LONGITUDE | |
| global WEEK | |
| global LOCATION_FILTER_THRESHOLD | |
| global CODES_FILE | |
| global SPECIES_LIST_FILE | |
| global INPUT_PATH | |
| global OUTPUT_PATH | |
| global CPU_THREADS | |
| global TFLITE_THREADS | |
| global APPLY_SIGMOID | |
| global SIGMOID_SENSITIVITY | |
| global MIN_CONFIDENCE | |
| global BATCH_SIZE | |
| global RESULT_TYPE | |
| global TRAIN_DATA_PATH | |
| global TRAIN_EPOCHS | |
| global TRAIN_BATCH_SIZE | |
| global TRAIN_LEARNING_RATE | |
| global TRAIN_HIDDEN_UNITS | |
| global CODES | |
| global LABELS | |
| global TRANSLATED_LABELS | |
| global SPECIES_LIST | |
| global ERROR_LOG_FILE | |
| global INPUT_PATH_SAMPLES | |
| global OUTPUT_PATH_SAMPLES | |
| global BAT_CLASSIFIER_LOCATION | |
| global TRANSLATED_BAT_LABELS_PATH | |
| RANDOM_SEED = c['RANDOM_SEED'] | |
| MODEL_PATH = c['MODEL_PATH'] | |
| MDATA_MODEL_PATH = c['MDATA_MODEL_PATH'] | |
| LABELS_FILE = c['LABELS_FILE'] | |
| CUSTOM_CLASSIFIER = c['CUSTOM_CLASSIFIER'] | |
| SAMPLE_RATE = c['SAMPLE_RATE'] | |
| SIG_LENGTH = c['SIG_LENGTH'] | |
| SIG_OVERLAP = c['SIG_OVERLAP'] | |
| SIG_MINLEN = c['SIG_MINLEN'] | |
| LATITUDE = c['LATITUDE'] | |
| LONGITUDE = c['LONGITUDE'] | |
| WEEK = c['WEEK'] | |
| LOCATION_FILTER_THRESHOLD = c['LOCATION_FILTER_THRESHOLD'] | |
| CODES_FILE = c['CODES_FILE'] | |
| SPECIES_LIST_FILE = c['SPECIES_LIST_FILE'] | |
| INPUT_PATH = c['INPUT_PATH'] | |
| OUTPUT_PATH = c['OUTPUT_PATH'] | |
| CPU_THREADS = c['CPU_THREADS'] | |
| TFLITE_THREADS = c['TFLITE_THREADS'] | |
| APPLY_SIGMOID = c['APPLY_SIGMOID'] | |
| SIGMOID_SENSITIVITY = c['SIGMOID_SENSITIVITY'] | |
| MIN_CONFIDENCE = c['MIN_CONFIDENCE'] | |
| BATCH_SIZE = c['BATCH_SIZE'] | |
| RESULT_TYPE = c['RESULT_TYPE'] | |
| TRAIN_DATA_PATH = c['TRAIN_DATA_PATH'] | |
| TRAIN_EPOCHS = c['TRAIN_EPOCHS'] | |
| TRAIN_BATCH_SIZE = c['TRAIN_BATCH_SIZE'] | |
| TRAIN_LEARNING_RATE = c['TRAIN_LEARNING_RATE'] | |
| TRAIN_HIDDEN_UNITS = c['TRAIN_HIDDEN_UNITS'] | |
| CODES = c['CODES'] | |
| LABELS = c['LABELS'] | |
| TRANSLATED_LABELS = c['TRANSLATED_LABELS'] | |
| SPECIES_LIST = c['SPECIES_LIST'] | |
| ERROR_LOG_FILE = c['ERROR_LOG_FILE'] | |
| INPUT_PATH_SAMPLES = c['INPUT_PATH_SAMPLES'] | |
| OUTPUT_PATH_SAMPLES = c['OUTPUT_PATH_SAMPLES'] | |
| BAT_CLASSIFIER_LOCATION = c['BAT_CLASSIFIER_LOCATION'] | |
| TRANSLATED_BAT_LABELS_PATH = c['TRANSLATED_BAT_LABELS_PATH'] | |