class_docstr: Sound audio dataset: Audio dataset with environmental sound-specific metadata.
  
  Args:
      info_fields_required (bool): Whether all the mandatory metadata fields should be in the loaded metadata.
      external_metadata_source (tp.Optional[str]): Folder containing JSON metadata for the corresponding dataset.
          The metadata files contained in this folder are expected to match the stem of the audio file with
          a json extension.
      aug_p (float): Probability of performing audio mixing augmentation on the batch.
      mix_p (float): Proportion of batch items that are mixed together when applying audio mixing augmentation.
      mix_snr_low (int): Lowerbound for SNR value sampled for mixing augmentation.
      mix_snr_high (int): Upperbound for SNR value sampled for mixing augmentation.
      mix_min_overlap (float): Minimum overlap between audio files when performing mixing augmentation.
      kwargs: Additional arguments for AudioDataset.
  
  See `audiocraft.data.info_audio_dataset.InfoAudioDataset` for full initialization arguments.
code: def __getitem__(self, index):
      wav, info = super().__getitem__(index)
      info_data = info.to_dict()
      info_path = self._get_info_path(info.meta.path)
      if Path(info_path).exists():
          with open(info_path, "r") as json_file:
              sound_data = json.load(json_file)
              sound_data.update(info_data)
              sound_info = SoundInfo.from_dict(
                  sound_data, fields_required=self.info_fields_required
              )
              # if there are multiple descriptions, sample one randomly
              if isinstance(sound_info.description, list):
                  sound_info.description = random.choice(
                      sound_info.description
                  )
      else:
          sound_info = SoundInfo.from_dict(
              info_data, fields_required=False
          )
  
      sound_info.self_wav = WavCondition(
          wav=wav[None],
          length=torch.tensor([info.n_frames]),
          sample_rate=[sound_info.sample_rate],
          path=[info.meta.path],
          seek_time=[info.seek_time],
      )
  
      return wav, sound_info
  
imports: from dataclasses import dataclass, fields, replace
  import json
  from pathlib import Path
  import random
  import typing
  import numpy
  import torch
  from .info_audio_dataset import InfoAudioDataset, get_keyword_or_keyword_list
  from ..modules.conditioners import ConditioningAttributes, SegmentWithAttributes, WavCondition
label_desc: Use image node_id 3 for calling the SoundDataset obj's underlying member method code with example usage: obj.__getitem__(index) and returns: wav,  sound_info