
    9i;                         S SK rS SKJr  S SKJs  Jr   " S S\R                  5      r " S S\R                  5      r	 " S S\R                  5      r
 " S S	\R                  5      rg)
    Nc                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )UniDeepFsmn   c           	        > [         [        U ]  5         Xl        X l        Uc  g X0l        X@l        [        R                  " X5      U l	        [        R                  " XBSS9U l
        [        R                  " UX#U-   S-
  S/SS/USS9U l        g )NFbias   groupsr   )superr   __init__	input_dim
output_dimlorderhidden_sizennLinearlinearprojectConv2dconv1selfr   r   r   r   	__class__s        j/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/audio/separation/m2/fsmn.pyr   UniDeepFsmn.__init__
   s    k4)+"$>&ii	7yyuEYY&1,a01a&	
    c                    [         R                  " U R                  U5      5      nU R                  U5      n[        R
                  " US5      nUR                  SSSS5      n[         R                  " USSU R                  S-
  U R                  S-
  /5      nXPR                  U5      -   nUR                  SSSS5      nXR                  5       -   $ Nr	   r         )Frelur   r   th	unsqueezepermutepadr   r   squeeze)	r   inputf1p1xx_peryoutout1s	            r   forwardUniDeepFsmn.forward   s    VVDKK&'\\"LLQ		!Q1%EE%!QaqABjjm#{{1aA&||~%%r   )r   r   r   r   r   r   r   NN__name__
__module____qualname____firstlineno__r   r1   __static_attributes____classcell__r   s   @r   r   r      s    "& &r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )UniDeepFsmnDual&   c           	      n  > [         [        U ]  5         Xl        X l        Uc  g X0l        X@l        [        R                  " X5      U l	        [        R                  " XBSS9U l
        [        R                  " UX#U-   S-
  S/SS/USS9U l        [        R                  " UX#U-   S-
  S/SS/US-  SS9U l        g )NFr   r	   r
      )r   r=   r   r   r   r   r   r   r   r   r   r   r   conv2r   s        r   r   UniDeepFsmnDual.__init__(   s    ot-/"$>&ii	7yyuEYY&1,a01a&	

 YY&1,a01a&?	
r   c                 0   [         R                  " U R                  U5      5      nU R                  U5      n[        R
                  " US5      nUR                  SSSS5      n[         R                  " USSU R                  S-
  U R                  S-
  /5      nXPR                  U5      -   n[         R                  " USSU R                  S-
  U R                  S-
  /5      nXpR                  U5      -   n	U	R                  SSSS5      n
XR                  5       -   $ r   )r"   r#   r   r   r$   r%   r&   r'   r   r   rA   r(   )r   r)   r*   r+   r,   r-   r.   	conv1_outzr/   r0   s              r   r1   UniDeepFsmnDual.forward>   s    VVDKK&'\\"LLQ		!Q1%EE%!QaqABJJqM)	EE)aDKK!OT[[1_EF**Q-'{{1aA&||~%%r   )r   rA   r   r   r   r   r   r   r3   r4   r;   s   @r   r=   r=   &   s    ,& &r   r=   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )DilatedDenseNetL   c                 0  > [         [        U ]  5         Xl        X0l        [
        R                  " SSS9U l        US-  S-
  U l        U R                  S4U l	        [        U R                  5       GH#  nSU-  nX%S-
  US-
  -  -   S-
  n[        U SR                  US-   5      [
        R                  " SSXf4SS95        [        U SR                  US-   5      [
        R                  " U R                  US-   -  U R                  U R                  US4U R                  S	S
95        [        U SR                  US-   5      [
        R                  " USS95        [        U SR                  US-   5      [
        R                  " U R                  5      5        GM&     g )N)r	   r	   r	   r   g        )valuer!   r	   pad{}r   conv{}F)kernel_sizedilationr   r   norm{}T)affineprelu{})r   rH   r   depthin_channelsr   ConstantPad2dr'   twidthrN   rangesetattrformatr   InstanceNorm2dPReLU)r   rS   r   rT   idil
pad_lengthr   s          r   r   DilatedDenseNet.__init__N   si   ot-/
&##L;qj1n KK+tzz"AQ$C7vz"::Q>JD'..Q/$$aJ%C2NPhooa!e,		$$A.$$ $ 0 0!1X++ ! D(//!a%0%%k$?AD)**1q51288D<L<L3MN! #r   c                    Un[        U R                  5       H  n[        U SR                  US-   5      5      " U5      n[        U SR                  US-   5      5      " U5      n[        U SR                  US-   5      5      " U5      n[        U SR                  US-   5      5      " U5      n[        R
                  " XB/SS9nM     W$ )NrL   r	   rM   rP   rR   )dim)rW   rS   getattrrY   r$   cat)r   r,   skipr\   r/   s        r   r1   DilatedDenseNet.forwardg   s    tzz"A$q1u 56t<C$A 67<C$A 67<C$	 0 0Q 78=C663+1-D # 
r   )rS   rT   rN   r'   rV   )r@      @   r4   r;   s   @r   rH   rH   L   s    O2 r   rH   c                   8   ^  \ rS rSr   SU 4S jjrS rSrU =r$ )UniDeepFsmnDilatedr   c                 
  > [         [        U ]  5         Xl        X l        XPl        Uc  g X0l        X@l        [        R                  " X5      U l
        [        R                  " XBSS9U l        [        U R
                  X2S9U l        g )NFr   )rS   r   rT   )r   ri   r   r   r   rS   r   r   r   r   r   r   rH   conv)r   r   r   r   r   rS   r   s         r   r   UniDeepFsmnDilated.__init__t   sm     	 $02"$
>&ii	7yyuE#**VE	r   c                 2   [         R                  " U R                  U5      5      nU R                  U5      n[        R
                  " US5      nUR                  SSSS5      nU R                  U5      nUR                  SSSS5      nXR                  5       -   $ r   )	r"   r#   r   r   r$   r%   r&   rl   r(   )r   r)   r*   r+   r,   r-   r/   r0   s           r   r1   UniDeepFsmnDilated.forward   s|    VVDKK&'\\"LLQ		!Q1%ii{{1aA&||~%%r   )rl   rS   r   r   r   r   r   r   )NNr!   r4   r;   s   @r   ri   ri   r   s    
 !E(& &r   ri   )torchr$   torch.nnr   torch.nn.functional
functionalr"   Moduler   r=   rH   ri    r   r   <module>rv      sU       &")) &<#&bii #&L#bii #L& &r   