
    9i                     |   S SK r S SKrS SKJr  S SKrS SKrS SKJr  S SK	Js  J
r  S SKJr  S SKJr  S SKJr  S SKJr  S SKJrJr  SS	KJrJrJr  SS
KJr  SSKJr  \R>                  " \R@                  \RB                  S9 " S S\5      5       r" " S S\RF                  5      r$ " S S\%5      r&  SS jr'  SS jr(g)    N)Dict)Models)
TorchModel)Tensor)MODELS)	ModelFileTasks   )DenseEncoderMappingDecoderPhaseDecoder)ScheduledFloat)Zipformer2DualPathEncoder)module_namec                   V   ^  \ rS rSrS\4U 4S jjrS\\\4   S\\\4   4S jrSr	U =r
$ )ZipenhancerDecorator   	model_dirc                 0  > [         TU ]  " U/UQ70 UD6  [        US   US   US   US   US   S9n[        U5      n[	        U5      U l        [        R                  R                  U[        R                  5      n[        R                  R                  U5      (       ax  [        R                  " U[        R                  " S5      S9n[        U[        5      (       a  S	U;   a  U R!                  US	   5        g U R
                  R!                  US
   5        g g )Nnum_tsconformersdense_channelformer_confbatch_firstmodel_num_spks)r   r   r   r   r   cpu)map_location
state_dict	generator)super__init__dictAttrDictZipEnhancermodelospathjoinr   TORCH_MODEL_BIN_FILEexiststorchloaddevice
isinstanceload_state_dict)selfr   argskwargshmodel_bin_file
checkpoint	__class__s          g/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/audio/ans/zipenhancer.pyr    ZipenhancerDecorator.__init__   s    4T4V4#$67 1}-}-!"23
 QK ^
i&/&D&DF77>>.))U\\%-@BJ*d++
0J$$Z%=> 

**:k+BC *    inputsreturnc           
      .   SnSnSnUS   n[         R                  " UR                  S   [         R                  " US-  5      -  5      nXV-  n[	        UUUUSSS9u  pn
U R
                  R                  X5      u  ppn[        UUUUUSSS9nUU-  nS	U0nU$ )
Ni  d   noisyr
   g       @333333?T)compress_factorcenterwav_l2)r*   sqrtshapesummag_pha_stftr$   forwardmag_pha_istft)r/   r9   n_ffthop_sizewin_size	noisy_wavnorm_factornoisy_audiomagphacomamp_gpha_gcom_g_otherswavoutputs                     r6   rF   ZipenhancerDecorator.forward:   s    7O	jj!3#(99Y^#<"= > .$# *.););C)E&e K c
 r8   )r$   )__name__
__module____qualname____firstlineno__strr    r   r   rF   __static_attributes____classcell__r5   s   @r6   r   r      s;    
D# D8 d3;/  Df4E    r8   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r#   ]   c                 &  > [         [        U ]  5         Xl        UR                  nX l        [        USS9U l        [        S	S[        SS5      S.UR                  D6U l        [        XR                  S9U l        [        XR                  S9U l        g)
z
Initialize the ZipEnhancer module.

Args:
h (object): Configuration object containing various hyperparameters and settings.
having num_tsconformers, former_name, former_conf, mask_decoder_type, ...
   )
