o
    i                     @   s(   d dl Z d dlmZ G dd deZdS )    N)
AbsEncoderc                       sV   e Zd ZdZdededef fddZedefdd	Zd
ej	dej	fddZ
  ZS )ConvEncoderz;Convolutional encoder for speech enhancement and separationchannelkernel_sizestridec                    s8   t    tjjd|||dd| _|| _|| _|| _d S )N   F)r   r   bias)	super__init__torchnnConv1dconv1dr   r   _output_dim)selfr   r   r   	__class__ T/home/ubuntu/.local/lib/python3.10/site-packages/espnet2/enh/encoder/conv_encoder.pyr
   	   s   


zConvEncoder.__init__returnc                 C   s   | j S )N)r   )r   r   r   r   
output_dim   s   zConvEncoder.output_diminputilensc                 C   s`   |  dks
J dt|d}| |}tjj|}|dd}|| j | j	 d }||fS )a   Forward.

        Args:
            input (torch.Tensor): mixed speech [Batch, sample]
            ilens (torch.Tensor): input lengths [Batch]
        Returns:
            feature (torch.Tensor): mixed feature after encoder [Batch, flens, channel]
           z+Currently only support single channel inputr   )
dimr   	unsqueezer   r   
functionalrelu	transposer   r   )r   r   r   featureflensr   r   r   forward   s   	
zConvEncoder.forward)__name__
__module____qualname____doc__intr
   propertyr   r   Tensorr!   __classcell__r   r   r   r   r      s    r   )r   espnet2.enh.encoder.abs_encoderr   r   r   r   r   r   <module>   s    