code: def skip(splits, save_folder, conf):
      """
      Detects if the ljspeech data_extraction has been already done.
      If the extraction has been done, we can skip it.
  
      Returns
      -------
      bool
          if True, the preparation phase can be skipped.
          if False, it must be done.
      """
      # Checking json files
      skip = True
  
      split_files = {
          "train": TRAIN_JSON,
          "valid": VALID_JSON,
          "valid_small": VALID_SMALL,
          "test": TEST_JSON,
      }
  
      for split in splits:
          if not (save_folder / split_files[split]).exists():
              skip = False
  
      code_folder = save_folder / "codes"
      if not code_folder.exists():
          skip = False
  
      #  Checking saved options
      save_opt = save_folder / OPT_FILE
      if skip is True:
          if save_opt.is_file():
              opts_old = load_pkl(save_opt.as_posix())
              if opts_old == conf:
                  skip = True
              else:
                  skip = False
          else:
              skip = False
      return skip
  
file_path: speechbrain/recipes/CVSS/S2ST/extract_code.py
imports: import logging
  import json
  import pathlib
  import joblib
  import torch
  import torchaudio
  import numpy
  from tqdm import tqdm
  import speechbrain
  from speechbrain.dataio.dataio import load_pkl, save_pkl
  from speechbrain.lobes.models.huggingface_transformers.wav2vec2 import Wav2Vec2
  from huggingface_hub import hf_hub_download
label_desc: Use image node_id 4 for calling a global function with example usage: skip(splits, save_folder, conf) and returns: skip