run_analysis() created
This commit is contained in:
@@ -15,6 +15,7 @@ import threading
|
|||||||
import os
|
import os
|
||||||
import gzip
|
import gzip
|
||||||
|
|
||||||
|
from utils.helpers import get_settings, Detection
|
||||||
from utils.notifications import sendAppriseNotifications
|
from utils.notifications import sendAppriseNotifications
|
||||||
from utils.parse_settings import config_to_settings
|
from utils.parse_settings import config_to_settings
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ DB_PATH = userDir + '/BirdNET-Pi/scripts/birds.db'
|
|||||||
|
|
||||||
INTERPRETER, INCLUDE_LIST, EXCLUDE_LIST = (None, None, None)
|
INTERPRETER, INCLUDE_LIST, EXCLUDE_LIST = (None, None, None)
|
||||||
PREDICTED_SPECIES_LIST = []
|
PREDICTED_SPECIES_LIST = []
|
||||||
|
model, priv_thresh, sf_thresh = (None, None, None)
|
||||||
|
|
||||||
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||||
@@ -621,6 +623,46 @@ def handle_client(conn, addr):
|
|||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def load_global_model():
|
||||||
|
global INTERPRETER
|
||||||
|
global model, priv_thresh, sf_thresh
|
||||||
|
conf = get_settings()
|
||||||
|
model = conf['MODEL']
|
||||||
|
priv_thresh = conf.getfloat('PRIVACY_THRESHOLD')
|
||||||
|
sf_thresh = conf.getfloat('SF_THRESH')
|
||||||
|
INTERPRETER = loadModel()
|
||||||
|
|
||||||
|
|
||||||
|
def run_analysis(file):
|
||||||
|
global INCLUDE_LIST, EXCLUDE_LIST
|
||||||
|
INCLUDE_LIST = loadCustomSpeciesList(os.path.expanduser("~/BirdNET-Pi/include_species_list.txt"))
|
||||||
|
EXCLUDE_LIST = loadCustomSpeciesList(os.path.expanduser("~/BirdNET-Pi/exclude_species_list.txt"))
|
||||||
|
|
||||||
|
conf = get_settings()
|
||||||
|
|
||||||
|
# Read audio data & handle errors
|
||||||
|
try:
|
||||||
|
audio_data = readAudioData(file.file_name, conf.getfloat('OVERLAP'))
|
||||||
|
except (NameError, TypeError) as e:
|
||||||
|
print(f"Error with the following info: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
|
# Process audio data and get detections
|
||||||
|
raw_detections = analyzeAudioData(audio_data, conf.getfloat('LATITUDE'), conf.getfloat('LONGITUDE'), file.week,
|
||||||
|
conf.getfloat('SENSITIVITY'), conf.getfloat('OVERLAP'))
|
||||||
|
confident_detections = []
|
||||||
|
for time_slot, entries in raw_detections.items():
|
||||||
|
print(f'{time_slot}-{entries[0]}')
|
||||||
|
for entry in entries:
|
||||||
|
if entry[1] >= conf.getfloat('CONFIDENCE') and ((entry[0] in INCLUDE_LIST or len(INCLUDE_LIST) == 0)
|
||||||
|
and (entry[0] not in EXCLUDE_LIST or len(EXCLUDE_LIST) == 0)
|
||||||
|
and (entry[0] in PREDICTED_SPECIES_LIST
|
||||||
|
or len(PREDICTED_SPECIES_LIST) == 0)):
|
||||||
|
d = Detection(time_slot.split(';')[0], time_slot.split(';')[1], entry[0], entry[1])
|
||||||
|
confident_detections.append(d)
|
||||||
|
return confident_detections
|
||||||
|
|
||||||
|
|
||||||
def start():
|
def start():
|
||||||
bind_port()
|
bind_port()
|
||||||
# Load model
|
# Load model
|
||||||
|
|||||||
Reference in New Issue
Block a user