class_docstr: Extracts features from log-mel filterbanks and embeds them in a latent
  space as described in Section 2.1 of
  :cite:t:`https://doi.org/10.48550/arxiv.1911.08460`.
class_docstr_tok: ["Extracts","features","from","log-mel","filterbanks","and","embeds","them","in","a","latent","space","as","described","in","Section","2.1","of",":","cite",":","t",":","`","https",":","\/\/doi.org\/10.48550\/arxiv.1911.08460","`","."]
docstr: See the base :meth:`SequenceFeatureExtractor.forward`.
  
  :param seqs:
      The input log-mel filterbanks. *Shape:* :math:`(N,S,C)`, where
      :math:`N` is the batch size, :math:`S` is the number of frames, and
      :math:`C` is the number of channels.
docstr_tok: ["See","the","base",":","meth",":","`","SequenceFeatureExtractor.forward","`",".",":","param","seqs",":","The","input","log-mel","filterbanks",".","*","Shape",":","*",":","math",":","`","(","N",",","S",",","C",")","`",",","where",":","math",":","`","N","`","is","the","batch","size",",",":","math",":","`","S","`","is","the","number","of","frames",",","and",":","math",":","`","C","`","is","the","number","of","channels","."]
code: def forward(
      self, seqs: Tensor, padding_mask: Optional[PaddingMask]
  ) -> Tuple[Tensor, Optional[PaddingMask]]:
      """See the base :meth:`SequenceFeatureExtractor.forward`.
  
      :param seqs:
          The input log-mel filterbanks. *Shape:* :math:`(N,S,C)`, where
          :math:`N` is the batch size, :math:`S` is the number of frames, and
          :math:`C` is the number of channels.
      """
      # Apply the convolution along the temporal dimension (i.e. along the
      # sequence).
      # (N, S, C) -> (N, C, S)
      seqs = seqs.transpose(1, 2)
  
      # (N, C, S) -> (N, F, S_out)
      features = self.layers(seqs)
  
      # (N, F, S_out) -> (N, S_out, F)
      features = features.transpose(1, 2)
  
      # Since we contracted the temporal dimension, we should re-compute
      # the sequence lengths.
      if padding_mask is not None:
          seq_lens = self._contract_seq_lens(padding_mask.seq_lens)
  
          padding_mask = PaddingMask(
              seq_lens, batch_seq_len=features.size(1)
          )
  
      return features, padding_mask
  
file_path: fairseq2/src/fairseq2/models/s2t_transformer/feature_extractor.py
imports: from typing import Final, Optional, Sequence, Tuple, final
  from torch import Tensor
  from torch.nn import GLU, Conv1d, Sequential
  from fairseq2.models.feature_extractor import SequenceFeatureExtractor
  from fairseq2.nn.padding import PaddingMask
  from fairseq2.typing import DataType, Device, finaloverride
label_desc: Use image node_id 2 for calling the Conv1dFbankSubsampler obj's underlying member method code with example usage: obj.forward(seqs, padding_mask) and returns: features,  padding_mask