def METHOD_NAME(
        self,
        source: torch.Tensor,
        padding_mask: Optional[torch.Tensor] = None,
        fbank_mean: float = 15.41663,
        fbank_std: float = 6.55582,
):
    fbank = self.preprocess(source, fbank_mean=fbank_mean, fbank_std=fbank_std)
    if padding_mask is not None:
        padding_mask = self.forward_padding_mask(fbank, padding_mask)
    fbank = fbank.unsqueeze(1)
    features = self.patch_embedding(fbank)
    features = features.reshape(features.shape[0], features.shape[1], -1)
    features = features.transpose(1, 2)
    features = self.layer_norm(features)
    if padding_mask is not None:
        padding_mask = self.forward_padding_mask(features, padding_mask)
    if self.post_extract_proj is not None:
        features = self.post_extract_proj(features)
    x = self.dropout_input(features)
    x, layer_results = self.encoder(
        x,
        padding_mask=padding_mask,
    )
    quantize_input = self.quantize_layer(x)
    quantize_feature, embed_loss, embed_ind = self.quantize(quantize_input)
    return embed_ind