class_docstr: singing_Tacotron module for end-to-end singing-voice-synthesis.
  
  This is a module of Spectrogram prediction network in Singing Tacotron
  described in `Singing-Tacotron: Global Duration Control Attention and
  Dynamic Filter for End-to-end Singing Voice Synthesis`_,
  which learn accurate alignment information automatically.
  
  .. _`Singing-Tacotron: Global Duration Control Attention and Dynamic
  Filter for End-to-end Singing Voice Synthesis`:
     https://arxiv.org/pdf/2202.07907v1.pdf
code: def _forward(
      self,
      xs: torch.Tensor,
      con: torch.Tensor,
      dur: torch.Tensor,
      ilens: torch.Tensor,
      ys: torch.Tensor,
      olens: torch.Tensor,
      spembs: torch.Tensor,
      sids: torch.Tensor,
      lids: torch.Tensor,
  ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
      if self.atype == "GDCA":
          hs, hlens = self.enc(con, ilens)  # hs: (B, seq_len, emb_dim)
          trans_token = self.enc_duration(dur)  # (B, seq_len, 1)
      else:
          hs, hlens = self.enc(con, ilens)  # hs: (B, seq_len, emb_dim)
          hs_dur, hlens_dur = self.dur_enc(dur, ilens)
          # dense_dur = self.dur_dense(dur)
          hs += hs_dur
          trans_token = None
      if self.use_gst:
          style_embs = self.gst(ys)
          hs = hs + style_embs.unsqueeze(1)
      if self.spks is not None:
          sid_embs = self.sid_emb(sids.view(-1))
          hs = hs + sid_embs.unsqueeze(1)
      if self.langs is not None:
          lid_embs = self.lid_emb(lids.view(-1))
          hs = hs + lid_embs.unsqueeze(1)
      if self.spk_embed_dim is not None:
          hs = self._integrate_with_spk_embed(hs, spembs)
      return self.dec(hs, hlens, trans_token, ys)
  
imports: import logging
  from typing import Dict, Optional, Sequence, Tuple
  import six
  import torch
  import torch.nn.functional
  from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence
  from typeguard import check_argument_types
  from espnet2.svs.abs_svs import AbsSVS
  from espnet2.svs.singing_tacotron.decoder import Decoder
  from espnet2.svs.singing_tacotron.encoder import Duration_Encoder, Encoder
  from espnet2.torch_utils.device_funcs import force_gatherable
  from espnet2.tts.gst.style_encoder import StyleEncoder
  from espnet.nets.pytorch_backend.e2e_tts_tacotron2 import GuidedAttentionLoss, Tacotron2Loss
  from espnet.nets.pytorch_backend.nets_utils import make_pad_mask
  from espnet.nets.pytorch_backend.rnn.attentions import AttForward, AttForwardTA, AttLoc, GDCAttLoc
label_desc: Use image node_id 3 for calling the singing_tacotron obj's underlying member method code with example usage: obj._forward(xs, con, dur, ilens, ys, olens, spembs, sids, lids) and returns: self