This commit is contained in:
CroneKorkN 2025-06-01 13:55:21 +02:00
parent 67646a689d
commit d6b2fbd069
Signed by: cronekorkn
SSH key fingerprint: SHA256:v0410ZKfuO1QHdgKBsdQNF64xmTxOF8osF1LIqwTcVw

View file

@ -43,9 +43,11 @@ def process_recording(filename):
# iterate blocks # iterate blocks
for num, block in enumerate(soundfile.blocks(path, blocksize=block_samples, overlap=int(block_samples*0.8))): for num, block in enumerate(soundfile.blocks(path, blocksize=block_samples, overlap=int(block_samples*0.8))):
block_date = recording_date + datetime.timedelta(seconds=num * BLOCK_SECONDS) block_date = recording_date + datetime.timedelta(seconds=num * BLOCK_SECONDS)
complex_amplitudes = rfft(block)
amplitudes = np.abs(complex_amplitudes)
labels = rfftfreq(len(block), d=1/samplerate) labels = rfftfreq(len(block), d=1/samplerate)
complex_amplitudes = rfft(block)
absolute_amplitudes = np.abs(complex_amplitudes)
median_amplitude = np.median(absolute_amplitudes)
amplitudes = absolute_amplitudes / median_amplitude
# get amplitudes only between 100 and 1000 Hz # get amplitudes only between 100 and 1000 Hz
adjacent_amplitudes = amplitudes[(labels >= DETECT_FREQUENCY_FROM/ADJACENCY_FACTOR) & (labels <= DETECT_FREQUENCY_TO*ADJACENCY_FACTOR)] adjacent_amplitudes = amplitudes[(labels >= DETECT_FREQUENCY_FROM/ADJACENCY_FACTOR) & (labels <= DETECT_FREQUENCY_TO*ADJACENCY_FACTOR)]
@ -77,12 +79,11 @@ def process_recording(filename):
last_detection_at = block_date last_detection_at = block_date
print("🔊") print("🔊")
print(f'{block_date}: {max_amplitude:.1f}rDB @ {max_freq:.1f}Hz ({noise:.3f}rDB noise)') print(f'{block_date}: {max_amplitude:.1f}rDB @ {max_freq:.1f}Hz (noise {noise:.3f}rDB, median {median_amplitude:.3f}rDB)')
else: else:
is_detecting = False is_detecting = False
def main(): def main():
os.makedirs(RECORDINGS_DIR, exist_ok=True) os.makedirs(RECORDINGS_DIR, exist_ok=True)
os.makedirs(PROCESSED_RECORDINGS_DIR, exist_ok=True) os.makedirs(PROCESSED_RECORDINGS_DIR, exist_ok=True)