code: def generate_fingerprints(
      self, samples: List[int], Fs=DEFAULT_FS
  ) -> Tuple[List[Tuple[str, int]], float]:
      f"""
          Generate the fingerprints for the given sample data (channel).
  
          :param samples: list of ints which represents the channel info of the given audio file.
          :param Fs: sampling rate which defaults to {DEFAULT_FS}.
          :return: a list of tuples for hash and its corresponding offset, together with the generation time.
          """
      t = time()
      hashes = fingerprint(samples, Fs=Fs)
      fingerprint_time = time() - t
      return hashes, fingerprint_time
  
imports: import multiprocessing
  import os
  import sys
  import traceback
  from itertools import groupby
  from time import time
  from typing import Dict, List, Tuple
  import dejavu.logic.decoder
  from dejavu.base_classes.base_database import get_database
  from dejavu.config.settings import DEFAULT_FS, DEFAULT_OVERLAP_RATIO, DEFAULT_WINDOW_SIZE, FIELD_FILE_SHA1, FIELD_TOTAL_HASHES, FINGERPRINTED_CONFIDENCE, FINGERPRINTED_HASHES, HASHES_MATCHED, INPUT_CONFIDENCE, INPUT_HASHES, OFFSET, OFFSET_SECS, SONG_ID, SONG_NAME, TOPN
  from dejavu.logic.fingerprint import fingerprint
label_desc: Use image node_id 7 for calling the Dejavu obj's underlying member method code with example usage: obj.generate_fingerprints(samples, Fs) and returns: hashes,  fingerprint_time