def METHOD_NAME(
        self,
        speech: torch.Tensor,
        speech_lengths: torch.Tensor,
):
    """Frontend + Encoder.
    Args:
        speech: (Batch, Length, ...)
        speech_lengths: (Batch, )
    """
    with autocast(False):
        # 1. Extract feats
        feats, feats_lengths = self._extract_feats(speech, speech_lengths)
        # 2. Data augmentation
        if self.specaug is not None and self.training:
            feats, feats_lengths = self.specaug(feats, feats_lengths)
        # 3. Normalization for feature: e.g. Global-CMVN, Utterance-CMVN
        if self.normalize is not None:
            feats, feats_lengths = self.normalize(feats, feats_lengths)
    # Pre-encoder, e.g. used for raw input data
    if self.preencoder is not None:
        feats, feats_lengths = self.preencoder(feats, feats_lengths)
    # 4. Forward encoder
    if min(speech_lengths) == max(speech_lengths):  # for clipping, set speech_lengths as None
        speech_lengths = None
    encoder_out = self.encoder(feats, speech_lengths, mask=True, features_only=False)
    return encoder_out