
    9i(                     `   S SK r S SKJrJr  S SKrS SKrS SKrS SK	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  S SKJr  S S	KJr  \R2                  " \R4                  \R6                  S
9 " S S\5      5       r\R2                  " \R4                  \R:                  S
9 " S S\5      5       rg)    N)AnyDict)File)	Pipelines)
OutputKeys)InputPipeline)	PIPELINES)
audio_norm)Tasks)module_namec                      ^  \ rS rSrSrSrU 4S jrS\S\\	\
4   4S jrS\\	\
4   S\\	\
4   4S jrS\\	\
4   S\\	\
4   4S	 jrS
rU =r$ )ANSPipeline   ANS (Acoustic Noise Suppression) Inference Pipeline .

When invoke the class with pipeline.__call__(), it accept only one parameter:
    inputs(str): the path of wav file
>  c                    > [         TU ]  " SSU0UD6  U R                  R                  5         UR	                  SS5      U l        gzu
use `model` and `preprocessor` to create a kws pipeline for prediction
Args:
    model: model id on modelscope hub.
modelstream_modeFN super__init__r   evalgetr   selfr   kwargs	__class__s      g/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/audio/ans_pipeline.pyr   ANSPipeline.__init__   ;     	/u//

!::mU;    inputsreturnc                     U R                   (       a  [        S5      e[        U[        5      (       a-  [        R
                  " [        R                  " U5      5      u  p4Op[        U[        5      (       aC  [        R
                  " U5      n[        R
                  " [        R                  " U5      5      u  p4O[        S[        U5       S35      e[        UR                  5      S:  a	  US S 2S4   nX@R                  :w  a  [        R                  " X4U R                  S9n[!        U5      nUR#                  [$        R&                  5      n[$        R(                  " USUR                  S   /5      nXR                  S   S.$ Nz(This model does not support stream mode!zUnsupported type .   r   )orig_sr	target_sr)ndarraynsamplesr   	TypeError
isinstancebytessfreadioBytesIOstrr   typelenshapeSAMPLE_RATElibrosaresampler   astypenpfloat32reshaper   r%   preprocess_paramsdata1fs
file_bytesdatas          r!   
preprocessANSPipeline.preprocess)      FGGfe$$

6 23IE2$$6*J

: 67IE2/V~Q?@@u{{a!Q$KE!!!$$T-=-=?E5!||BJJ'D1djjm"45!zz!}==r$   c                    US   n[        U[        R                  5      (       a  UR                  5       R	                  5       nUS   nSnSn[        US-  5      n[        SR                  UR                  5      5        UR                  u  pXS-  :  a  SnX:  a?  [        R                  " U[        R                  " UR                  S	   Xi-
  45      /S
5      nOXU-   :  a^  Xg-   U	-
  n
[        SR                  U
5      5        [        R                  " U[        R                  " UR                  S	   U
45      /S
5      nOnX-
  U-  S	:w  ac  XU-
  U-  U-  -
  n
[        SR                  U
5      5        [        R                  " U[        R                  " UR                  S	   U
45      /S
5      n[        SR                  UR                  5      5        [        R                  " 5          [        R                  " [        R                  " U5      5      R                  U R                   5      nUR                  u  pU(       a  [        R                  " U	5      nXg-
  S-  nS	nX-   U	::  a  [        SR                  U5      5        [#        US S 2XU-   24   S9nU R%                  U5      S   S	   R                  5       R	                  5       nX-   U-
  nUS	:X  a	  US U*  XU& O
UX*  XU-   U& X-  nX-   U	::  a  M  O:U R%                  [#        US95      S   S	   R                  5       R	                  5       nS S S 5        WS U S-  R'                  [        R(                  5      R+                  5       n[,        R.                  U0$ ! , (       d  f       NS= f)Nr-   r.   Fr         ?	inputs:{}x   Tr   r*   padding: {}inputs after padding:{}   zcurrent_idx: {}noisywav_l2   r1   torchTensorcpunumpyintprintformatr:   r?   concatenatezerosno_grad
from_numpyr@   todevicedictr   r>   int16tobytesr   
OUTPUT_PCMr   r%   forward_paramsr-   r.   decode_do_segementwindowstridebtpaddingoutputsgive_up_lengthcurrent_idx	tmp_input
tmp_output	end_indexs                    r!   forwardANSPipeline.forward=   s[   #gu||,,kkm))+G*%"Vd]#k  /0}}|!%:nn"((GMM!$4fj#ABCQHG& o)G-&&w/0nn"((GMM!$4g#>?@!EG 
f$)6zf4v==m**734..bhha(8''BCDaI'..w}}=>]]_&&rzz'':;>>t{{KG==DA!((1+"(/a!7!*a/+22;?@ $71k5;C< 7< 4< ,= !>I!%!"%%-"//0"225#%  + 4~ EI"a'-78H.-I   )+ ?I$2??D  "0!11:<  )K "*a/  **w'))1334669ceEEG / 2 9H%-55bhh?GGI%%w//5 _s   'DM>6;M>>
Nc                     SUR                  5       ;   aW  [        R                  " US   [        R                  " U[
        R                     [        R                  S9U R                  5        U$ Noutput_path)dtype	keysr3   writer?   
frombufferr   rg   re   r;   r   r%   r   s      r!   postprocessANSPipeline.postprocessv   Q    FKKM)HH}%fZ%:%:;288L  " r$   r   __name__
__module____qualname____firstlineno____doc__r;   r   r   r   r7   r   rH   rv   r   __static_attributes____classcell__r    s   @r!   r   r      s|    
 K<> >S#X >(70d38n 70%)#s(^70r$sCx. tCH~  r$   r   c                      ^  \ rS rSrSrSrU 4S jrS\S\\	\
4   4S jrS\\	\
4   S\\	\
4   4S jrS\\	\
4   S\\	\
4   4S	 jrS
rU =r$ )ANSZipEnhancerPipeline   r   r   c                    > [         TU ]  " SSU0UD6  U R                  R                  5         UR	                  SS5      U l        gr   r   r   s      r!   r   ANSZipEnhancerPipeline.__init__   r#   r$   r%   r&   c                     U R                   (       a  [        S5      e[        U[        5      (       a-  [        R
                  " [        R                  " U5      5      u  p4Op[        U[        5      (       aC  [        R
                  " U5      n[        R
                  " [        R                  " U5      5      u  p4O[        S[        U5       S35      e[        UR                  5      S:  a	  US S 2S4   nX@R                  :w  a  [        R                  " X4U R                  S9n[!        U5      nUR#                  [$        R&                  5      n[$        R(                  " USUR                  S   /5      nXR                  S   S.$ r(   r/   rB   s          r!   rH   !ANSZipEnhancerPipeline.preprocess   rJ   r$   c                    US   n[        U[        R                  5      (       a  UR                  5       R	                  5       nUS   nSnSn[        US-  5      n[        SR                  UR                  5      5        UR                  u  pXS-  :  a  Sn[        S	5        X:  a?  [        R                  " U[        R                  " UR                  S
   Xi-
  45      /S5      nOU(       a  XU-   :  a^  Xg-   U	-
  n
[        SR                  U
5      5        [        R                  " U[        R                  " UR                  S
   U
45      /S5      nOtX-
  U-  S
:w  ai  X-
  U-  S-   U-  U-   U	-
  n
[        SR                  U
5      5        [        R                  " U[        R                  " UR                  S
   U
45      /S5      n[        SR                  UR                  5      5        [        R                  " 5          [        R                  " [        R                  " U5      5      R                  U R                   5      nUR                  u  pU(       a  [        R                  " U	5      nXg-
  S-  nS
nX-   U	::  a  [        SR                  XS-  U	-  5      SS9  [#        US S 2XU-   24   S9nU R%                  U5      S   S
   R                  5       R	                  5       nX-   U-
  nUS
:X  a	  US U*  XU& O
UX*  XU-   U& X-  nX-   U	::  a  M  [        SR                  US5      5        O:U R%                  [#        US95      S   S
   R                  5       R	                  5       nS S S 5        WS U S-  R'                  [        R(                  5      R+                  5       n[,        R.                  U0$ ! , (       d  f       NS= f)Nr-   r.   Fi }  rL   rM      Trj   r   r*   rO   rP   rQ   zcurrent_idx: {} {:.2f}%d    )endrR   rT   rU   rV   rh   s                    r!   rv   ANSZipEnhancerPipeline.forward   s   #gu||,,kkm))+G*%"Vd]#k  /0}}z>!%&':nn"((GMM!$4fj#ABCQHGF?" /A-m**734..bhha(8''BCDaI J&(A- .2f=?EFHIJG-..w78 nn 7==#3W"=>@ABDG 	'..w}}=>]]_&&rzz'':;>>t{{KG==DA!((1+"(/a!7!*a/3::'s):Q)>@  !%71k5;C< 7< 4< ,= !>I!%!"%%-"//0"225#%  + 4~ EI"a'-78H.-I   )+ ?I$2??D  "0!11:<  )K% "*a/& 188cJK**w'))1334669ceEEG 9 < 9H%-55bhh?GGI%%w//? _s   ?DN6AN66
Oc                     SUR                  5       ;   aW  [        R                  " US   [        R                  " U[
        R                     [        R                  S9U R                  5        U$ ry   r|   r   s      r!   r   "ANSZipEnhancerPipeline.postprocess   r   r$   r   r   r   s   @r!   r   r      s    
 K<> >S#X >(G0d38n G0%)#s(^G0R$sCx. tCH~  r$   r   )r5   typingr   r   r<   rZ   r?   	soundfiler3   rW   modelscope.fileior   modelscope.metainfor   modelscope.outputsr   modelscope.pipelines.baser   r	   modelscope.pipelines.builderr
   "modelscope.utils.audio.audio_utilsr   modelscope.utils.constantr   register_moduleacoustic_noise_suppressionspeech_frcrn_ans_cirm_16kr   )speech_zipenhancer_ans_multiloss_16k_baser   r   r$   r!   <module>r      s    
      " ) ) 5 2 9 + 	$$335e( e5eP 	$$CCEuX uEur$   