code: def synthesize_audio(
      units,
      model,
      tts_dataset,
      waveglow,
      denoiser,
      lab=None,
      denoiser_strength=0.0,
  ):
      quantized_units_str = " ".join(map(str, units.tolist()))
      tokens = (
          tts_dataset.get_tensor(quantized_units_str)
          .cuda()
          .unsqueeze(0)
      )
  
      if lab is not None:
          lab = torch.LongTensor(1).cuda().fill_(lab)
  
      with torch.no_grad():
          _, mel, _, ali, has_eos = model.inference(
              tokens, lab, ret_has_eos=True
          )
          mel = mel.float()
          audio = waveglow.infer(mel, sigma=0.666)
          denoised_audio = denoiser(
              audio, strength=denoiser_strength
          ).squeeze(1)
      return mel, audio, denoised_audio, has_eos
  
file_path: textlesslib/textless/vocoders/tacotron2/__init__.py
imports: import torch
  import textless.vocoders.tacotron2
  import sys
  from textless.checkpoint_manager import CHECKPOINT_MANAGER
  from .waveglow_denoiser import Denoiser
  from .model import Tacotron2
  from .tts_data import TacotronInputDataset
label_desc: Use image node_id 3 for calling a global function with example usage: synthesize_audio(units, model, tts_dataset, waveglow, denoiser, lab, denoiser_strength) and returns: mel,  audio,  denoised_audio,  has_eos