class_docstr: Based on Transformer decoder, with support to decoding stacked units
code: def __init__(
      self,
      args,
      dictionary,
      embed_tokens,
      no_encoder_attn=False,
      output_projection=None,
  ):
      super().__init__(
          args,
          dictionary,
          embed_tokens,
          no_encoder_attn,
          output_projection,
      )
      self.n_frames_per_step = args.n_frames_per_step
  
      self.out_proj_n_frames = (
          Linear(
              self.output_embed_dim,
              self.output_embed_dim * self.n_frames_per_step,
              bias=False,
          )
          if self.n_frames_per_step > 1
          else None
      )
  
imports: import logging
  from pathlib import Path
  from typing import Any, Dict, List, Optional
  import torch
  from torch import Tensor
  from fairseq import checkpoint_utils, utils
  from fairseq.models import FairseqEncoderDecoderModel, FairseqEncoderModel, FairseqLanguageModel, register_model, register_model_architecture
  from fairseq.models.speech_to_speech.modules.ctc_decoder import CTCDecoder
  from fairseq.models.speech_to_speech.modules.stacked_embedding import StackedEmbedding
  from fairseq.models.speech_to_text import S2TTransformerEncoder
  from fairseq.models.text_to_speech import TTSTransformerDecoder
  from fairseq.models.transformer import Linear, TransformerDecoder, TransformerModelBase
label_desc: Use image node_id 1 to create a new TransformerUnitDecoder object from inherited base classes: TransformerDecoder with example: obj = TransformerUnitDecoder(args, dictionary, embed_tokens, no_encoder_attn, output_projection)