docstr: forward_input[0] = mel_spectrogram:  batch x n_mel_channels x frames
  forward_input[1] = audio: batch x time
docstr_tok: ["forward_input","[","0","]","=","mel_spectrogram",":","batch","x","n_mel_channels","x","frames","forward_input","[","1","]","=","audio",":","batch","x","time"]
code: def forward(self, forward_input):
      """
      forward_input[0] = mel_spectrogram:  batch x n_mel_channels x frames
      forward_input[1] = audio: batch x time
      """
      spect, audio = forward_input
  
      #  Upsample spectrogram to size of audio
      spect = self.upsample(spect)
      assert spect.size(2) >= audio.size(1)
      if spect.size(2) > audio.size(1):
          spect = spect[:, :, : audio.size(1)]
  
      spect = spect.unfold(2, self.n_group, self.n_group).permute(
          0, 2, 1, 3
      )
      spect = spect.contiguous().view(spect.size(0), spect.size(1), -1)
      spect = spect.permute(0, 2, 1)
  
      audio = audio.unfold(1, self.n_group, self.n_group).permute(
          0, 2, 1
      )
      output_audio = []
      log_s_list = []
      log_det_W_list = []
  
      for k in range(self.n_flows):
          if k % self.n_early_every == 0 and k > 0:
              output_audio.append(audio[:, : self.n_early_size, :])
              audio = audio[:, self.n_early_size :, :]
  
          audio, log_det_W = self.convinv[k](audio)
          log_det_W_list.append(log_det_W)
  
          n_half = int(audio.size(1) / 2)
          audio_0 = audio[:, :n_half, :]
          audio_1 = audio[:, n_half:, :]
  
          output = self.WN[k]((audio_0, spect))
          log_s = output[:, n_half:, :]
          b = output[:, :n_half, :]
          audio_1 = torch.exp(log_s) * audio_1 + b
          log_s_list.append(log_s)
  
          audio = torch.cat([audio_0, audio_1], 1)
  
      output_audio.append(audio)
      return torch.cat(output_audio, 1), log_s_list, log_det_W_list
  
file_path: serve/examples/text_to_speech_synthesizer/waveglow_model.py
imports: import torch
  from torch.autograd import Variable
  import torch.nn.functional
label_desc: Use image node_id 2 for calling the WaveGlow obj's underlying member method code with example usage: obj.forward(forward_input) and returns: torch,  log_s_list,  log_det_W_list