code: def data_prep(data_folder, hparams):
      "Creates the datasets and their data processing pipelines."
  
      # 1. Declarations:
      train_data = sb.dataio.dataset.DynamicItemDataset.from_csv(
          csv_path=data_folder / "../annotation/separation_train.csv",
          replacements={"data_root": data_folder},
      )
      valid_data = sb.dataio.dataset.DynamicItemDataset.from_csv(
          csv_path=data_folder / "../annotation/separation_dev.csv",
          replacements={"data_root": data_folder},
      )
      datasets = [train_data, valid_data]
  
      # 2. Define audio pipeline:
      @sb.utils.data_pipeline.takes("mix_wav", "s1_wav", "s2_wav")
      @sb.utils.data_pipeline.provides("mix_sig", "source1", "source2")
      def audio_pipeline(mix_wav, s1_wav, s2_wav):
          mix_sig = sb.dataio.dataio.read_audio(mix_wav)
          yield mix_sig
          source1 = sb.dataio.dataio.read_audio(s1_wav)
          yield source1
          source2 = sb.dataio.dataio.read_audio(s2_wav)
          yield source2
  
      sb.dataio.dataset.add_dynamic_item(datasets, audio_pipeline)
  
      # 3. Set output:
      sb.dataio.dataset.set_output_keys(
          datasets, ["id", "mix_sig", "source1", "source2"]
      )
  
      return train_data, valid_data
  
file_path: speechbrain/tests/integration/separation/example_conv_tasnet.py
imports: import torch
  import pathlib
  import speechbrain
  import torch.nn.functional
  from hyperpyyaml import load_hyperpyyaml
  from speechbrain.nnet.losses import get_si_snr_with_pitwrapper
label_desc: Use image node_id 1 for calling a global function with example usage: data_prep(data_folder, hparams) and returns: train_data,  valid_data