
    9i                         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	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  \R.                  " \R0                  \R2                  S9 " S S\	5      5       rg)    N)Dict)Models)
TorchModel)Encoder)SpeakerVerificationCamplus)ConditionGeneratorHiFiGANGenerator)Tensor)MODELS)Tasks)module_namec                   Z   ^  \ rS 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$ )	UnetVC   z>A decorator of FRCRN for integrating into modelscope framework	model_dirc                   > [         TU ]  " U/UQ70 UD6  UR                  SS5      nX@l        [        R
                  R                  US5      n[        [        R
                  R                  US5      [        R
                  R                  US5      5      U l        [        [        R
                  R                  US5      U5      U l
        [        SSS9R                  U5      U l        [        R
                  R                  US	5      nU R                  R                  [        R                   " US
 S95        U R                  R#                  5         [%        5       R                  U5      U l        U R&                  R                  [        R                   " [        R
                  R                  US5      U R                  S9S   5        U R&                  R#                  5         U R&                  R)                  5         g)zbinitialize the frcrn model from the `model_dir` path.

Args:
    model_dir (str): the model path.
devicecpustaticzencoder_am.mvnzencoder.onnxzcampplus_cn_common.binT)unet
extra_infozconverter.pthc                     U $ )N )storagelocs     d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/audio/vc/converter.py<lambda>!UnetVC.__init__.<locals>.<lambda>+   s        )map_locationzvocoder.pth
state_dictN)super__init__getr   ospathjoinr   encoderr   spk_embr   to	converterload_state_dicttorchloadevalr	   vocoderremove_weight_norm)selfr   argskwargsr   static_pathG_path	__class__s          r   r#   UnetVC.__init__   ss    	4T4V4He,ggll9h7GGLL&67GGLLn57 2GGLL&>?I+$((*6
 	k?;&&JJv,HI	K'),,V4$$JJ[-8![[**68	9 	'')r   inputsreturnc                 j   US   nUS   nUS   n[         R                  " 5          U R                  R                  U5      R	                  U R
                  5      nU R                  R                  U5      R	                  U R
                  5      nU R                  R                  U5      R	                  U R
                  5      nU R                  XVU5      nU R                  UR                  / SQ5      5      n	[        R                  R                  U5      (       aL  [        R                   " UU	R#                  5       R%                  5       R&                  R)                  5       S5        S S S 5        W	R#                  5       R%                  5       R&                  R)                  5       $ ! , (       d  f       ND= f)N
target_wav
source_wav	save_path)r         i>  )r-   no_gradr(   	inferencer*   r   r)   forward	get_featsr+   r0   permuter%   r&   existssfwriteflattenr   datanumpy)
r2   r9   target_wav_pathsource_wav_pathsave_wav_path
source_encr)   style_mccoded_sp_converted_normwavs
             r   rC   UnetVC.forward5   s?    . .{+]]_//@CCJ ll**?;>>t{{KG||--o>AA$++NH&*nnZ5='?# ,,6>>yIJCww~~m,,**,117795B   {{}  "''--//! _s   EF$$
F2)r+   r   r(   r)   r0   )__name__
__module____qualname____firstlineno____doc__strr#   r   r
   rC   __static_attributes____classcell__)r7   s   @r   r   r      s<    I*# *:0d3;/ 0Df4E 0 0r   r   )r%   typingr   	soundfilerG   r-   modelscope.metainfor   modelscope.modelsr   &modelscope.models.audio.vc.src.encoderr   .modelscope.models.audio.vc.src.sv_models.DTDNNr   &modelscope.models.audio.vc.src.vocoderr   r	   modelscope.models.baser
   modelscope.models.builderr   modelscope.utils.constantr   register_modulevoice_conversion
unetvc_16kr   r   r   r   <module>ri      sc    	    & ( :F ) , + ..F<M<MN50Z 50 O50r   