code: def create_aishell1mix_df(
      aishell1_md_file, aishell1_dir, wham_md_file, wham_dir, n_src
  ):
      """Generate aishell1mix dataframe from a aishell1 and wha md file"""
  
      # Create a dataframe that will be used to generate sources and mixtures
      mixtures_md = pd.DataFrame(columns=["mixture_ID"])
      # Create a dataframe with additional infos.
      mixtures_info = pd.DataFrame(columns=["mixture_ID"])
      # Add columns (depends on the number of sources)
      for i in range(n_src):
          mixtures_md[f"source_{i + 1}_path"] = {}
          mixtures_md[f"source_{i + 1}_gain"] = {}
          mixtures_md[f"source_{i + 1}_transcript"] = {}
          mixtures_info[f"speaker_{i + 1}_ID"] = {}
          mixtures_info[f"speaker_{i + 1}_sex"] = {}
      mixtures_md["noise_path"] = {}
      mixtures_md["noise_gain"] = {}
      # Generate pairs of sources to mix
      pairs, pairs_noise = set_pairs(
          aishell1_md_file, wham_md_file, n_src
      )
      clip_counter = 0
      # For each combination create a new line in the dataframe
      for pair, pair_noise in tqdm(
          zip(pairs, pairs_noise), total=len(pairs)
      ):
          # return infos about the sources, generate sources
          sources_info, sources_list_max = read_sources(
              aishell1_md_file, pair, n_src, aishell1_dir
          )
          # Add noise
          sources_info, sources_list_max = add_noise(
              wham_md_file,
              wham_dir,
              pair_noise,
              sources_list_max,
              sources_info,
          )
          # compute initial loudness, randomize loudness and normalize sources
          loudness, _, sources_list_norm = set_loudness(
              sources_list_max
          )
          # Do the mixture
          mixture_max = mix(sources_list_norm)
          # Check the mixture for clipping and renormalize if necessary
          renormalize_loudness, did_clip = check_for_cliping(
              mixture_max, sources_list_norm
          )
          clip_counter += int(did_clip)
          # Compute gain
          gain_list = compute_gain(loudness, renormalize_loudness)
  
          # Add information to the dataframe
          row_mixture, row_info = get_row(
              sources_info, gain_list, n_src
          )
          mixtures_md.loc[len(mixtures_md)] = row_mixture
          mixtures_info.loc[len(mixtures_info)] = row_info
      print(
          f"Among {len(mixtures_md)} mixtures, {clip_counter} clipped."
      )
      return mixtures_md, mixtures_info
  
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 4 for calling a global function with example usage: create_aishell1mix_df(aishell1_md_file, aishell1_dir, wham_md_file, wham_dir, n_src) and returns: mixtures_md,  mixtures_info