
    9i	                         S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  \R                   " \R"                  \R$                  S9 " S	 S
\5      5       rg)    )nn)Models)MODELS
TorchModel)RectifiedLinearSigmoid)AffineTransform)UniDeepFsmn)Tasks)module_namec                   H   ^  \ rS rSrSr  SS\4U 4S jjjrS rS rSr	U =r
$ )	DfsmnAns   zDenoise model with DFSMN.

Args:
    model_dir (str): the model path.
    fsmn_depth (int): the depth of deepfsmn
    lorder (int):
	model_dirc           	      J  > [         TU ]  " U/UQ70 UD6  X0l        [        SS5      U l        [        SS5      U l        [        U5       Vs/ s H  n[        SSUS5      PM     nn[        R                  " U6 U l        [        SS5      U l        [        SS5      U l        g s  snf )Nx      i  )super__init__lorderr	   linear1r   reluranger
   r   
Sequentialdeepfsmnlinear2r   sig)	selfr   
fsmn_depthr   argskwargsirepeats	__class__s	           g/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/audio/ans/denoise_net.pyr   DfsmnAns.__init__   s     	4T4V4&sC0#C-	8=j8I
8I1KS&#.8I 	 
 w/&sC03$
s   B c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU$ )z
Args:
    input: fbank feature [batch_size,number_of_frame,feature_dimension]

Returns:
    mask value [batch_size, number_of_frame, FFT_size/2+1]
)r   r   r   r   r   )r   inputx1x2x3x4x5s          r%   forwardDfsmnAns.forward/   sM     \\% YYr]]]2\\"XXb\	    c                 H   SnUS-  nXR                   R                  5       -  nXR                  R                  5       -  nU R                   H  nXR                  5       -  nM     XR                  R                  5       -  nXR
                  R                  5       -  nUS-  nU$ )N z<Nnet>
z</Nnet>
)r   to_kaldi_nnetr   r   r   r   )r   re_strdfsmns      r%   r3   DfsmnAns.to_kaldi_nnet>   s    *,,,,..))))++]]E))++F #,,,,..((((**+r0   )r   r   r   r   r   r   )	      )__name__
__module____qualname____firstlineno____doc__strr   r.   r3   __static_attributes____classcell__)r$   s   @r%   r   r      s1     %% %" r0   r   N)torchr   modelscope.metainfor   modelscope.modelsr   r   .modelscope.models.audio.ans.layers.activationsr   r   3modelscope.models.audio.ans.layers.affine_transformr	   0modelscope.models.audio.ans.layers.uni_deep_fsmnr
   modelscope.utils.constantr   register_moduleacoustic_noise_suppressionspeech_dfsmn_ansr    r0   r%   <module>rL      sX     & 0E O H + 	$$&2I2IK4z 4K4r0   