code: def forward(
      self,
      prev_output_tokens,
      encoder_out=None,
      incremental_state=None,
      target_lengths=None,
      speaker=None,
      **kwargs,
  ):
      x, extra = self.extract_features(
          prev_output_tokens,
          encoder_out=encoder_out,
          incremental_state=incremental_state,
          target_lengths=target_lengths,
          speaker=speaker,
          **kwargs,
      )
      attn = extra["attn"]
      feat_out = self.feat_proj(x)
      bsz, seq_len, _ = x.size()
      eos_out = self.eos_proj(x)
      post_feat_out = feat_out + self.postnet(feat_out)
      return (
          post_feat_out,
          eos_out,
          {
              "attn": attn,
              "feature_out": feat_out,
              "inner_states": extra["inner_states"],
          },
      )
  
imports: import logging
  from typing import List, Optional
  import torch
  from torch import nn
  from fairseq import utils
  from fairseq.data.data_utils import lengths_to_padding_mask
  from fairseq.models import FairseqEncoder, FairseqEncoderDecoderModel, FairseqIncrementalDecoder, register_model, register_model_architecture
  from fairseq.models.text_to_speech.hub_interface import TTSHubInterface
  from fairseq.models.text_to_speech.tacotron2 import Postnet, Prenet
  from fairseq.modules import FairseqDropout, LayerNorm, PositionalEmbedding, TransformerDecoderLayer, TransformerEncoderLayer
label_desc: Use image node_id 3 for calling the TTSTransformerDecoder obj's underlying member method code with example usage: obj.forward(prev_output_tokens, encoder_out, incremental_state, target_lengths, speaker) and returns: post_feat_out,  eos_out,  dict