code: def get_file_metadata(meta, split, file_list, lookup):
      """Returns a generator with metadata for each file
  
      Arguments
      ---------
      meta: dict
          the speaker metadata dictionary
      split: str
          the split identifier ("train", "valid" or "test")
      file_list: list
          the list of files
      lookup: dict
          the digit metadata lookup (for text/phoneme transcriptions)
  
      Returns
      -------
      item_id: str
          the ID of the item
      file_meta: dict
          the metadata - to be saved
      """
      for file_path in file_list:
          item_id = get_item_id(file_path)
          file_name = os.path.basename(file_path)
          digit, speaker_id, _ = item_id.split("_")
          speaker_meta = meta[speaker_id]
          file_meta = {
              "file_name": f"{{data_root}}/dataset/{split}/{speaker_id}/{file_name}",
              "digit": digit,
              "speaker_id": speaker_id,
          }
          file_meta.update(convert_speaker_meta(speaker_meta))
          digit_data = lookup[digit]
          file_meta.update(digit_data)
          yield item_id, file_meta
  
imports: import logging
  import csv
  import math
  import json
  import os
  import torchaudio
  import speechbrain
  from glob import glob
  from functools import partial
  from tqdm.auto import tqdm
  from torchaudio import functional
  from subprocess import list2cmdline
  from speechbrain.utils.superpowers import run_shell
  from speechbrain.utils.data_utils import download_file
  from speechbrain.dataio.dataio import load_pkl, save_pkl
label_desc: Use image node_id 17 for calling a global function with example usage: get_file_metadata(meta, split, file_list, lookup) without return types