code: def by_name(
      cls,
      dense_model_name: str,
      quantizer_model_name: str,
      vocab_size: int,
      max_decoder_steps: int = 2000,
      denoiser_strength: float = 0.1,
  ):
      waveglow_path = CHECKPOINT_MANAGER.get_by_name("waveglow")
  
      tacotron_checkpoint_name = f"{dense_model_name}-{quantizer_model_name}-{vocab_size}-tacotron"
      tacotron_checkpoint_path = CHECKPOINT_MANAGER.get_by_name(
          tacotron_checkpoint_name
      )
  
      checkpoint_codes_name = f"{tacotron_checkpoint_name}-codes"
      tacotron_codes_path = CHECKPOINT_MANAGER.get_by_name(
          checkpoint_codes_name
      )
  
      return cls(
          tacotron_checkpoint_path,
          tacotron_codes_path,
          waveglow_path,
          max_decoder_steps,
          denoiser_strength,
      )
  
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 3 for calling the TacotronVocoder obj's underlying member method code with example usage: obj.by_name(cls, dense_model_name, quantizer_model_name, vocab_size, max_decoder_steps, denoiser_strength) and returns: cls