docstr: Inverse STFT.
  
  Args:
      input: Tensor(batch, T, F, 2) or ComplexTensor(batch, T, F)
      ilens: (batch,)
  Returns:
      wavs: (batch, samples)
      ilens: (batch,)
docstr_tok: ["Inverse","STFT",".","Args",":","input",":","Tensor","(","batch",",","T",",","F",",","2",")","or","ComplexTensor","(","batch",",","T",",","F",")","ilens",":","(","batch",",",")","Returns",":","wavs",":","(","batch",",","samples",")","ilens",":","(","batch",",",")"]
code: def inverse(
      self,
      input: Union[torch.Tensor, ComplexTensor],
      ilens: torch.Tensor = None,
  ) -> Tuple[torch.Tensor, Optional[torch.Tensor]]:
      """Inverse STFT.
  
      Args:
          input: Tensor(batch, T, F, 2) or ComplexTensor(batch, T, F)
          ilens: (batch,)
      Returns:
          wavs: (batch, samples)
          ilens: (batch,)
      """
      input = to_complex(input)
  
      if self.window is not None:
          window_func = getattr(torch, f"{self.window}_window")
          datatype = input.real.dtype
          window = window_func(
              self.win_length, dtype=datatype, device=input.device
          )
      else:
          window = None
  
      input = input.transpose(1, 2)
  
      wavs = torch.functional.istft(
          input,
          n_fft=self.n_fft,
          hop_length=self.hop_length,
          win_length=self.win_length,
          window=window,
          center=self.center,
          normalized=self.normalized,
          onesided=self.onesided,
          length=ilens.max() if ilens is not None else ilens,
          return_complex=False,
      )
  
      return wavs, ilens
  
file_path: espnet/espnet2/layers/stft.py
imports: from typing import Optional, Tuple, Union
  import librosa
  import numpy
  import torch
  from packaging.version import parse
  from torch_complex.tensor import ComplexTensor
  from typeguard import check_argument_types
  from espnet2.enh.layers.complex_utils import to_complex
  from espnet2.layers.inversible_interface import InversibleInterface
  from espnet.nets.pytorch_backend.nets_utils import make_pad_mask
label_desc: Use image node_id 4 for calling the Stft obj's underlying member method code with example usage: obj.inverse(input, ilens) and returns: wavs,  ilens