class_docstr: Test the correctness of frame parameters of `sox_io_backend.load`
code: def _test(
      self, func, frame_offset, num_frames, channels_first, normalize
  ):
      original = get_wav_data("int16", num_channels=2, normalize=False)
      path = self.get_temp_path("test.wav")
      save_wav(path, original, sample_rate=8000)
  
      output, _ = func(
          path,
          frame_offset,
          num_frames,
          normalize,
          channels_first,
          None,
      )
      frame_end = (
          None if num_frames == -1 else frame_offset + num_frames
      )
      expected = original[:, slice(frame_offset, frame_end)]
      if not channels_first:
          expected = expected.T
      if normalize:
          expected = expected.to(torch.float32) / (2**15)
      self.assertEqual(output, expected)
  
imports: import itertools
  from functools import partial
  import torch
  from parameterized import parameterized
  from torchaudio._backend.utils import get_load_func
  from torchaudio_unittest.common_utils import get_asset_path, get_wav_data, load_wav, nested_params, PytorchTestCase, save_wav, skipIfNoExec, skipIfNoSox, skipIfNoSoxDecoder, sox_utils, TempDirMixin
  from .common import name_func
label_desc: Use image node_id 1 for calling the TestLoadParams obj's underlying member method code with example usage: obj._test(func, frame_offset, num_frames, channels_first, normalize) without return types