class_docstr: Test the correctness of optional parameters of `soundfile_backend.save`
class_docstr_tok: ["Test","the","correctness","of","optional","parameters","of","`","soundfile_backend.save","`"]
docstr: channels_first swaps axes
docstr_tok: ["channels_first","swaps","axes"]
code: def test_channels_first(self, channels_first):
      """channels_first swaps axes"""
      path = self.get_temp_path("data.wav")
      data = get_wav_data("int32", 2, channels_first=channels_first)
      soundfile_backend.save(
          path, data, 8000, channels_first=channels_first
      )
      found = load_wav(path)[0]
      expected = data if channels_first else data.transpose(1, 0)
      self.assertEqual(found, expected, atol=1e-4, rtol=1e-8)
  
imports: import io
  from unittest.mock import patch
  from torchaudio._internal import module_utils
  from torchaudio.backend import soundfile_backend
  from torchaudio_unittest.common_utils import get_wav_data, load_wav, nested_params, PytorchTestCase, skipIfNoModule, TempDirMixin
  from .common import fetch_wav_subtype, parameterize, skipIfFormatNotSupported
label_desc: Use image node_id 1 for calling the TestSaveParams obj's underlying member method code with example usage: obj.test_channels_first(channels_first) without return types