|
@@ -8,7 +8,6 @@ from fourier.dejavu.recognize import FilePerSecondRecognizer
|
|
|
from datetime import datetime, timedelta
|
|
|
from ondemand.endpoint import setup_endpoint
|
|
|
from fourier.dejavu import Dejavu
|
|
|
-from Queue import Queue, Empty
|
|
|
from firebase_admin import credentials
|
|
|
from firebase_admin import db as fbdb
|
|
|
from binascii import hexlify
|
|
@@ -27,6 +26,11 @@ import time
|
|
|
import sys
|
|
|
import os
|
|
|
|
|
|
+if sys.version_info >= (3, 0):
|
|
|
+ from queue import Queue, Empty
|
|
|
+else:
|
|
|
+ from Queue import Queue, Empty
|
|
|
+
|
|
|
log.basicConfig(format='[%(asctime)s] %(message)s', level=log.INFO)
|
|
|
|
|
|
AUDIOS_PATH = '/tmp'
|
|
@@ -66,9 +70,9 @@ dejavu = Dejavu({"database_type":"mem"})
|
|
|
device_id = config['device_id']
|
|
|
device_path = os.path.join(base_path, device_id)
|
|
|
recognizer = FilePerSecondRecognizer
|
|
|
-"""calibrations = {}
|
|
|
+calibrations = {}
|
|
|
device_ref = fbdb.reference('devices').child(config['device_id'])
|
|
|
-calibrations_ref = device_ref.child('calibrations')"""
|
|
|
+calibrations_ref = device_ref.child('calibrations')
|
|
|
|
|
|
# settings
|
|
|
queue_mode = QUEUE_THREAD
|
|
@@ -167,9 +171,9 @@ def process_segment(item, audios=None):
|
|
|
|
|
|
log.info('processing segment: {}'.format(item))
|
|
|
|
|
|
- """# 0. Obtener la información de calibración
|
|
|
+ # 0. Obtener la información de calibración
|
|
|
calibration = calibrations_ref.child(station)
|
|
|
- print(calibration)"""
|
|
|
+ print(calibration)
|
|
|
|
|
|
# 1. obtener el audio desde firebase
|
|
|
# y calcular su fingerprint.
|
|
@@ -208,13 +212,14 @@ def process_segment(item, audios=None):
|
|
|
# 2. Read the list of files from local database
|
|
|
audios_counter = 0
|
|
|
results = []
|
|
|
- for path, name, ts in audios_iterable:
|
|
|
- log.info('file: {}'.format(path))
|
|
|
- audios_counter += os.path.isfile(path)
|
|
|
- values = []
|
|
|
- for match in dejavu.recognize(recognizer, path, 5,
|
|
|
- ads_filter=[md5hash]):
|
|
|
- try:
|
|
|
+
|
|
|
+ try:
|
|
|
+ for path, name, ts in audios_iterable:
|
|
|
+ log.info('file: {}'.format(path))
|
|
|
+ audios_counter += os.path.isfile(path)
|
|
|
+ values = []
|
|
|
+ for match in dejavu.recognize(recognizer, path, 5,
|
|
|
+ ads_filter=[md5hash]):
|
|
|
results.append({
|
|
|
'confidence': match['confidence'],
|
|
|
'timestamp': ts,
|
|
@@ -222,21 +227,17 @@ def process_segment(item, audios=None):
|
|
|
})
|
|
|
values.append(str(match['confidence']))
|
|
|
|
|
|
- except KeyError as ex:
|
|
|
- the_key = str(ex)
|
|
|
- if the_key == 'confidence':
|
|
|
- log.warning('Invalid confidence')
|
|
|
- else:
|
|
|
- log.warning(the_key)
|
|
|
+ ts += match['length'] / 1000
|
|
|
|
|
|
- ts += match['length'] / 1000
|
|
|
+ log.info('{2} ({3}/{0}) {1}'.format(
|
|
|
+ os.path.split(path)[-1],
|
|
|
+ ','.join(values),
|
|
|
+ item['ad'],
|
|
|
+ station,
|
|
|
+ ))
|
|
|
|
|
|
- log.info('{2} ({3}/{0}) {1}'.format(
|
|
|
- os.path.split(path)[-1],
|
|
|
- ','.join(values),
|
|
|
- item['ad'],
|
|
|
- station,
|
|
|
- ))
|
|
|
+ except dejavu.CouldntDecodeError as ex:
|
|
|
+ log.error('[process_segment] {}'.format(ex))
|
|
|
|
|
|
try:
|
|
|
response = client.put_schedule_results(
|