class_docstr: Base class for encoder decoder CTC-based models.
docstr: Forward pass of the model.
  
  Args:
      input_signal: Tensor that represents a batch of raw audio signals,
          of shape [B, T]. T here represents timesteps, with 1 second of audio represented as
          `self.sample_rate` number of floating point values.
      input_signal_length: Vector of length B, that contains the individual lengths of the audio
          sequences.
      processed_signal: Tensor that represents a batch of processed audio signals,
          of shape (B, D, T) that has undergone processing via some DALI preprocessor.
      processed_signal_length: Vector of length B, that contains the individual lengths of the
          processed audio sequences.
  
  Returns:
      A tuple of 3 elements -
      1) The log probabilities tensor of shape [B, T, D].
      2) The lengths of the acoustic sequence after propagation through the encoder, of shape [B].
      3) The greedy token predictions of the model of shape [B, T] (via argmax)
docstr_tok: ["Forward","pass","of","the","model",".","Args",":","input_signal",":","Tensor","that","represents","a","batch","of","raw","audio","signals",",","of","shape","[","B",",","T","]",".","T","here","represents","timesteps",",","with","1","second","of","audio","represented","as","`","self.sample_rate","`","number","of","floating","point","values",".","input_signal_length",":","Vector","of","length","B",",","that","contains","the","individual","lengths","of","the","audio","sequences",".","processed_signal",":","Tensor","that","represents","a","batch","of","processed","audio","signals",",","of","shape","(","B",",","D",",","T",")","that","has","undergone","processing","via","some","DALI","preprocessor",".","processed_signal_length",":","Vector","of","length","B",",","that","contains","the","individual","lengths","of","the","processed","audio","sequences",".","Returns",":","A","tuple","of","3","elements","-","1",")","The","log","probabilities","tensor","of","shape","[","B",",","T",",","D","]",".","2",")","The","lengths","of","the","acoustic","sequence","after","propagation","through","the","encoder",",","of","shape","[","B","]",".","3",")","The","greedy","token","predictions","of","the","model","of","shape","[","B",",","T","]","(","via","argmax",")"]
code: def forward(
      self,
      input_signal=None,
      input_signal_length=None,
      processed_signal=None,
      processed_signal_length=None,
  ):
      """
      Forward pass of the model.
  
      Args:
          input_signal: Tensor that represents a batch of raw audio signals,
              of shape [B, T]. T here represents timesteps, with 1 second of audio represented as
              `self.sample_rate` number of floating point values.
          input_signal_length: Vector of length B, that contains the individual lengths of the audio
              sequences.
          processed_signal: Tensor that represents a batch of processed audio signals,
              of shape (B, D, T) that has undergone processing via some DALI preprocessor.
          processed_signal_length: Vector of length B, that contains the individual lengths of the
              processed audio sequences.
  
      Returns:
          A tuple of 3 elements -
          1) The log probabilities tensor of shape [B, T, D].
          2) The lengths of the acoustic sequence after propagation through the encoder, of shape [B].
          3) The greedy token predictions of the model of shape [B, T] (via argmax)
      """
      has_input_signal = (
          input_signal is not None and input_signal_length is not None
      )
      has_processed_signal = (
          processed_signal is not None
          and processed_signal_length is not None
      )
      if (has_input_signal ^ has_processed_signal) == False:
          raise ValueError(
              f"{self} Arguments ``input_signal`` and ``input_signal_length`` are mutually exclusive "
              " with ``processed_signal`` and ``processed_signal_len`` arguments."
          )
  
      if not has_processed_signal:
          processed_signal, processed_signal_length = self.preprocessor(
              input_signal=input_signal,
              length=input_signal_length,
          )
  
      if self.spec_augmentation is not None and self.training:
          processed_signal = self.spec_augmentation(
              input_spec=processed_signal,
              length=processed_signal_length,
          )
  
      encoder_output = self.encoder(
          audio_signal=processed_signal, length=processed_signal_length
      )
      encoded = encoder_output[0]
      encoded_len = encoder_output[1]
      log_probs = self.decoder(encoder_output=encoded)
      greedy_predictions = log_probs.argmax(dim=-1, keepdim=False)
  
      return (
          log_probs,
          encoded_len,
          greedy_predictions,
      )
  
imports: import copy
  import json
  import os
  import tempfile
  from math import ceil
  from typing import Dict, List, Optional, Union
  import torch
  from omegaconf import DictConfig, OmegaConf, open_dict
  from pytorch_lightning import Trainer
  from tqdm.auto import tqdm
  from nemo.collections.asr.data import audio_to_text_dataset
  from nemo.collections.asr.data.audio_to_text_dali import AudioToCharDALIDataset, DALIOutputs
  from nemo.collections.asr.data.audio_to_text_lhotse import LhotseSpeechToTextBpeDataset
  from nemo.collections.asr.losses.ctc import CTCLoss
  from nemo.collections.asr.metrics.wer import WER
  from nemo.collections.asr.models.asr_model import ASRModel, ExportableEncDecModel
  from nemo.collections.asr.parts.mixins import ASRModuleMixin, InterCTCMixin
  from nemo.collections.asr.parts.submodules.ctc_decoding import CTCDecoding, CTCDecodingConfig
  from nemo.collections.asr.parts.utils.audio_utils import ChannelSelectorType
  from nemo.collections.common.data.lhotse import get_lhotse_dataloader_from_config
  from nemo.collections.common.parts.preprocessing.parsers import make_parser
  from nemo.core.classes.common import PretrainedModelInfo, typecheck
  from nemo.core.classes.mixins import AccessMixin
  from nemo.core.neural_types import AudioSignal, LabelsType, LengthsType, LogprobsType, NeuralType, SpectrogramType
  from nemo.utils import logging
label_desc: Use image node_id 11 for calling the EncDecCTCModel obj's underlying member method code with example usage: obj.forward(input_signal, input_signal_length, processed_signal, processed_signal_length) and returns: log_probs,  encoded_len,  greedy_predictions