class_docstr: STFT decoder for speech enhancement and separation
class_docstr_tok: ["STFT","decoder","for","speech","enhancement","and","separation"]
docstr: Forward.
  
  Args:
      input (ComplexTensor): spectrum [Batch, 1, F]
      output: wavs [Batch, 1, self.win_length]
docstr_tok: ["Forward",".","Args",":","input","(","ComplexTensor",")",":","spectrum","[","Batch",",","1",",","F","]","output",":","wavs","[","Batch",",","1",",","self.win_length","]"]
code: def forward_streaming(self, input_frame: torch.Tensor):
      """Forward.
  
      Args:
          input (ComplexTensor): spectrum [Batch, 1, F]
          output: wavs [Batch, 1, self.win_length]
      """
      input_frame = self.spec_back(input_frame)
      input_frame = input_frame.real + 1j * input_frame.imag
      output_wav = (
          torch.fft.irfft(input_frame)
          if self.stft.onesided
          else torch.fft.ifft(input_frame).real
      )
  
      output_wav = output_wav.squeeze(1)
  
      n_pad_left = (self.n_fft - self.win_length) // 2
      output_wav = output_wav[
          ..., n_pad_left : n_pad_left + self.win_length
      ]
  
      return output_wav * self._get_window_func()
  
file_path: espnet/espnet2/enh/decoder/stft_decoder.py
imports: import torch
  import torch_complex
  from packaging.version import parse
  from torch_complex.tensor import ComplexTensor
  from espnet2.enh.decoder.abs_decoder import AbsDecoder
  from espnet2.enh.layers.complex_utils import is_torch_complex_tensor
  from espnet2.layers.stft import Stft
label_desc: Use image node_id 7 for calling the STFTDecoder obj's underlying member method code with example usage: obj.forward_streaming(input_frame) and returns: unknown