From fc28354db827ae6745a3c41aa48243d1c55f49dd Mon Sep 17 00:00:00 2001 From: CroneKorkN Date: Sun, 1 Jun 2025 13:19:38 +0200 Subject: [PATCH] wip --- process | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/process b/process index 22d3832..1ba7786 100755 --- a/process +++ b/process @@ -13,17 +13,12 @@ RECORDINGS_DIR = "recordings" PROCESSED_RECORDINGS_DIR = "recordings/processed" DETECTIONS_DIR = "events" -DETECT_FREQUENCY = 211 -DETECT_FREQUENCY_TOLERANCE = 2 -DETECT_FREQUENCY_FROM = DETECT_FREQUENCY - DETECT_FREQUENCY_TOLERANCE -DETECT_FREQUENCY_TO = DETECT_FREQUENCY + DETECT_FREQUENCY_TOLERANCE -ADJACENCY_FACTOR = 2 - -CLIP_SECONDS = 3 -THRESHOLD_BASE = 0.1 -OCTAVE_FACTOR = 0.1 -CLIP_PADDING_BEFORE = 1 -CLIP_PADDING_AFTER = 6 +DETECT_FREQUENCY = 211 # Hz +DETECT_FREQUENCY_TOLERANCE = 2 # Hz +DETECT_FREQUENCY_FROM = DETECT_FREQUENCY - DETECT_FREQUENCY_TOLERANCE # Hz +DETECT_FREQUENCY_TO = DETECT_FREQUENCY + DETECT_FREQUENCY_TOLERANCE # Hz +ADJACENCY_FACTOR = 2 # area to look for noise around the target frequency +AMPLITUDE_THRESHOLD = 200 # rDB def process_recording(filename): @@ -41,6 +36,7 @@ def process_recording(filename): # iterate blocks for num, block in enumerate(soundfile.blocks(path, blocksize=blocksize, overlap=int(blocksize*0.8))): + block_date = recording_date + datetime.timedelta(seconds=num * CLIP_SECONDS) complex_amplitudes = rfft(block) amplitudes = np.abs(complex_amplitudes) labels = rfftfreq(len(block), d=1/samplerate) @@ -54,10 +50,13 @@ def process_recording(filename): max_amplitude_index = np.argmax(adjacent_amplitudes) max_freq = adjacent_labels[max_amplitude_index] - if DETECT_FREQUENCY_FROM <= max_freq <= DETECT_FREQUENCY_TO: - print(f'{recording_date + datetime.timedelta(seconds=num * CLIP_SECONDS)}: {max_amplitude:.2f}rDB @ {max_freq:.2f}Hz') - breakpoint() + # check for detection criteria + max_freq_detected = DETECT_FREQUENCY_FROM <= max_freq <= DETECT_FREQUENCY_TO + amplitude_detected = max_amplitude > AMPLITUDE_THRESHOLD + # conclude detection + if max_freq_detected and amplitude_detected: + print(f'{block_date}: {max_amplitude:.2f}rDB @ {max_freq:.2f}Hz')