
    sg$                        d dl Z d dlZd dlZd dlZd dlmZmZmZmZ  ej                           ej                  d      Zd Zg Zg Zddgddgd	d
gdj                  dd      g ddj                  dd      g ddj                  dd      g ddj                  dd      g ddj                  dd      ddgdj                  dd      ddgi	ZddgiZddgddgdd gd!j                  dd      d"dgd#j                  dd      d"d$gd%j                  dd      g d&d'j                  dd      g d(d)j                  dd      g d*d+j                  dd      g d,i	Zi eeeZd- Zd. Zd/ Z ej.                         	 	 d@d0       Zed1k(  r e j4                         Zej9                  d2d3ed45       ej9                  d6d7ded89       ej9                  d:d7ded;9       ej9                  d<ded=5       ej9                  d>ded?5       ej=                         Z eej@                  ejB                  ejD                  ejF                  ejH                         yy)A    N)	DacConfigDacFeatureExtractorDacModelloggingztransformers.models.dacc                     |j                  d      }| j                  d      }dx}}|D ]  }|j                  d      s|dz  } |D ]  }|j                  d      s|dz  } t        j                  | |      xr ||k(  S )N.r   block   )split
startswithfnmatch)stringpatternpattern_partsstring_partspattern_block_countstring_block_countparts          a/var/www/html/venv/lib/python3.12/site-packages/transformers/models/dac/convert_dac_checkpoint.pymatch_patternr   )   s    MM#&M<<$L/00, %??7#1$%  $??7#!#$ ??67+Y0BFY0YY    zencoder.block.0zencoder.conv1zencoder.block.5zencoder.snake1zencoder.block.6zencoder.conv2zencoder.block.*.block.*.block.0*z\d+)encoder.blockres_unitsnake1zencoder.block.*.block.*.block.1)r   r   conv1zencoder.block.*.block.*.block.2)r   r   snake2zencoder.block.*.block.*.block.3)r   r   conv2zencoder.block.*.block.3r   r   zencoder.block.*.block.4r   zquantizer.quantizers.*zdecoder.model.0zdecoder.conv1zdecoder.model.5zdecoder.snake1zdecoder.model.6zdecoder.conv2zdecoder.model.*.block.0decoder.blockzdecoder.model.*.block.1conv_t1zdecoder.model.*.block.*.block.0)r   r   r   zdecoder.model.*.block.*.block.1)r   r   r   zdecoder.model.*.block.*.block.2)r   r   r   zdecoder.model.*.block.*.block.3)r   r   r   c           
      4   |j                  d      D ]  }t        | |      }  |t        | |      j                  }n| j                  }||j                  k7  r+t        d||dz   |z   nd d| d|j                   d|       |dk(  r|| j                  _        n[|dk(  r|| j                  _        nD|d	k(  r|| j                  _        n-|d
k(  r|| j                  _        n|dk(  r|| j                  _        t        j                  ||d|z   ndz    d| d       y )Nr   zShape of hf  z is z, but should be z for weightweight_gweight_vbiasalphaz was initialized from )r   getattrshape
ValueErrorr#   datar$   r%   r&   r'   loggerinfo)
hf_pointerkeyvalue	full_nameweight_type	attributehf_shapes          r   set_recursivelyr5   c   s<   YYs^ 4	Z3
4 :{399##5;;k6M39{2SUVVZ[cZd e}E).
 	

 h!&
	
	"#(
 	
	"#(
 		$
		 %

KK3{/F#+BOPPfgpfqqrstr   c                     |D ]T  }|j                  d      r| j                  |d d       s) yd|v r |j                  d      \  }}|| v sH|| v sM y|| v sT y y)Nz.*Tz.*.F)endswithr   r   )nameignore_keysr/   prefixsuffixs        r   should_ignorer=      sj     	<<s3Bx(c\ YYu-NFF~&D.D[	 r   c                    g }|dvrt        d|       | j                         D ]  \  }}d}t        j                         D ]  \  }}t        j                  |      }	|	j                  |      s.t        |      dk(  r7|d   d   dk(  r%dj                  |j                  d      d d       }n)|d   }n"t        |      d	k(  rt        j                  d
|      }
|d   d   dk(  rOdj                  |d   t        t        |
d         dz
        |d   t        t        |
d         dz
        |d         }ndj                  |d   t        t        |
d         dz
        |d   t        t        |
d         dz         |d         }nUt        |      dk(  rGt        j                  d
|      }
dj                  |d   t        t        |
d         dz
        |d         }d}d|v rd}nd|v rd}nd|v rd}nd|v rd}nd|v rd}t        ||||        |r|j                  |        t        t!        t#        |                   t$        j'                  d|        y )N)	dac_16khz	dac_24khz	dac_44khzzUnsupported model: Fr
   r   qr   r7      z\b\d+\bdz{}.{}.{}{}.{}   z{}.{}.{}Tr$   r%   r&   r'   r#   zUnused weights: )r*   itemsMAPPINGrecompilesearchlenjoinr   findallformatstrintr5   appendprintlistsetr,   warning)	orig_dicthf_model
