code: def _recognize(
      self, *data
  ) -> Tuple[List[Dict[str, any]], int, int, int]:
      fingerprint_times = []
      hashes = (
          set()
      )  # to remove possible duplicated fingerprints we built a set.
      for channel in data:
          (
              fingerprints,
              fingerprint_time,
          ) = self.dejavu.generate_fingerprints(channel, Fs=self.Fs)
          fingerprint_times.append(fingerprint_time)
          hashes |= set(fingerprints)
  
      matches, dedup_hashes, query_time = self.dejavu.find_matches(
          hashes
      )
  
      t = time()
      final_results = self.dejavu.align_matches(
          matches, dedup_hashes, len(hashes)
      )
      align_time = time() - t
  
      return (
          final_results,
          np.sum(fingerprint_times),
          query_time,
          align_time,
      )
  
file_path: dejavu/dejavu/base_classes/base_recognizer.py
imports: import abc
  from time import time
  from typing import Dict, List, Tuple
  import numpy
  from dejavu.config.settings import DEFAULT_FS
label_desc: Use image node_id 2 for calling the BaseRecognizer obj's underlying member method code with example usage: obj._recognize() and returns: final_results,  np,  query_time,  align_time