class_docstr: Convolutional encoder for speech enhancement and separation
docstr: Forward.
  
  Args:
      input (torch.Tensor): mixed speech [Batch, sample]
      ilens (torch.Tensor): input lengths [Batch]
      fs (int): sampling rate in Hz (Not used)
  Returns:
      feature (torch.Tensor): mixed feature after encoder [Batch, flens, channel]
docstr_tok: ["Forward",".","Args",":","input","(","torch.Tensor",")",":","mixed","speech","[","Batch",",","sample","]","ilens","(","torch.Tensor",")",":","input","lengths","[","Batch","]","fs","(","int",")",":","sampling","rate","in","Hz","(","Not","used",")","Returns",":","feature","(","torch.Tensor",")",":","mixed","feature","after","encoder","[","Batch",",","flens",",","channel","]"]
code: def forward(
      self, input: torch.Tensor, ilens: torch.Tensor, fs: int = None
  ):
      """Forward.
  
      Args:
          input (torch.Tensor): mixed speech [Batch, sample]
          ilens (torch.Tensor): input lengths [Batch]
          fs (int): sampling rate in Hz (Not used)
      Returns:
          feature (torch.Tensor): mixed feature after encoder [Batch, flens, channel]
      """
      assert (
          input.dim() == 2
      ), "Currently only support single channel input"
  
      input = torch.unsqueeze(input, 1)
  
      feature = self.conv1d(input)
      feature = torch.nn.functional.relu(feature)
      feature = feature.transpose(1, 2)
  
      flens = (
          torch.div(
              ilens - self.kernel_size,
              self.stride,
              rounding_mode="trunc",
          )
          + 1
      )
  
      return feature, flens
  
file_path: espnet/espnet2/enh/encoder/conv_encoder.py
imports: import math
  import torch
  from espnet2.enh.encoder.abs_encoder import AbsEncoder
label_desc: Use image node_id 3 for calling the ConvEncoder obj's underlying member method code with example usage: obj.forward(input, ilens, fs) and returns: feature,  flens