code: def _train_extract_features(self, samples: List):
      mel_features = [
          spectrogram_transform(sample[0].squeeze()).transpose(1, 0)
          for sample in samples
      ]
      features = torch.nn.utils.rnn.pad_sequence(
          mel_features, batch_first=True
      )
      features = self.train_data_pipeline(features)
      lengths = torch.tensor(
          [elem.shape[0] for elem in mel_features], dtype=torch.int32
      )
      return features, lengths
  
imports: import os
  from functools import partial
  from typing import List
  import sentencepiece
  import torch
  import torchaudio
  from common import Batch, batch_by_token_count, FunctionalModule, GlobalStatsNormalization, piecewise_linear_log, post_process_hypos, spectrogram_transform, WarmupLR
  from pytorch_lightning import LightningModule
  from torchaudio.models import emformer_rnnt_base, RNNTBeamSearch
label_desc: Use image node_id 3 for calling the TEDLIUM3RNNTModule obj's underlying member method code with example usage: obj._train_extract_features(samples) and returns: features,  lengths