model_nameunused_weightsr9   r0   is_usedr/   
mapped_keyregexintegersr2   s               r   recursively_load_weightsr^      sp   N@@.zl;<< ( .(e&}} )	POCJJsOE||D!z?a'!!}Q'3.%(XXdjjocr.B%C
%/]
_)!zz*d;H!!}Q'3.%4%;%;&qMHQK 01 45&qMHQK 01 45&qM&
 &5%;%;&qMHQK 01 45&qMHQK 01 45&qM&
 _)!zz*d;H!+!2!2:a=#c(ST+FVYZFZB[]ghi]j!kJ%",K4'",Kt^"(K_")K%"*K*eT;OS)	PV !!$'].(` 
$s>"
#$
NN%n%567r   c                 2   t        j                  |d      }t               }|d   d   }|d   |_        |d   |_        |d   |_        |d   |_        |d   |_        |d	   |_        |d
   |_	        t        |d         |_        ||_        t        |      }t               }	||	_        |d   }
|j                          t!        |
||        |j#                          |j%                  |       |r.t'        d       |	j)                  |       |j)                  |       y y )Ncpumetadatakwargsencoder_dimencoder_ratescodebook_sizen_codebookscodebook_dimdecoder_dimdecoder_ratesquantizer_dropout
state_dictzPushing to the hub...)torchloadr   encoder_hidden_sizedownsampling_ratiosre   rf   rg   decoder_hidden_sizeupsampling_ratiosfloatrj   sampling_rater   r   apply_weight_normr^   remove_weight_normsave_pretrainedrR   push_to_hub)rX   checkpoint_pathpytorch_dump_folder_pathsample_raterepo_id
model_dictconfigra   modelfeature_extractororiginal_checkpoints              r   convert_checkpointr      s(    OU3J[F*%h/H!)-!8F!)/!:F#O4F!-0F">2F!)-!8F'8F$X.A%BCF&FVE+-&1#$\2	0%D		23%&%%g.'" r   __main__z--modelrA   zMThe model to convert. Should be one of 'dac_16khz', 'dac_24khz', 'dac_44khz'.)defaulttypehelpz--checkpoint_pathTzPath to original checkpoint)requiredr   r   r   z--pytorch_dump_folder_pathz!Path to the output PyTorch model.z--push_to_hubu4   Where to upload the converted model on the 🤗 hub.z--sample_ratez'Sample rate used by DacFeatureExtractor)i>  N)%argparser   rH   rl   transformersr   r   r   r   set_verbosity_info
get_loggerr,   r   TOP_LEVEL_KEYSIGNORE_KEYSreplaceMAPPING_ENCODERMAPPING_QUANTIZERMAPPING_DECODERrG   r5   r=   r^   no_gradr   __name__ArgumentParserparseradd_argumentrO   
parse_argsargsr~   rx   ry   rz   rw    r   r   <module>r      s     	       			5	6Z$  (()(%--c6:<c%--c6:<b%--c6:<c%--c6:<b%%c62_h4O%%c62_g4N
 78 
 (()(%%c62_h4O%%c62_i4P%--c6:<c%--c6:<b%--c6:<c%--c6:<b
 u888v 
 %# %#P z$X$$&F
\	   +dDsYvw
$tTRu   C6l   CFopD

D(($*G*GIYIY[_[k[k% r   