code: def _step(self, batch, batch_idx, step_type):
      if batch is None:
          return None
  
      prepended_targets = batch.targets.new_empty(
          [batch.targets.size(0), batch.targets.size(1) + 1]
      )
      prepended_targets[:, 1:] = batch.targets
      prepended_targets[:, 0] = self.blank_idx
      prepended_target_lengths = batch.target_lengths + 1
      output, src_lengths, _, _ = self.model(
          batch.features,
          batch.feature_lengths,
          prepended_targets,
          prepended_target_lengths,
      )
      loss = self.loss(
          output, batch.targets, src_lengths, batch.target_lengths
      )
      self.log(
          f"Losses/{step_type}_loss", loss, on_step=True, on_epoch=True
      )
      return loss
  
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 8 for calling the TEDLIUM3RNNTModule obj's underlying member method code with example usage: obj._step(batch, batch_idx, step_type) and returns: loss, None