code: def _get_stft(
      raw_data: torch.Tensor,
      sampling_rate_in_hz: int,
      window_length_in_s: float,
      window_shift_in_s: float,
      num_fft_points: int,
      window_type: str,
      data_transformation: Optional[str] = None,
      zero_mean_offset: bool = False,
  ) -> torch.Tensor:
      pre_emphasized_data = _pre_emphasize_data(raw_data)
      stft = _short_time_fourier_transform(
          pre_emphasized_data,
          sampling_rate_in_hz,
          window_length_in_s,
          window_shift_in_s,
          num_fft_points,
          window_type,
          data_transformation,
          zero_mean_offset,
      )
      non_symmetric_stft = get_non_symmetric_data(stft)
      return non_symmetric_stft
  
imports: import functools
  import logging
  from io import BytesIO
  from typing import Any, List, Optional, Union
  import torch
  import torch.nn.functional
  import torchaudio
  from packaging import version
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import DEFAULT_AUDIO_TENSOR_LENGTH
  from ludwig.utils.types import TorchAudioTuple
label_desc: Use image node_id 15 for calling a global function with example usage: _get_stft(raw_data, sampling_rate_in_hz, window_length_in_s, window_shift_in_s, num_fft_points, window_type, data_transformation, zero_mean_offset) and returns: non_symmetric_stft