code: def read_sources(metadata_file, pair, n_src, aishell1_dir):
      # Read lines corresponding to pair
      sources = [metadata_file.iloc[pair[i]] for i in range(n_src)]
      # Get sources info
      speaker_id_list = [source["speaker_ID"] for source in sources]
      sex_list = [source["sex"] for source in sources]
      length_list = [source["length"] for source in sources]
      path_list = [source["origin_path"] for source in sources]
      transcript_list = [source["transcript"] for source in sources]
      id_l = [
          os.path.split(source["origin_path"])[1].split(".")[0]
          for source in sources
      ]
      mixtures_id = "_".join(id_l)
  
      # Get the longest and shortest source len
      max_length = max(length_list)
      sources_list = []
  
      # Read the source and compute some info
      for i in range(n_src):
          source = metadata_file.iloc[pair[i]]
          absolute_path = os.path.join(
              aishell1_dir, source["origin_path"]
          )
          s, _ = sf.read(absolute_path, dtype="float32")
          sources_list.append(
              np.pad(s, (0, max_length - len(s)), mode="constant")
          )
  
      sources_info = {
          "mixtures_id": mixtures_id,
          "speaker_id_list": speaker_id_list,
          "sex_list": sex_list,
          "path_list": path_list,
          "transcript_list": transcript_list,
      }
      return sources_info, sources_list
  
imports: import argparse
  import os
  import random
  import warnings
  import numpy
  import pandas
  import pyloudnorm
  import soundfile
  from tqdm import tqdm
label_desc: Use image node_id 9 for calling a global function with example usage: read_sources(metadata_file, pair, n_src, aishell1_dir) and returns: sources_info,  sources_list