wip
This commit is contained in:
parent
a363d12c61
commit
fc28354db8
1 changed files with 13 additions and 14 deletions
27
process
27
process
|
@ -13,17 +13,12 @@ RECORDINGS_DIR = "recordings"
|
||||||
PROCESSED_RECORDINGS_DIR = "recordings/processed"
|
PROCESSED_RECORDINGS_DIR = "recordings/processed"
|
||||||
DETECTIONS_DIR = "events"
|
DETECTIONS_DIR = "events"
|
||||||
|
|
||||||
DETECT_FREQUENCY = 211
|
DETECT_FREQUENCY = 211 # Hz
|
||||||
DETECT_FREQUENCY_TOLERANCE = 2
|
DETECT_FREQUENCY_TOLERANCE = 2 # Hz
|
||||||
DETECT_FREQUENCY_FROM = DETECT_FREQUENCY - DETECT_FREQUENCY_TOLERANCE
|
DETECT_FREQUENCY_FROM = DETECT_FREQUENCY - DETECT_FREQUENCY_TOLERANCE # Hz
|
||||||
DETECT_FREQUENCY_TO = DETECT_FREQUENCY + DETECT_FREQUENCY_TOLERANCE
|
DETECT_FREQUENCY_TO = DETECT_FREQUENCY + DETECT_FREQUENCY_TOLERANCE # Hz
|
||||||
ADJACENCY_FACTOR = 2
|
ADJACENCY_FACTOR = 2 # area to look for noise around the target frequency
|
||||||
|
AMPLITUDE_THRESHOLD = 200 # rDB
|
||||||
CLIP_SECONDS = 3
|
|
||||||
THRESHOLD_BASE = 0.1
|
|
||||||
OCTAVE_FACTOR = 0.1
|
|
||||||
CLIP_PADDING_BEFORE = 1
|
|
||||||
CLIP_PADDING_AFTER = 6
|
|
||||||
|
|
||||||
|
|
||||||
def process_recording(filename):
|
def process_recording(filename):
|
||||||
|
@ -41,6 +36,7 @@ def process_recording(filename):
|
||||||
|
|
||||||
# iterate blocks
|
# iterate blocks
|
||||||
for num, block in enumerate(soundfile.blocks(path, blocksize=blocksize, overlap=int(blocksize*0.8))):
|
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)
|
complex_amplitudes = rfft(block)
|
||||||
amplitudes = np.abs(complex_amplitudes)
|
amplitudes = np.abs(complex_amplitudes)
|
||||||
labels = rfftfreq(len(block), d=1/samplerate)
|
labels = rfftfreq(len(block), d=1/samplerate)
|
||||||
|
@ -54,10 +50,13 @@ def process_recording(filename):
|
||||||
max_amplitude_index = np.argmax(adjacent_amplitudes)
|
max_amplitude_index = np.argmax(adjacent_amplitudes)
|
||||||
max_freq = adjacent_labels[max_amplitude_index]
|
max_freq = adjacent_labels[max_amplitude_index]
|
||||||
|
|
||||||
if DETECT_FREQUENCY_FROM <= max_freq <= DETECT_FREQUENCY_TO:
|
# check for detection criteria
|
||||||
print(f'{recording_date + datetime.timedelta(seconds=num * CLIP_SECONDS)}: {max_amplitude:.2f}rDB @ {max_freq:.2f}Hz')
|
max_freq_detected = DETECT_FREQUENCY_FROM <= max_freq <= DETECT_FREQUENCY_TO
|
||||||
breakpoint()
|
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')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue