code: def split_subset(args, meta):
      overall_data = {}
      item_names = []
      for i in range(len(meta)):
          item_name = meta[i]["item_name"]
          overall_data[item_name] = meta[i]
          item_names.append(item_name)
  
      item_names = sorted(item_names)
  
      # Refer to https://github.com/M4Singer/M4Singer
      random.seed(1234)
      random.shuffle(item_names)
      valid_num, test_num = 100, 100
  
      test_names = item_names[:test_num]
      # NOTE(jiatong): the valid set is different from M4Singer
      # As they include test set in the validation set
      # but we do not.
      valid_names = item_names[test_num : valid_num + test_num]
      train_names = item_names[valid_num + test_num :]
  
      data = {"tr_no_dev": [], "dev": [], "eval": []}
      print(test_names)
  
      for key in overall_data.keys():
          if key in test_names:
              data["eval"].append(overall_data[key])
          elif key in valid_names:
              data["dev"].append(overall_data[key])
          else:
              data["tr_no_dev"].append(overall_data[key])
      return data
  
file_path: espnet/egs2/m4singer/svs1/local/data_prep.py
imports: import argparse
  import json
  import os
  import random
  import shutil
  import librosa
  import miditoolkit
  import numpy
  from espnet2.fileio.score_scp import SingingScoreWriter
label_desc: Use image node_id 6 for calling a global function with example usage: split_subset(args, meta) and returns: data