code: def __getitem__(self, index):
      index, source, target, speaker_id, _, _, _ = super().__getitem__(
          index
      )
      if target[-1].item() == self.tgt_dict.eos_index:
          target = target[:-1]
  
      fpu = source.size(0) / target.size(0)  # frame-per-unit
      fps = self.n_frames_per_step
      assert (
          self.ref_fpu == -1
          or abs((fpu * fps - self.ref_fpu) / self.ref_fpu) < 0.1
      ), f"{fpu*fps} != {self.ref_fpu}"
  
      # only chunk training split
      if self.is_train_split and self.do_chunk and self.chunk_size > 0:
          lang = target[: int(self.data_cfg.prepend_tgt_lang_tag)]
          text = target[int(self.data_cfg.prepend_tgt_lang_tag) :]
          size = len(text)
          chunk_size = min(self.chunk_size, size)
          chunk_start = np.random.randint(size - chunk_size + 1)
          text = text[chunk_start : chunk_start + chunk_size]
          target = torch.cat((lang, text), 0)
  
          f_size = int(np.floor(chunk_size * fpu))
          f_start = int(np.floor(chunk_start * fpu))
          assert f_size > 0
          source = source[f_start : f_start + f_size, :]
  
      if self.dedup:
          target = torch.unique_consecutive(target)
  
      if self.add_eos:
          eos_idx = self.tgt_dict.eos_index
          target = torch.cat((target, torch.LongTensor([eos_idx])), 0)
  
      return index, source, target, speaker_id
  
file_path: fairseq/fairseq/data/audio/frm_text_to_speech_dataset.py
imports: import csv
  import logging
  import os.path
  from typing import List, Optional
  import numpy
  import torch
  from fairseq.data import Dictionary
  from fairseq.data.audio.speech_to_text_dataset import S2TDataConfig
  from fairseq.data.audio.text_to_speech_dataset import TextToSpeechDataset, TextToSpeechDatasetCreator
label_desc: Use image node_id 2 for calling the FrmTextToSpeechDataset obj's underlying member method code with example usage: obj.__getitem__(index) and returns: index,  source,  target,  speaker_id