in_channelr
   )g        r>   )g     @g?)output_downsampling_factordropout)out_channelN )r   r#   r    r2   r   num_tscblocksr   dense_encoderr   r   r   TSConformerr   r   mask_decoderr   phase_decoder)r/   r2   r   r5   s      r6   r    ZipEnhancer.__init___   s     	k4)+---)!:4 '(":~> mm
 +1:J:JK)!9I9IJr8   c                    [        5       nUR                  S5      R                  SSSS5      nUR                  S5      R                  SSSS5      n[        R                  " X4SS9nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nUSS2SSS2SS24   R                  S5      R                  SSSS5      R                  S5      nUSS2SSS2SS24   R                  S5      R                  SSSS5      R                  S5      n[        R                  " U[        R                  " U5      -  U[        R                  " U5      -  4SS9n	XxU	SU4$ )a[  
Forward pass of the ZipEnhancer module.

Args:
noisy_mag (Tensor): Noisy magnitude input tensor of shape [B, F, T].
noisy_pha (Tensor): Noisy phase input tensor of shape [B, F, T].

Returns:
Tuple: denoised magnitude, denoised phase, denoised complex representation,
       (optional) predicted noise components, and other auxiliary information.
r      rd   r
   dimN)r!   	unsqueezepermuter*   catrk   rl   rm   rn   squeezestackcossin)
r/   	noisy_mag	noisy_pharU   xpred_magpred_phadenoised_magdenoised_phadenoised_coms
             r6   rF   ZipEnhancer.forwardv   sk    ''+33Aq!Q?	''+33Aq!Q?	IIy,!4q! Q$$Q'%%a(1a
+55a8@@AqABDDKGBK 	  1a
+55a8@@AqABDDKGBK 	 {{L599\3J$J$0599\3J$J$L')+ <vEEr8   )rl   rk   r2   rm   rj   rn   )rY   rZ   r[   r\   r    rF   r^   r_   r`   s   @r6   r#   r#   ]   s    K.$F $Fr8   r#   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )r"      c                 :   > [         [        U ]
  " U0 UD6  X l        g )N)r   r"   r    __dict__)r/   r0   r1   r5   s      r6   r    AttrDict.__init__   s    h&77r8   )r   )rY   rZ   r[   r\   r    r^   r_   r`   s   @r6   r"   r"      s     r8   r"   c                 6   [         R                  " X0R                  S9n[         R                  " U UUUUUSSSS9	n[         R                  " U5      n[         R
                  " UR                  S5      R                  S5      S-   5      n[         R                  " US S 2S S 2S S 2S	4   US S 2S S 2S S 2S
4   S-   5      n	[         R                  " X5      n[         R                  " U[         R                  " U	5      -  U[         R                  " U	5      -  4SS9n
XU
4$ )Nr,   reflectFT)
hop_length
win_lengthwindowr@   pad_mode
normalizedreturn_complexrd   rq   g&.>r
   r   gh㈵>rs   )r*   hann_windowr,   stftview_as_realrB   powrD   atan2ry   rz   r{   )yrH   rI   rJ   r?   r@   r   	stft_specrN   rO   rP   s              r6   rE   rE      s     ##HXX>K

		I ""9-I
**Y]]1%))"-6
7C
++i1a
+Yq!Qz-Bd-K
LC
))C
)C
++sUYYs^+S599S>-AB
KCS=r8   c           	      2   [         R                  " U SU-  5      n [         R                  " U [         R                  " U5      -  U [         R                  " U5      -  5      n[         R
                  " XGR                  S9n[         R                  " UUUUUUS9n	U	$ )N      ?r   )r   r   r   r@   )r*   r   complexrz   r{   r   r,   istft)
rN   rO   rH   rI   rJ   r?   r@   rP   r   rV   s
             r6   rG   rG      s~     ))C#/
1C
--eiin,cEIIcN.B
CC##HZZ@K
++C Jr8   )r   T))r%   randomtypingr   numpynpr*   torch.nnnntorch.nn.functional
functionalFmodelscope.metainfor   modelscope.modelsr   modelscope.models.baser   modelscope.models.builderr   modelscope.utils.constantr   r	   zipenhancer_layers.generatorr   r   r   zipenhancer_layers.scalingr   $zipenhancer_layers.zipenhancer_layerr   register_moduleacoustic_noise_suppression)speech_zipenhancer_ans_multiloss_16k_baser   Moduler#   r!   r"   rE   rG   ri   r8   r6   <module>r      s   
 
        & ( ) , 69 9 6 K 	$$@@B>: >B>B=F")) =F@t  "%@ #&r8   