class_docstr: Conv-TasNet architecture introduced in
  *Conv-TasNet: Surpassing Ideal Time–Frequency Magnitude Masking for Speech Separation*
  :cite:`Luo_2019`.
  
  Note:
      This implementation corresponds to the "non-causal" setting in the paper.
  
  See Also:
      * :class:`torchaudio.pipelines.SourceSeparationBundle`: Source separation pipeline with pre-trained models.
  
  Args:
      num_sources (int, optional): The number of sources to split.
      enc_kernel_size (int, optional): The convolution kernel size of the encoder/decoder, <L>.
      enc_num_feats (int, optional): The feature dimensions passed to mask generator, <N>.
      msk_kernel_size (int, optional): The convolution kernel size of the mask generator, <P>.
      msk_num_feats (int, optional): The input/output feature dimension of conv block in the mask generator, <B, Sc>.
      msk_num_hidden_feats (int, optional): The internal feature dimension of conv block of the mask generator, <H>.
      msk_num_layers (int, optional): The number of layers in one conv block of the mask generator, <X>.
      msk_num_stacks (int, optional): The numbr of conv blocks of the mask generator, <R>.
      msk_activate (str, optional): The activation function of the mask output (Default: ``sigmoid``).
code: def __init__(
      self,
      num_sources: int = 2,
      # encoder/decoder parameters
      enc_kernel_size: int = 16,
      enc_num_feats: int = 512,
      # mask generator parameters
      msk_kernel_size: int = 3,
      msk_num_feats: int = 128,
      msk_num_hidden_feats: int = 512,
      msk_num_layers: int = 8,
      msk_num_stacks: int = 3,
      msk_activate: str = "sigmoid",
  ):
      super().__init__()
  
      self.num_sources = num_sources
      self.enc_num_feats = enc_num_feats
      self.enc_kernel_size = enc_kernel_size
      self.enc_stride = enc_kernel_size // 2
  
      self.encoder = torch.nn.Conv1d(
          in_channels=1,
          out_channels=enc_num_feats,
          kernel_size=enc_kernel_size,
          stride=self.enc_stride,
          padding=self.enc_stride,
          bias=False,
      )
      self.mask_generator = MaskGenerator(
          input_dim=enc_num_feats,
          num_sources=num_sources,
          kernel_size=msk_kernel_size,
          num_feats=msk_num_feats,
          num_hidden=msk_num_hidden_feats,
          num_layers=msk_num_layers,
          num_stacks=msk_num_stacks,
          msk_activate=msk_activate,
      )
      self.decoder = torch.nn.ConvTranspose1d(
          in_channels=enc_num_feats,
          out_channels=1,
          kernel_size=enc_kernel_size,
          stride=self.enc_stride,
          padding=self.enc_stride,
          bias=False,
      )
  
file_path: audio/src/torchaudio/models/conv_tasnet.py
imports: from typing import Optional, Tuple
  import torch
label_desc: Use image node_id 1 to create a new ConvTasNet object from inherited base classes: torch.nn with example: obj = ConvTasNet(num_sources, enc_kernel_size, enc_num_feats, msk_kernel_size, msk_num_feats, msk_num_hidden_feats, msk_num_layers, msk_num_stacks, msk_activate)