class_docstr: Tacotron2 as in https://arxiv.org/abs/1712.05884
  
  It's an autoregressive encoder-attention-decoder-postnet architecture.
  
  Args:
      num_chars (int): number of input characters to define the size of embedding layer.
      num_speakers (int): number of speakers in the dataset. >1 enables multi-speaker training and model learns speaker embeddings.
      r (int): initial model reduction rate.
      postnet_output_dim (int, optional): postnet output channels. Defaults to 80.
      decoder_output_dim (int, optional): decoder output channels. Defaults to 80.
      attn_type (str, optional): attention type. Check ```TTS.tts.layers.common_layers.init_attn```. Defaults to 'original'.
      attn_win (bool, optional): enable/disable attention windowing.
          It especially useful at inference to keep attention alignment diagonal. Defaults to False.
      attn_norm (str, optional): Attention normalization method. "sigmoid" or "softmax". Defaults to "softmax".
      prenet_type (str, optional): prenet type for the decoder. Defaults to "original".
      prenet_dropout (bool, optional): prenet dropout rate. Defaults to True.
      forward_attn (bool, optional): enable/disable forward attention.
          It is only valid if ```attn_type``` is ```original```.  Defaults to False.
      trans_agent (bool, optional): enable/disable transition agent in forward attention. Defaults to False.
      forward_attn_mask (bool, optional): enable/disable extra masking over forward attention. Defaults to False.
      location_attn (bool, optional): enable/disable location sensitive attention.
          It is only valid if ```attn_type``` is ```original```. Defaults to True.
      attn_K (int, optional): Number of attention heads for GMM attention. Defaults to 5.
      separate_stopnet (bool, optional): enable/disable separate stopnet training without only gradient
          flow from stopnet to the rest of the model.  Defaults to True.
      bidirectional_decoder (bool, optional): enable/disable bidirectional decoding. Defaults to False.
      double_decoder_consistency (bool, optional): enable/disable double decoder consistency. Defaults to False.
      ddc_r (int, optional): reduction rate for the coarse decoder of double decoder consistency. Defaults to None.
      encoder_in_features (int, optional): input channels for the encoder. Defaults to 512.
      decoder_in_features (int, optional): input channels for the decoder. Defaults to 512.
      speaker_embedding_dim (int, optional): external speaker conditioning vector channels. Defaults to None.
      gst (bool, optional): enable/disable global style token learning. Defaults to False.
      gst_embedding_dim (int, optional): size of channels for GST vectors. Defaults to 512.
      gst_num_heads (int, optional): number of attention heads for GST. Defaults to 4.
      gst_style_tokens (int, optional): number of GST tokens. Defaults to 10.
      gst_use_speaker_embedding (bool, optional): enable/disable inputing speaker embedding to GST. Defaults to False.
code: def inference(
      self,
      text,
      speaker_ids=None,
      style_mel=None,
      speaker_embeddings=None,
  ):
      embedded_inputs = self.embedding(text).transpose(1, 2)
      encoder_outputs = self.encoder.inference(embedded_inputs)
  
      if self.gst:
          # B x gst_dim
          encoder_outputs = self.compute_gst(
              encoder_outputs,
              style_mel,
              speaker_embeddings
              if self.gst_use_speaker_embedding
              else None,
          )
      if self.num_speakers > 1:
          if not self.embeddings_per_sample:
              speaker_embeddings = self.speaker_embedding(speaker_ids)[
                  :, None
              ]
          encoder_outputs = self._concat_speaker_embedding(
              encoder_outputs, speaker_embeddings
          )
  
      decoder_outputs, alignments, stop_tokens = self.decoder.inference(
          encoder_outputs
      )
      postnet_outputs = self.postnet(decoder_outputs)
      postnet_outputs = decoder_outputs + postnet_outputs
      decoder_outputs, postnet_outputs, alignments = self.shape_outputs(
          decoder_outputs, postnet_outputs, alignments
      )
      return decoder_outputs, postnet_outputs, alignments, stop_tokens
  
file_path: TTS/TTS/tts/models/tacotron2.py
imports: import torch
  from torch import nn
  from TTS.tts.layers.gst_layers import GST
  from TTS.tts.layers.tacotron2 import Decoder, Encoder, Postnet
  from TTS.tts.models.tacotron_abstract import TacotronAbstract
label_desc: Use image node_id 4 for calling the Tacotron2 obj's underlying member method code with example usage: obj.inference(text, speaker_ids, style_mel, speaker_embeddings) and returns: decoder_outputs,  postnet_outputs,  alignments,  stop_tokens