def call(self, inputs, training=False):
        """
        Compute features of audio signals

        Parameters
        ----------
        inputs : tf.Tensor, shape [B, None]
            Audio signals that were resampled to sample_rate

        training : bool, optional
            Training mode, by default False

        Returns
        -------
        tf.Tensor, shape = [B, n_frames, num_feature_bins, 1] if has_channel_dim else [B, n_frames, num_feature_bins]
            Features extracted from audio signals
        """
        signals, signals_length = inputs

        if training:
            signals, signals_length = self.augmentations.signal_augment(signals, signals_length)

        if self.padding > 0:
            signals = tf.pad(signals, [[0, 0], [0, self.padding]], mode="CONSTANT", constant_values=0.0)

        signals = self.normalize_signal(signals)
        signals = self.preemphasis_signal(signals)

        if self.feature_type == FEATURE_TYPES.SPECTROGRAM:
            features = self.spectrogram(signals)
        elif self.feature_type == FEATURE_TYPES.MFCC:
            features = self.mfcc(signals)  # TODO: add option to compute delta features for mfccs
        elif self.feature_type == FEATURE_TYPES.LOG_GAMMATONE_SPECTROGRAM:
            features = self.log_gammatone_spectrogram(signals)
        else:  # default as log_mel_spectrogram
            features = self.log_mel_spectrogram(signals)

        features = self.normalize_audio_features(features)
        features = tf.expand_dims(features, axis=-1)
        features_length = tf.map_fn(
            fn=self.get_nframes,
            elems=tf.cast(signals_length, tf.int32),
            fn_output_signature=tf.TensorSpec(shape=(), dtype=tf.int32),
        )

        if training:
            features, features_length = self.augmentations.feature_augment(features, features_length)

        return features, features_length

        Compute features of audio signals

        Parameters
        ----------
        inputs : tf.Tensor, shape [B, None]
            Audio signals that were resampled to sample_rate

        training : bool, optional
            Training mode, by default False

        Returns
        -------
        tf.Tensor, shape = [B, n_frames, num_feature_bins, 1] if has_channel_dim else [B, n_frames, num_feature_bins]
            Features extracted from audio signals
        
tensorflow_asr/models/layers/feature_extraction.py