code: def synthesize_audio(
      model, waveglow, denoiser, inp, lab=None, strength=0.0
  ):
      assert inp.size(0) == 1
      if lab is not None:
          lab = torch.LongTensor(1).fill_(lab)
  
      with torch.inference_mode():
          model_device = next(model.parameters()).device
          _, mel, _, ali, has_eos = model.inference(
              inp.to(model_device),
              lab.to(model_device) if lab is not None else None,
              ret_has_eos=True,
          )
          aud = waveglow.infer(mel.float(), sigma=0.666)
          aud_dn = denoiser(aud.half(), strength=strength).squeeze(1)
      return mel, aud, aud_dn, has_eos
  
file_path: textlesslib/textless/vocoders/tacotron2/vocoder.py
imports: import torch.nn
  import torch
  from .tts_data import TacotronInputDataset
  from .model import Tacotron2
  from .glow import WaveGlow
  from .waveglow_denoiser import Denoiser
  from textless.checkpoint_manager import CHECKPOINT_MANAGER
  from typing import Union
label_desc: Use image node_id 1 for calling a global function with example usage: synthesize_audio(model, waveglow, denoiser, inp, lab, strength) and returns: mel,  aud,  aud_dn,  has_eos