|
@@ -22,6 +22,7 @@ import mutagen.mp3
|
|
import requests
|
|
import requests
|
|
import dateutil
|
|
import dateutil
|
|
import sqlite3
|
|
import sqlite3
|
|
|
|
+import math
|
|
import time
|
|
import time
|
|
import sys
|
|
import sys
|
|
import os
|
|
import os
|
|
@@ -35,6 +36,10 @@ THRESHOLD = 10
|
|
SEGMENTS_TOLERANCE_RATE = 0.6
|
|
SEGMENTS_TOLERANCE_RATE = 0.6
|
|
FALL_TOLERANCE_SEGMENTS = 1
|
|
FALL_TOLERANCE_SEGMENTS = 1
|
|
|
|
|
|
|
|
+# THRESHOLD
|
|
|
|
+THRESHOLD_FIXED = 1
|
|
|
|
+THRESHOLD_AVERAGE = 2
|
|
|
|
+
|
|
# Modos de procesamiento de queue
|
|
# Modos de procesamiento de queue
|
|
# - QUEQUE_SINGLE: procesa solo un segmento a la vez
|
|
# - QUEQUE_SINGLE: procesa solo un segmento a la vez
|
|
# - QUEUE_THREAD: inicia un hilo para cada segmento
|
|
# - QUEUE_THREAD: inicia un hilo para cada segmento
|
|
@@ -61,7 +66,10 @@ dejavu = Dejavu({"database_type":"mem"})
|
|
device_id = config['device_id']
|
|
device_id = config['device_id']
|
|
device_path = os.path.join(base_path, device_id)
|
|
device_path = os.path.join(base_path, device_id)
|
|
recognizer = FilePerSecondRecognizer
|
|
recognizer = FilePerSecondRecognizer
|
|
|
|
+
|
|
|
|
+# settings
|
|
queue_mode = QUEUE_THREAD
|
|
queue_mode = QUEUE_THREAD
|
|
|
|
+threshold_mode = THRESHOLD_AVERAGE
|
|
|
|
|
|
db_path = config.get('localDatabase', os.path.join(device_path, 'files.db'))
|
|
db_path = config.get('localDatabase', os.path.join(device_path, 'files.db'))
|
|
db = sqlite3.connect(db_path)
|
|
db = sqlite3.connect(db_path)
|
|
@@ -248,12 +256,18 @@ def find_repetitions(results, segments_needed=2):
|
|
last_value_in_threshold_index = -1
|
|
last_value_in_threshold_index = -1
|
|
found = []
|
|
found = []
|
|
|
|
|
|
|
|
+ if threshold_mode == THRESHOLD_FIXED:
|
|
|
|
+ threshold = THRESHOLD
|
|
|
|
+ elif threshold_mode == THRESHOLD_AVERAGE:
|
|
|
|
+ values = [x['confidence'] for x in results]
|
|
|
|
+ threshold = math.ceil(float(len(values)) / float(sum(values)))
|
|
|
|
+
|
|
if segments_needed < 1:
|
|
if segments_needed < 1:
|
|
segments_needed = 1
|
|
segments_needed = 1
|
|
|
|
|
|
for index, result in enumerate(results):
|
|
for index, result in enumerate(results):
|
|
if not expect_space:
|
|
if not expect_space:
|
|
- if result['confidence'] >= THRESHOLD:
|
|
|
|
|
|
+ if result['confidence'] >= threshold:
|
|
found_counter += 1
|
|
found_counter += 1
|
|
last_value_in_threshold_index = index
|
|
last_value_in_threshold_index = index
|
|
if found_index is None:
|
|
if found_index is None:
|
|
@@ -284,7 +298,7 @@ def find_repetitions(results, segments_needed=2):
|
|
found_index = None
|
|
found_index = None
|
|
expect_recover = False
|
|
expect_recover = False
|
|
else:
|
|
else:
|
|
- if result['confidence'] <= THRESHOLD:
|
|
|
|
|
|
+ if result['confidence'] <= threshold:
|
|
expect_space = False
|
|
expect_space = False
|
|
|
|
|
|
if found_counter >= segments_needed:
|
|
if found_counter >= segments_needed:
|