code: def prepare_target_data(args, tgt_audios):
      feature_name = "logmelspec80"
      zip_path = args.output_root / f"{feature_name}.zip"
      if zip_path.exists():
          print(f"{zip_path} exists.")
          return zip_path
  
      feature_root = args.output_root / feature_name
      feature_root.mkdir(exist_ok=True)
  
      print("Extracting Mel spectrogram features...")
      for tgt_audio in tqdm(tgt_audios):
          sample_id = tgt_audio.stem
          waveform, sample_rate = torchaudio.load(tgt_audio.as_posix())
          waveform, sample_rate = convert_waveform(
              waveform,
              sample_rate,
              normalize_volume=args.normalize_volume,
              to_sample_rate=args.sample_rate,
          )
          extract_logmel_spectrogram(
              waveform,
              sample_rate,
              feature_root / f"{sample_id}.npy",
              win_length=args.win_length,
              hop_length=args.hop_length,
              n_fft=args.n_fft,
              n_mels=args.n_mels,
              f_min=args.f_min,
              f_max=args.f_max,
          )
      print("ZIPing features...")
      create_zip(feature_root, zip_path)
      shutil.rmtree(feature_root)
  
      return zip_path
  
file_path: fairseq/examples/speech_to_speech/preprocessing/prep_s2spect_data.py
imports: import argparse
  import logging
  import os
  from pathlib import Path
  import shutil
  import torchaudio
  import soundfile
  from tqdm import tqdm
  import pandas
  from examples.speech_synthesis.data_utils import extract_logmel_spectrogram
  from examples.speech_to_speech.preprocessing.data_utils import gen_config_yaml
  from examples.speech_to_text.data_utils import create_zip, get_zip_manifest, save_df_to_tsv
  from fairseq.data.audio.audio_utils import convert_waveform
label_desc: Use image node_id 1 for calling a global function with example usage: prepare_target_data(args, tgt_audios) and returns: zip_path, zip_path