class_docstr: Dataset that loads tensors via a json file containing paths to audio feature files, transcripts,
  durations (in seconds) and optional RTTM files. Each new line is a different sample. Example below:
  {"feature_filepath": "/path/to/audio_feature.pt", "text_filepath": "/path/to/audio.txt", 
  "rttm_filepath": "/path/to/audio_rttm.rttm", "duration": 23.147}
  ...
  {"feature_filepath": "/path/to/audio_feature.pt", "text": "the transcription", "offset": 301.75, "duration": 0.82, "utt":
  "utterance_id", "ctm_utt": "en_4156", "side": "A"}
  Args:
      manifest_filepath (str): Path to manifest json as described above. Can be comma-separated paths.
      parser: Str for a language specific preprocessor or a callable.
      normalize (bool): whether and where to normalize feature, must be one of [None, "post_norm", "pre_norm"]
      normalize_type (Union[str, dict]): how to normalize feature, see `nemo.collections.asr.parts.preprocessing.features.normalize_batch`
      use_rttm (bool): whether to use RTTM files if there is any, default to False
      rttm_mode (str): how to use RTTM files, must be one of ['mask', 'drop'], default to 'mask'
      feat_min_len (int): minimum length of feature when rttm_mode=deop, default to 4.
      feat_mask_val (Optional[float]): value used to mask features with RTTM files, default to None to use zero mel-spectralgram
      frame_unit_time_secs (float): time in seconds for each frame
      sample_rate (int): Sample rate to resample loaded audio to
      int_values (bool): If true, load samples as 32-bit integers. Defauts to False.
      augmentor (nemo.collections.asr.parts.perturb.AudioAugmentor): An AudioAugmentor object used to augment loaded audio
      max_duration (float): If audio exceeds this length, do not include in dataset
      min_duration (float): If audio is less than this length, do not include in dataset
      max_utts (int): Limit number of utterances
      trim (bool): whether or not to trim silence. Defaults to False
      bos_id (int): Id of beginning of sequence symbol to append if not None
      eos_id (int): Id of end of sequence symbol to append if not None
      pad_id (int): Id of pad symbol. Defaults to 0
      return_sample_id (bool): whether to return the sample_id as a part of each sample
      channel_selector (int | Iterable[int] | str): select a single channel or a subset of channels from multi-channel audio. If set to `'average'`, it performs averaging across channels. Disabled if set to `None`. Defaults to `None`. Uses zero-based indexing.
code: def __getitem__(self, index):
      sample = self.manifest_processor.collection[index]
      offset = sample.offset
  
      if offset is None:
          offset = 0
  
      features = self.featurizer.process(sample.feature_file)
  
      f, fl = features, torch.tensor(features.shape[1]).long()
  
      t, tl = self.manifest_processor.process_text_by_sample(
          sample=sample
      )
  
      # Feature normalization
      if self.normalize is None:
          if self.use_rttm and sample.rttm_file:
              f = self.process_features_with_rttm(
                  f, offset, sample.rttm_file, self.feat_mask_val
              )
      elif self.normalize == "post_norm":
          # (Optional) Masking based on RTTM file
          if self.use_rttm and sample.rttm_file:
              f = self.process_features_with_rttm(
                  f, offset, sample.rttm_file, self.feat_mask_val
              )
  
          f = self.normalize_feature(f)
      else:  # pre-norm
          f = self.normalize_feature(f)
          # (Optional) Masking based on RTTM file
          if self.use_rttm and sample.rttm_file:
              f = self.process_features_with_rttm(
                  f, offset, sample.rttm_file, self.feat_mask_val
              )
  
      if self.return_sample_id:
          output = (
              f,
              fl,
              torch.tensor(t).long(),
              torch.tensor(tl).long(),
              index,
          )
      else:
          output = (
              f,
              fl,
              torch.tensor(t).long(),
              torch.tensor(tl).long(),
          )
  
      return output
  
imports: from typing import Callable, Dict, List, Optional, Tuple, Union
  import torch
  from nemo.collections.asr.data.feature_to_label import _audio_feature_collate_fn
  from nemo.collections.asr.parts.preprocessing.feature_loader import ExternalFeatureLoader
  from nemo.collections.asr.parts.preprocessing.features import normalize_batch
  from nemo.collections.asr.parts.utils.audio_utils import ChannelSelectorType
  from nemo.collections.asr.parts.utils.vad_utils import load_speech_segments_from_rttm
  from nemo.collections.common import tokenizers
  from nemo.collections.common.parts.preprocessing import collections, parsers
  from nemo.core.classes import Dataset
  from nemo.core.neural_types import AcousticEncodedRepresentation, LabelsType, LengthsType, NeuralType
label_desc: Use image node_id 4 for calling the _FeatureTextDataset obj's underlying member method code with example usage: obj.__getitem__(index) and returns: output