class_docstr: Computes the Inverse Short-Term Fourier Transform (ISTFT)
  
  This class computes the Inverse Short-Term Fourier Transform of
  an audio signal. It supports multi-channel audio inputs
  (batch, time_step, n_fft, 2, n_channels [optional]).
  
  Arguments
  ---------
  sample_rate : int
      Sample rate of the input audio signal (e.g. 16000).
  win_length : float
      Length (in ms) of the sliding window used when computing the STFT.
  hop_length : float
      Length (in ms) of the hope of the sliding window used when computing
      the STFT.
  window_fn : function
      A function that takes an integer (number of samples) and outputs a
      tensor to be used as a window for ifft.
  normalized_stft : bool
      If True, the function assumes that it's working with the normalized
      STFT results. (default is False)
  center : bool
      If True (default), the function assumes that the STFT result was padded
      on both sides.
  onesided : True
      If True (default), the function assumes that there are n_fft/2 values
      for each time frame of the STFT.
  epsilon : float
      A small value to avoid division by 0 when normalizing by the sum of the
      squared window. Playing with it can fix some abnormalities at the
      beginning and at the end of the reconstructed signal. The default value
      of epsilon is 1e-12.
  
  Example
  -------
  >>> import torch
  >>> compute_STFT = STFT(
  ...     sample_rate=16000, win_length=25, hop_length=10, n_fft=400
  ... )
  >>> compute_ISTFT = ISTFT(
  ...     sample_rate=16000, win_length=25, hop_length=10
  ... )
  >>> inputs = torch.randn([10, 16000])
  >>> outputs = compute_ISTFT(compute_STFT(inputs))
  >>> outputs.shape
  torch.Size([10, 16000])
class_docstr_tok: ["Computes","the","Inverse","Short-Term","Fourier","Transform","(","ISTFT",")","This","class","computes","the","Inverse","Short-Term","Fourier","Transform","of","an","audio","signal",".","It","supports","multi-channel","audio","inputs","(","batch",",","time_step",",","n_fft",",","2",",","n_channels","[","optional","]",")",".","Arguments","--","--","--","--","-","sample_rate",":","int","Sample","rate","of","the","input","audio","signal","(","e.g",".","16000",")",".","win_length",":","float","Length","(","in","ms",")","of","the","sliding","window","used","when","computing","the","STFT",".","hop_length",":","float","Length","(","in","ms",")","of","the","hope","of","the","sliding","window","used","when","computing","the","STFT",".","window_fn",":","function","A","function","that","takes","an","integer","(","number","of","samples",")","and","outputs","a","tensor","to","be","used","as","a","window","for","ifft",".","normalized_stft",":","bool","If","True",",","the","function","assumes","that","it","'s","working","with","the","normalized","STFT","results",".","(","default","is","False",")","center",":","bool","If","True","(","default",")",",","the","function","assumes","that","the","STFT","result","was","padded","on","both","sides",".","onesided",":","True","If","True","(","default",")",",","the","function","assumes","that","there","are","n_fft\/2","values","for","each","time","frame","of","the","STFT",".","epsilon",":","float","A","small","value","to","avoid","division","by","0","when","normalizing","by","the","sum","of","the","squared","window",".","Playing","with","it","can","fix","some","abnormalities","at","the","beginning","and","at","the","end","of","the","reconstructed","signal",".","The","default","value","of","epsilon","is","1e-12",".","Example","--","--","--","-",">",">",">","import","torch",">",">",">","compute_STFT","=","STFT","(","...","sample_rate=16000",",","win_length=25",",","hop_length=10",",","n_fft=400","...",")",">",">",">","compute_ISTFT","=","ISTFT","(","...","sample_rate=16000",",","win_length=25",",","hop_length=10","...",")",">",">",">","inputs","=","torch.randn","(","[","10",",","16000","]",")",">",">",">","outputs","=","compute_ISTFT","(","compute_STFT","(","inputs",")",")",">",">",">","outputs.shape","torch.Size","(","[","10",",","16000","]",")"]
code: def __init__(
      self,
      sample_rate,
      n_fft=None,
      win_length=25,
      hop_length=10,
      window_fn=torch.hamming_window,
      normalized_stft=False,
      center=True,
      onesided=True,
      epsilon=1e-12,
  ):
      super().__init__()
      self.sample_rate = sample_rate
      self.n_fft = n_fft
      self.win_length = win_length
      self.hop_length = hop_length
      self.normalized_stft = normalized_stft
      self.center = center
      self.onesided = onesided
      self.epsilon = epsilon
  
      # Convert win_length and hop_length from ms to samples
      self.win_length = int(
          round((self.sample_rate / 1000.0) * self.win_length)
      )
      self.hop_length = int(
          round((self.sample_rate / 1000.0) * self.hop_length)
      )
  
      # Create window using provided function
      self.window = window_fn(self.win_length)
  
imports: import math
  import torch
  import logging
  from speechbrain.utils.checkpoints import mark_as_saver, mark_as_loader, mark_as_transfer, register_checkpoint_hooks
  from speechbrain.dataio.dataio import length_to_mask
label_desc: Use image node_id 1 to create a new ISTFT object from inherited base classes: torch.nn with example: obj = ISTFT(sample_rate, n_fft, win_length, hop_length, window_fn, normalized_stft, center, onesided, epsilon)