code: def get_validation_dataset(
      audio_params: Dict, audio_adapter: AudioAdapter, audio_path: str
  ) -> Any:
      """
      Builds validation dataset.
  
      Parameters:
          audio_params (Dict):
              Audio parameters.
          audio_adapter (AudioAdapter):
              Adapter to load audio from.
          audio_path (str):
              Path of directory containing audio.
  
      Returns:
          Any:
              Built dataset.
      """
      builder = DatasetBuilder(
          audio_params, audio_adapter, audio_path, chunk_duration=12.0
      )
      return builder.build(
          str(audio_params.get("validation_csv")),
          batch_size=audio_params.get("batch_size", 8),
          cache_directory=audio_params.get("validation_cache"),
          convert_to_uint=True,
          infinite_generator=False,
          n_chunks_per_song=1,
          # should not perform data augmentation for eval:
          random_data_augmentation=False,
          random_time_crop=False,
          shuffle=False,
      )
  
imports: import os
  import time
  from os.path import exists
  from os.path import sep
  from typing import Any, Dict, List, Optional, Tuple
  import tensorflow
  from .audio.adapter import AudioAdapter
  from .audio.convertor import db_uint_spectrogram_to_gain, spectrogram_to_db_uint
  from .audio.spectrogram import compute_spectrogram_tf, random_pitch_shift, random_time_stretch
  from .utils.logging import logger
  from .utils.tensor import check_tensor_shape, dataset_from_csv, set_tensor_shape, sync_apply
label_desc: Use image node_id 2 for calling a global function with example usage: get_validation_dataset(audio_params, audio_adapter, audio_path) and returns: builder