diff --git a/process b/process index e6aa8a7..50a2d3f 100755 --- a/process +++ b/process @@ -41,7 +41,10 @@ def process_recording(filename): current_event = None # read blocks of audio data with overlap from sound variable - for block_num, block in enumerate(soundfile.blocks(path, blocksize=samples_per_block, overlap=overlapping_samples)): + block_num = 0 + for block in soundfile.blocks(path, blocksize=samples_per_block, overlap=overlapping_samples): + block_num += 1 + # get block date and calculate FFT block_date = recording_date + datetime.timedelta(seconds=block_num * (samples_per_block - overlapping_samples) / samplerate) labels = rfftfreq(len(block), d=1/samplerate) @@ -49,15 +52,16 @@ def process_recording(filename): amplitudes = np.abs(complex_amplitudes) # get amplitudes only between 100 and 1000 Hz - adjacent_amplitudes = amplitudes[(labels >= DETECT_FREQUENCY_FROM/ADJACENCY_FACTOR) & (labels <= DETECT_FREQUENCY_TO*ADJACENCY_FACTOR)] - adjacent_labels = labels[(labels >= DETECT_FREQUENCY_FROM/ADJACENCY_FACTOR) & (labels <= DETECT_FREQUENCY_TO*ADJACENCY_FACTOR)] + search_amplitudes = amplitudes[(labels >= DETECT_FREQUENCY_FROM/ADJACENCY_FACTOR) & (labels <= DETECT_FREQUENCY_TO*ADJACENCY_FACTOR)] + search_labels = labels[(labels >= DETECT_FREQUENCY_FROM/ADJACENCY_FACTOR) & (labels <= DETECT_FREQUENCY_TO*ADJACENCY_FACTOR)] # get the frequency with the highest amplitude - max_amplitude = max(adjacent_amplitudes) - max_amplitude_index = np.argmax(adjacent_amplitudes) - max_freq = adjacent_labels[max_amplitude_index] + max_amplitude = max(search_amplitudes) + max_amplitude_index = np.argmax(search_amplitudes) + max_freq = search_labels[max_amplitude_index] - # get the average amplitude of the adjacent frequencies + # get the average amplitude of the search frequencies + adjacent_amplitudes = search_amplitudes[(search_labels < DETECT_FREQUENCY_FROM) | (search_labels > DETECT_FREQUENCY_TO)] noise = np.mean(adjacent_amplitudes)/max_amplitude # check for detection criteria @@ -97,7 +101,7 @@ def process_recording(filename): write_plot() current_event = None - block_num += DETECTION_DISTANCE // BLOCK_SECONDS + block_num += (DETECTION_DISTANCE // BLOCK_SECONDS) * samples_per_block block_num += 1 @@ -114,7 +118,7 @@ def main(): os.makedirs(RECORDINGS_DIR, exist_ok=True) os.makedirs(PROCESSED_RECORDINGS_DIR, exist_ok=True) - for filename in os.listdir(RECORDINGS_DIR): + for filename in sorted(os.listdir(RECORDINGS_DIR)): if filename.endswith(".flac"): process_recording(filename)