class_docstr: Sinc Convolution.
  
  This module performs a convolution using Sinc filters in time domain as kernel.
  Sinc filters function as band passes in spectral domain.
  The filtering is done as a convolution in time domain, and no transformation
  to spectral domain is necessary.
  
  This implementation of the Sinc convolution is heavily inspired
  by Ravanelli et al. https://github.com/mravanelli/SincNet,
  and adapted for the ESpnet toolkit.
  Combine Sinc convolutions with a log compression activation function, as in:
  https://arxiv.org/abs/2010.07597
  
  Notes:
  Currently, the same filters are applied to all input channels.
  The windowing function is applied on the kernel to obtained a smoother filter,
  and not on the input values, which is different to traditional ASR.
class_docstr_tok: ["Sinc","Convolution",".","This","module","performs","a","convolution","using","Sinc","filters","in","time","domain","as","kernel",".","Sinc","filters","function","as","band","passes","in","spectral","domain",".","The","filtering","is","done","as","a","convolution","in","time","domain",",","and","no","transformation","to","spectral","domain","is","necessary",".","This","implementation","of","the","Sinc","convolution","is","heavily","inspired","by","Ravanelli","et","al",".","https",":","\/\/github.com\/mravanelli\/SincNet",",","and","adapted","for","the","ESpnet","toolkit",".","Combine","Sinc","convolutions","with","a","log","compression","activation","function",",","as","in",":","https",":","\/\/arxiv.org\/abs\/2010.07597","Notes",":","Currently",",","the","same","filters","are","applied","to","all","input","channels",".","The","windowing","function","is","applied","on","the","kernel","to","obtained","a","smoother","filter",",","and","not","on","the","input","values",",","which","is","different","to","traditional","ASR","."]
docstr: Sinc convolution forward function.
  
  Args:
      xs: Batch in form of torch.Tensor (B, C_in, D_in).
  
  Returns:
      xs: Batch in form of torch.Tensor (B, C_out, D_out).
docstr_tok: ["Sinc","convolution","forward","function",".","Args",":","xs",":","Batch","in","form","of","torch.Tensor","(","B",",","C_in",",","D_in",")",".","Returns",":","xs",":","Batch","in","form","of","torch.Tensor","(","B",",","C_out",",","D_out",")","."]
code: def forward(self, xs: torch.Tensor) -> torch.Tensor:
      """Sinc convolution forward function.
  
      Args:
          xs: Batch in form of torch.Tensor (B, C_in, D_in).
  
      Returns:
          xs: Batch in form of torch.Tensor (B, C_out, D_out).
      """
      self._create_filters(xs.device)
      xs = torch.nn.functional.conv1d(
          xs,
          self.sinc_filters,
          padding=self.padding,
          stride=self.stride,
          dilation=self.dilation,
          groups=self.in_channels,
      )
      return xs
  
imports: import math
  from typing import Union
  import torch
  from typeguard import check_argument_types
label_desc: Use image node_id 7 for calling the SincConv obj's underlying member method code with example usage: obj.forward(xs) and returns: xs