code: def test_read_seek_time_wav(self):
      sample_rates = [8000, 16_000]
      channels = [1, 2]
      duration = 1.0
      read_duration = 1.0
      for sample_rate, ch in product(sample_rates, channels):
          n_frames = int(sample_rate * duration)
          wav = get_white_noise(ch, n_frames).clamp(-0.99, 0.99)
          path = self.get_temp_path("sample_wav.wav")
          save_wav(path, wav, sample_rate)
          seek_time = torch.rand(1).item()
          read_wav, read_sr = audio_read(path, seek_time, read_duration)
          seek_frames = int(sample_rate * seek_time)
          expected_frames = n_frames - seek_frames
          assert read_sr == sample_rate
          assert read_wav.shape[0] == wav.shape[0]
          assert read_wav.shape[1] == expected_frames
          assert torch.allclose(
              read_wav, wav[..., seek_frames:], rtol=1e-03, atol=1e-04
          )
  
imports: from itertools import product
  import random
  import numpy
  import torch
  import torchaudio
  from audiocraft.data.audio import audio_info, audio_read, audio_write, _av_read
  from ..common_utils import TempDirMixin, get_white_noise, save_wav
label_desc: Use image node_id 3 for calling the TestRead obj's underlying member method code with example usage: obj.test_read_seek_time_wav() without return types