
    tjA                        S SK Jr  S SKJrJr  S SKr\(       a  S SKJr  SSKJrJ	r	J
r
JrJr  S rS rS	 rS
 rSrSr\R&                  " S5       " S S\5      5       r\R&                  " S5       " S S\	5      5       rg)    )annotations)IterableTYPE_CHECKINGN)Tensor   )	ModelBaseMmprojModelSentencePieceTokenTypes	TextModelggufc                    SSU -  -   $ )Nr       is    4/mnt/workspace/git/llama.cpp/conversion/pockettts.py<lambda>r          1q1u9    c                    SSU -  -   $ Nr   r   r   s    r   r   r      r   r   c                    SSU -  -   $ )N   r   r   r   s    r   r   r      r   r   c                    SSU -  -   $ r   r   r   s    r   r   r       r   r   r   i]  PocketTTSModelc                  <   \ rS rSr\R
                  R                  r\R                  R                  \R                  R                  \R                  R                  \R                  R                  \R                  R                  S.rS rS	S jrS
S jrSS jrSrg)r   &   )norm1norm2self_attn.out_projlinear1linear2c                   SSK Jn  UR                  5       nUR                  [	        U R
                  S-  S5      R                  5       5        UR                  R                  S:X  d   S5       eU R                  5       u  p4nU R                  5       n[        U5       Hy  u  pxUR                  S5      U[        U5      [        U5      -
  U-   '   [        R                  U[        U5      [        U5      -
  U-   '   SU[        U5      [        U5      -
  U-   '   M{     U R                   R#                  S	5        U R                   R%                  S
5        U R                   R'                  U5        U R                   R)                  U5        U R                   R+                  U5        U R                   R-                  UR.                  R0                  5        U R                   R3                  UR.                  R4                  5        UR.                  R6                  (       a/  U R                   R9                  UR.                  R6                  5        U R                   R;                  S5        U R                   R=                  S5        g )Nr   )sentencepiece_model_pb2ztokenizer.modelrbr   zexpected a unigram tokenizerzutf-8g     @t5defaultF)sentencepiecer$   
ModelProtoParseFromStringopen	dir_modelreadtrainer_spec
model_type_create_vocab_sentencepiece_extra_tokens	enumerateencodelenr
   CONTROLgguf_writeradd_tokenizer_modeladd_tokenizer_preadd_token_listadd_token_scoresadd_token_typesadd_add_space_prefixnormalizer_specadd_dummy_prefixadd_remove_extra_whitespacesremove_extra_whitespacesprecompiled_charsmapadd_precompiled_charsmapadd_add_bos_tokenadd_add_eos_token)	selfmodelprototokensscorestoktypesextrar   names	            r   	set_vocabPocketTTSModel.set_vocab2   s    	C  "d4>>4E#EtLQQST!!,,1Q3QQ1#'#C#C#E  ""$ 'GA37;;w3GF3v;U+a/05L5T5THS[3u:-123:F3v;U+a/0 (
 	,,T2**95''/))&1((2--e.C.C.T.TU55e6K6K6d6de  5555e6K6K6`6`a**51**51r   c              #    #    UR                  S5      (       d  g US:X  a=  U R                  [        R                  R                  5      U R                  U5      4v   g UR                  S5      (       aE  SUR                  SS5      S   -   nU R                  [        R                  R                  US9U4v   g UR                  S5      (       Ga  Uc   eUR                  SU S3S5      S   nUR                  SS5      u  pdUS	:X  a  UR                  S
SS9u  pxn	U R                  [        R                  R                  U5      U4v   U R                  [        R                  R                  U5      U4v   U R                  [        R                  R                  U5      U	4v   g U R                  R                  U5      n
U
b  U R                  XSU-   S9U4v   g g 7f)Nzflow_lm. flow_lm.conditioner.embed.weightflow_lm.out_norm..r   suffixzflow_lm.transformer.layers.zlayers.zself_attn.in_projr   r   dim)
startswithformat_tensor_namer   MODEL_TENSOR
TOKEN_EMBD_embd_tablersplitOUTPUT_NORMsplitchunkATTN_QATTN_KATTN_V_LAYER_TENSOR_MAPget)rE   
data_torchrL   bidrT   key_with_suffixkeyqkvtensors              r   modify_tensorsPocketTTSModel.modify_tensorsP   s    z**55**4+<+<+G+GH$JZJZ[eJfgg??.//4;;sA.q11F**4+<+<+H+HQW*XZdee??899?"?"jj73%q)91=a@O)00a8KC))$**1!*4a..t/@/@/G/GMqQQ..t/@/@/G/GMqQQ..t/@/@/G/GMqQQ++//4F!..v3<.PR\]]s   GGc                p    S/nSU R                   ;   a  UR                  S5        UR                  S5        U$ )Nz<|pad|>flow_lm.bos_before_voicez<|bos_before_voice|>z<|audio_bos|>)model_tensorsappend)rE   namess     r   r1   PocketTTSModel._extra_tokensp   s7     %););;LL/0_%r   c                :   U/nSU R                   ;   aL  UR                  U R                   S   " 5       R                  SS5      R                  UR                  5      5        U R                   S   " 5       nU R                   S   " 5       n[
        R                  R                  R                  UR                  5       UR                  5       5      R                  SS5      nUR                  UR                  UR                  5      5        [
        R                  " USS9$ )Nrp   r   flow_lm.bos_embflow_lm.input_linear.weightr   rU   )rq   rr   reshapetodtypetorchnn
functionallinearfloatcat)rE   embedrowsbos_embinput_linear	audio_boss         r   r[   PocketTTSModel._embd_tabley   s    w%););;KK**+EFHPPQRTVWZZ[`[f[fgh $$%679))*GHJHH''..w}}@R@R@TU]]^_acd	ILL-.yy1%%r   r   Nre   r   rL   strrf   z
int | NonereturnIterable[tuple[str, Tensor]])r   z	list[str])r   r   r   r   )__name__
__module____qualname____firstlineno__r   
MODEL_ARCH	POCKETTTS
model_archrY   	ATTN_NORMFFN_NORMATTN_OUTFFN_UPFFN_DOWNrc   rM   rm   r1   r[   __static_attributes__r   r   r   r   r   &   s{    **J  $00::#0099#0099#0077#00992<@&r   c                     \ rS rSrSrSr\R                  R                  \R                  R                  4\R                  R                  \R                  R                  4\R                  R                  \R                  R                  4\R                  R                  \R                  R                  4\R                  R                   \R                  R"                  4\R                  R$                  \R                  R&                  4\R                  R(                  \R                  R*                  4S.r\R                  R.                  \R                  R0                  \R                  R2                  4\R                  R4                  \R                  R6                  \R                  R8                  44rS rS rSS jr SS jr!SS	 jr"SS
 jr#Sr$g)PocketTTSMmprojModel   TF)r   r   r    r!   r"   zlayer_scale_1.scalezlayer_scale_2.scalec                   U R                   R                  U R                  5        U R                  c   eU R                   R	                  S5        U R                   R                  [        R                  R                  5        U R                   R                  U R                  5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  S5        U R                   R!                  S5        U R                   R#                  S5        U R                   R%                  [        R                  R&                  5        U R                   R)                  U R                  5        U R                   R+                  U R                  S   5        U R                   R-                  U R                  S   5        U R                   R/                  U R                  S   5        U R                   R1                  U R                  S   5        U R                   R3                  S5        U R                   R5                  U R6                  R8                  5        g )NTnum_hidden_layershidden_sizeintermediate_sizenum_attention_headsgh㈵>r   )r6   add_file_typeftypehparams_audioadd_clip_has_audio_encoderadd_clip_audio_projector_typer   VisionProjectorTypePOCKETTTS_SPKENCadd_audio_projection_dimn_embd_textadd_audio_block_countadd_audio_embedding_lengthadd_audio_feed_forward_lengthadd_audio_head_count!add_audio_attention_layernorm_epsadd_audio_num_mel_binsadd_clip_has_gen_audio_encoder!add_clip_gen_audio_projector_typePOCKETTTS_GENadd_gen_audio_projection_dimadd_gen_audio_embedding_length!add_gen_audio_feed_forward_lengthadd_gen_audio_block_countadd_gen_audio_head_count%add_gen_audio_attention_layernorm_epsadd_gen_audio_model_variantr,   rL   )rE   s    r   set_gguf_parameters(PocketTTSMmprojModel.set_gguf_parameters   s$   &&tzz2!!--- 	33D966t7O7O7`7`a11$2B2BC..t/A/ABU/VW33D4F4F}4UV66t7I7IJ]7^_--d.@.@AV.WX::4@//2 	77=::4;S;S;a;ab55d6F6FG778J8J=8YZ::4;M;MNa;bc2243E3EFY3Z[11$2D2DEZ2[\>>tD44T^^5H5HIr   c                V    AAASU;   d  US;   a  [         R                  R                  $ g)Nz.seanet.)za.downsample.conv.weightza.gen.wav.upsample.weightF)r   GGMLQuantizationTypeF16)rE   rL   new_namerf   n_dimss        r   tensor_force_quant'PocketTTSMmprojModel.tensor_force_quant   s.    #v!X1j%j,,000r   c              #    #    A[         R                  nUS;   a  g UR                  S5      (       d  UR                  S5      (       a  g US:X  a   U R                  UR                  5      U4v   g US:X  a   U R                  UR
                  5      U4v   g US:X  a  U R                  UR                  SS9U4v   g US	:X  a  U R                  UR                  SS9U4v   g UR                  S
5      (       a7  SUR                  SS5      S   -   nU R                  UR                  US9U4v   g UR                  S5      (       a  U R                  X!5       S h  vN   g US:X  a   U R                  UR                  5      U4v   g US:X  a   U R                  UR                  5      U4v   g US:X  a/  U R                  UR                  5      UR                  S5      4v   g SU;   a  U R                  X!5       S h  vN   g UR                  S5      (       d  UR                  S5      (       a  U R!                  X!5       S h  vN   g g  N NN N
7f)N)rw   rp   rP   zflow_lm.transformer.rQ   zflow_lm.speaker_proj_weightrx   zflow_lm.emb_mean rS   zflow_lm.emb_stdzflow_lm.out_eos.rR   r   flow_lm.flow_net.z mimi.downsample.conv.conv.weightz"mimi.upsample.convtr.convtr.weightz!mimi.quantizer.output_proj.weightrv    _transformer.transformer.layers.zmimi.encoder.model.zmimi.decoder.model.)r   rY   rW   rX   A_ENC_SPEAKER_PROJA_GEN_INPUT_LINEARA_GEN_EMB_MEANA_GEN_EMB_STDr\   A_GEN_OUT_EOS_flow_net_tensorA_ENC_DOWNSAMPLE_CONVA_GEN_WAV_UPSAMPLEA_GEN_WAV_QUANT_OUTsqueeze_mimi_tfm_tensor_seanet_tensor)rE   re   rL   rf   TrT   s         r   rm   #PocketTTSMmprojModel.modify_tensors   sG    ff??122dooFY6Z6Z00**1+?+?@*MM00**1+?+?@*MM%%**1+;+;B*GTT$$**1??2*F
SS??-..4;;sA.q11F**1??6*JJWW??.//,,T>>>55**1+B+BCZPP77**1+?+?@*MM66**1+@+@A:CUCUVXCYZZ-5,,T>>>??011T__EZ5[5[**4<<<+ ? ? =s8   EI	IB I	6I7AI	<I=I	I	I	c              #    #    [         R                  nUR                  SS5      S   nSUR                  SS5      S   -   nUR                  UR
                  UR                  UR                  S.nUR                  UR                  SS5      S   5      nUb  U R                  XuS9U4v   g UR                  S5      (       a  [        UR                  S5      S   5      nUR                  SU S3S5      S   n	UR                  S4UR                  U4UR                  U4UR                  S4S	.n
U
R                  U	5      =(       d$    U
R                  U	R                  SS5      S   5      nUb  U R                  US   XS   S9U4v   g UR                  S
5      (       a  [        UR                  S5      S   5      nUR                  S
U S3S5      S   R                  SS5      S   n	UR                   UR"                  UR$                  UR&                  S.nUR                  U	5      nUb  U R                  XxUS9U4v   g g 7f)Nr   r   rR   )
input_proj
cond_embedzfinal_layer.linearzfinal_layer.adaLN_modulation.1r   rS   ztime_embed.r   )freqsmlp.0mlp.2zmlp.3.alphazres_blocks.)in_lnr   r   zadaLN_modulation.1)r   rY   r^   r\   A_GEN_FLOW_INPUT_PROJA_GEN_FLOW_COND_EMBDA_GEN_FLOW_FINAL_PROJA_GEN_FLOW_FINAL_ADArd   rX   rW   intA_GEN_FLOW_TIME_FREQSA_GEN_FLOW_TIME_UPA_GEN_FLOW_TIME_DOWNA_GEN_FLOW_TIME_NORMA_GEN_FLOW_BLK_NORMA_GEN_FLOW_BLK_UPA_GEN_FLOW_BLK_DOWNA_GEN_FLOW_BLK_ADA)rE   rL   re   r   rh   rT   simplerl   rf   resttime_mapentryblk_maps                r   r   %PocketTTSMmprojModel._flow_net_tensor   sG    jj,a03szz#q)!,, +,*A*A*+*@*@*+*A*A./.D.D	
 CJJsA.q12**6*A:NN>>-((ciinQ'(C99{3%q115a8D ! 7 7< ! 4 4@ ! 6 6@ ! 6 6<	H LL&N(,,t{{37J17M*NE ..uQx1X.NPZ[[>>-((ciinQ'(C99{3%q115a8??QGJD()(=(=()(;(;()(=(=()(<(<	G [[&F!..v6.JJWW )s   H=H?c              #    #    UR                  S5      n[        UR                  SS5      S   R                  S5      S   5      nUR                  SU S3S5      S   nUS:X  aW  UR                  SSS	9u  pgnU R                  U(       a  SOS   n	[        XXx45       H  u  pU R                  X5      U4v   M     g UR                  SS5      u  pU R                  R                  U5      =(       d    U R                  R                  U5      nUc  g X(       a  SOS   n
UR                  S
5      (       a  SOSU-   nU R                  XUS9U4v   g 7f)Nzmimi.decoder_transformer.r   r   rR   r   z.layers.zself_attn.in_proj.weightr   rU   z.scalez.weightrS   )rW   r   r^   r_   _MIMI_TFM_QKVziprX   r\   _MIMI_TFM_MAPrd   endswith)rE   rL   re   
is_decoderrf   rg   ri   rj   rk   rs   rl   partrh   rT   r   s                  r   r   %PocketTTSMmprojModel._mimi_tfm_tensor  sN    __%@A
$**?CAFLLSQRSTU**xuA%6:1=88 &&qa&0GA!&&JqA>E #Eq9 5..v;TBB !6%,,S!4""&&s+Vt/A/A/E/Eo/V=JqA.-66x@@cFl&&v6&BJOOs   EEc              #    #    [         R                  nUR                  S5      n[        UR	                  SS5      S   R	                  S5      S   5      nSUR                  SS5      S   -   nU(       a9  UR                  UR                  UR                  UR                  UR                  4O8UR                  UR                  UR                  UR                  UR                  4u  pxpnUS:X  a  U R!                  XvS9U4v   g US["        -  S-   :X  a  U R!                  XS9U4v   g [%        ["        5       H  nU(       a  ['        U5      O
[)        U5      nU(       a  [+        U5      O
[-        U5      nX^:X  a  U R!                  XUS9U4v     g X]:X  d  M_  [        UR	                  S	S5      S   R	                  S5      S   5      nUS:X  a  U	OU
nU R!                  UXS9U4v     g    g 7f)
Nzmimi.decoder.z.model.r   rR   r   rS   r   r   z.block.)r   rY   rW   r   r^   r\   A_GEN_WAV_SEANET_CONV_INA_GEN_WAV_SEANET_CONV_OUTA_GEN_WAV_SEANET_RES_CONV1A_GEN_WAV_SEANET_RES_CONV2A_GEN_WAV_SEANET_SCALE_CONVA_ENC_SEANET_CONV_INA_ENC_SEANET_CONV_OUTA_ENC_SEANET_RES_CONV1A_ENC_SEANET_RES_CONV2A_ENC_SEANET_SCALE_CONVrX   _N_SEANET_STAGESrange_DEC_RES_IDX_ENC_RES_IDX_DEC_SCALE_IDX_ENC_SCALE_IDX)rE   rL   re   r   r   idxrT   conv_inconv_outres1res2scalestageres_idx	scale_idxinnerrl   s                    r   r   #PocketTTSMmprojModel._seanet_tensor1  s    ___5
$**Y*1-33C8;<t{{3*1--
  '')D)DaFbFb))1+H+HJ ##Q%<%<a>V>V%%q'@'@B	 	-4u !8**7*BJOO!&&****8*CZPP+,E1;U+eATG1;u-PUAVI..uF.KZXX~DJJy!4Q7==cB1EF!&!..vu.LjYY -s   FG(AG(r   Nr   )rL   r   re   r   r   r   )%r   r   r   r   has_audio_encoderhas_vision_encoderr   rY   A_ENC_INPUT_NORMA_GEN_WAV_TFM_ATTN_NORMA_ENC_OUTPUT_NORMA_GEN_WAV_TFM_FFN_NORMA_ENC_OUTPUTA_GEN_WAV_TFM_ATTN_OUTA_ENC_FFN_UPA_GEN_WAV_TFM_FFN_UPA_ENC_FFN_DOWNA_GEN_WAV_TFM_FFN_DOWNA_ENC_ATTN_SCALEA_GEN_WAV_TFM_ATTN_SCALEA_ENC_FFN_SCALE_LSA_GEN_WAV_TFM_FFN_SCALEr   A_ENC_ATTN_QA_ENC_ATTN_KA_ENC_ATTN_VA_GEN_WAV_TFM_ATTN_QA_GEN_WAV_TFM_ATTN_KA_GEN_WAV_TFM_ATTN_Vr   r   r   rm   r   r   r   r   r   r   r   r   r      s     $00AADDUDUDmDmn#00BBDDUDUDlDlm#00==DDUDUDlDlm#00==DDUDUDjDjk#00??DDUDUDlDlm $ 1 1 B BDDUDUDnDno $ 1 1 D DdFWFWFoFopM 
			'	'):):)G)GIZIZIgIgh				/	/1B1B1W1WY]YjYjYY  	AM
J<0d*XP( r   r   )
__future__r   typingr   r   r|   r   baser   r	   r
   r   r   r  r  r  r  r  _SAMPLE_RATEregisterr   r   r   r   r   <module>r.     s    " *  R R& %$$$  $%]&Y ]& &]&@ $%I; I &Ir   