
    PiN                         d dl Z d dlZd dlmZ d dlmc mZ ddlmZ d Z G d dej	                  Z
 G d d	ej	                  Z G d
 de          Z G d de          ZdS )    N)nn   )Conv1dc                     |dk    rIt          |d|dz            }t          j        t          j        |                                 fi |fi |S | S )N   r   )kernel_sizestridepadding)dictF
avg_pool1d
max_pool1dabs)xr   	pool_argss      g/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/neucodec/tconv/base.py
trend_poolr   	   s^    Q[KSTDTUUU	|AL>>I>>LL)LLL     c                   &     e Zd Zd fd	Zd Z xZS )	TrendPool   c                 V    t                                                       || _        d S N)super__init__r   )selfr   	__class__s     r   r   zTrendPool.__init__   s'    &r   c                 ,    t          || j                  S r   )r   r   r   r   s     r   forwardzTrendPool.forward   s    !T-...r   )r   __name__
__module____qualname__r   r    __classcell__r   s   @r   r   r      sL        ' ' ' ' ' '/ / / / / / /r   r   c                   ,     e Zd Z	 	 	 d fd	Zd Z xZS )
FirstBlock   r*   r*   r*   r      r   	   r   c                    t                                                       |t          |          z  dk    sJ |t          |          z  }g }t          ||          D ]_\  }}||z  dz   }	|dz
  |	z  dz  }
|                    t          j        t          |          t          d|||	|
                               `t          j	        |          | _
        d S )Nr   r   r   )r   dilationr
   )r   r   lenzipappendr   
Sequentialr   r   
ModuleListblocks)r   
target_dimconv_kernelspool_kernelsdilation_rateeach_dimr5   conv_kernelpool_kernelconv_dilationconv_paddingr   s              r   r   zFirstBlock.__init__   s     	C---2222\!2!22(+L,(G(G 	 	$K'=81<M'!O}<ALMMk** $/!. ,  	 	    mF++r   c                 R    t          j        fd| j        D             d          S )Nc                 &    g | ]} |          S  rA   ).0blockr   s     r   
<listcomp>z&FirstBlock.forward.<locals>.<listcomp>9   s!    <<<u%%((<<<r   r   )dim)torchcatr5   r   s    `r   r    zFirstBlock.forward8   s/    y<<<<<<<!DDDDr   )r)   r+   r   r!   r&   s   @r   r(   r(      s^         "!, , , , , ,8E E E E E E Er   r(   c                   (     e Zd Z fdZ fdZ xZS )EnhanceBlockc                     t                                          ddd           || _        t          j        t          j        dd          t          j        ddd                    | _        d S 	N   r)   r+   )r7   r8   T)affiner   )r   r   r   rE   r   r3   InstanceNorm1dr   merge_layerr   rE   r   s     r   r   zEnhanceBlock.__init__=   sj    LQQQ=a---Ia***
 
r   c                     t          j        |d| j                  }t                                          |          }|                     |          }t          j        |d| j                  }|S )Nzb c t -> (b c) 1 t)cz(b c) 1 t -> b c t)einops	rearrangerE   r   r    rP   )r   r   yr   s      r   r    zEnhanceBlock.forwardF   sd    Q 4AAAGGOOAQQ 4AAAr   r!   r&   s   @r   rI   rI   <   sQ        
 
 
 
 
        r   rI   c                   (     e Zd Z fdZ fdZ xZS )SimpleEnhanceBlockc                     t                                          ddd           || _        t          j        t          j        dd          t          j        d| j        d                    | _        d S rK   rN   rQ   s     r   r   zSimpleEnhanceBlock.__init__O   sl    LQQQ=a---Iaq111
 
r   c                     |d d d dd d f         }t                                          |          }|                     |          }|||z  z   S )Nr   )r   r    rP   )r   r   xiyirV   r   s        r   r    zSimpleEnhanceBlock.forwardX   sT    qqq"1"aaax[WW__R  R  1q5yr   r!   r&   s   @r   rX   rX   N   sQ        
 
 
 
 
        r   rX   )rT   rF   r   torch.nn.functional
functionalr   distill_layersr   r   Moduler   r(   rI   rX   rA   r   r   <module>ra      s$                    # # # # # #  / / / / /	 / / /E E E E E E E EB    :   $         r   