
    Cpjq                    n   S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	J
r
  S SKrS SKJs  J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SSSSSS.rS SSSSS.rSrSS jr S S jr!S!S jr"\RF                  " S5       " S S\5      5       r$\RF                  " S5       " S S\5      5       r%g)"    )annotationsN)Path)TYPE_CHECKINGAnyCallableIterable)Tensor   )	ModelBase	TextModelMmprojModelLazyTorchTensorggufzt3_turbo_v1.safetensorszt3_mtl23ls_v3.safetensorszs3gen_meanflow.safetensorszs3gen_v3.safetensorsi  i  i          gffffff?g?g333333?)top_kmin_ptop_ptemppenalty_repeatg?      ?c            	     Z   Su  pnSS jnSS jn[         R                  " US-  S-   [         R                  S9X-  -  nU" [         R                  " SU S-  /[         R                  S95      nU" [         R                  " US	   US   US-   [         R                  S95      nUR                  5       nUS S 2S 4   US S S 24   -
  n	U	S U * US U2S 4   -  n
U	SS  USS 2S 4   -  n[         R                  " X5      R                  SS
9nUSUSS  US U -
  -  S S 2S 4   -  nUR                  5       $ )N)i>  i     c           
         U S-  n[         R                  " S5      S-  n[        R                  " U S:  S[        R                  " U R	                  SS9S-  5      U-  -   U5      $ )N竪P@皙@      ;@     @@      .@min)mathlogtorchwhereclamp)flinlogsteps      5/mnt/workspace/git/llama.cpp/conversion/chatterbox.py	hz_to_mel%_s3tok_mel_filters.<locals>.hz_to_mel=   sZ    ;((3-$&{{1;uyyV9Lv9U/VY`/`(`beff    c           	         [         R                  " S5      S-  n[        R                  " U S:  S[        R                  " XS-
  -  5      -  U S-  5      $ )Nr   r   r   r   r   )r"   r#   r$   r%   exp)mr)   s     r*   	mel_to_hz%_s3tok_mel_filters.<locals>.mel_to_hzB   sG    ((3-$&{{19fuyyH9M/N&NPQU`Pabbr-      r
   dtyper   g       @r   r    )r'   r	   returnr	   )r0   r	   r6   r	   )	r$   arangefloat64tensorlinspacediffminimumr&   float)srn_fftn_melsr+   r1   fftfreqsboundsmel_ffdifframpslowerupperweightss                r*   _s3tok_mel_filtersrI   7   s9    (Bvg
c ||EQJN%--@BJOHu||S"s(O5==IJFennVAYq	6A:U]][\EJJLE!T'NXdAg..E7F^OeGVGTM22E!"Iab$h'EmmE)//C/8GuQRy5&>12AtG<<G==?r-   c                    U [         -  R                  5       (       a  gU [        -  R                  5       (       a  g[        SU  35      e)NTFz#no chatterbox talker checkpoint in )TURBO_TALKERis_file
MTL_TALKERFileNotFoundError)	dir_models    r*   	_is_turborP   R   sC    L ))++J''))
A)M
NNr-   c                8   0 n[         R                  R                  U 5       nUR                  5        HI  nU" U5      nUc  M  XE   nU(       a  U4S jnO#[        R
                  UR                     n	Xy4S jnXU'   MK     S S S 5        U$ ! , (       d  f       U$ = f)Nc                .    [         R                  " U 5      $ N)r   from_local_tensor)datas    r*   <lambda>$_index_safetensors.<locals>.<lambda>c   s    _-N-Nt-Tr-   c                    [         R                  " U R                  5       5      R                  U5      R	                  U R
                  5      $ rS   )r$   
from_numpy
mmap_bytesviewreshapeshape)rU   r5   s     r*   rV   rW   f   s4    %:J:J4??K\:]:b:bch:i:q:qrvr|r|:}r-   )r   utilitySafetensorsLocalkeysr   _dtype_str_mapr5   )
pathlazyrenametensors
model_partnamenew_namerU   data_genr5   s
             r*   _index_safetensorsrj   Z   s    /1G		&	&t	,
OO%Dd|H-7-=D'+T'66tzzB'+} (H & 
- N 
-	, Ns   AB


BChatterboxModelc                     ^  \ rS rSr\R
                  R                  rSU 4S jjrSSS jjr	S r
SS jrS rS rSS jrS	 rSS
 jr\SS j5       rSS jrSS jrSrU =r$ )ChatterboxTalkerModelk   c                   > [        U5      U l        U R                  (       a  [        R                  R                  U l        [        TU ]  " U/UQ70 UD6  S U l        S U l	        S U l
        S U l        g rS   )rP   is_turbor   
MODEL_ARCHGPT2
model_archsuper__init__
_text_embd_speech_embd
_text_head_speech_headselfrO   argskwargs	__class__s       r*   ru   ChatterboxTalkerModel.__init__o   s\    !),=="oo22DO4T4V4)-+/)-+/r-   c                    U R                   (       a  [        O[        nSS jn[        U R                  U-  U R
                  U5      $ )Nc                B    U S;   a  g U R                  S5      (       a  g U $ )N)ztfmr.wte.weightztfmr.embed_tokens.weight)	cond_enc.ztext_pos_emb.zspeech_pos_emb.
startswithrg   s    r*   rd   3ChatterboxTalkerModel.index_tensors.<locals>.rename|   s(     FFPQQKr-   rg   strr6   
str | None)rp   rK   rM   rj   rO   rc   )r{   remote_hf_model_idtalkerrd   s       r*   index_tensors#ChatterboxTalkerModel.index_tensorsy   s2    !%J	 "$..6"9499fMMr-   c                h    U R                   (       a  U R                  5         g U R                  5         g rS   )rp   _set_vocab_turbo_set_vocab_mtlr{   s    r*   	set_vocabChatterboxTalkerModel.set_vocab   s!    ==!!#!r-   c                L    [        U5       Vs/ s H	  nSU S3PM     sn$ s  snf )Nz	<|speech_z|>)range)r{   n_speechis      r*   _speech_token_names)ChatterboxTalkerModel._speech_token_names   s'    +0?;?a)A3b!?;;;s   !c                4   U R                  5       u  pn[        U5      nU R                  S   nU R                  U5      nX-  nU[        R
                  R                  /U-  -  n[        U R                  S-  SSS9 nU Vs/ s HB  oR                  5       (       d  M  UR                  S5      (       a  M1  UR                  S5      PMD     n	nS S 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#                  W	5        U R                  R%                  U[&        -   5        U R                  R)                  U[*        -   5        U R                  R-                  S	5        U R                  R/                  S	5        U R                  R1                  [3        [5        U5      5      5        g s  snf ! , (       d  f       GNC= f)
Nspeech_vocab_sizez
merges.txtrutf-8encodingz#version
gpt2F)get_vocab_baselenhparamsr   r   	TokenTypeCONTROLopenrO   stripr   rstripgguf_writeradd_tokenizer_modeladd_tokenizer_preadd_token_listadd_token_typesadd_token_mergesadd_bos_token_id
SPEECH_BOSadd_eos_token_id
SPEECH_EOSadd_add_bos_tokenadd_add_eos_tokenadd_suppress_tokenslistr   )
r{   tokenstoktypestokpren_textr   speechr'   linemergess
             r*   r   &ChatterboxTalkerModel._set_vocab_turbo   s   #'#6#6#8 &V<< 34))(3T^^++,x77$..</wG145jAD'doo^hNi'dkk$'AFj H 	,,V4**62''/((2))&1))&:*=>))&:*=>**51**51 	,,T%--@A k HGs*   <HHH5H
HH
Hc           	     `  ^ [        U R                  S-  SSS9 n[        R                  " U5      nS S S 5        [        R
                  R                  5       mSU4S jjnU R                  S   n[        U5       Vs/ s H	  nSU S3PM     nn[        [        R                  R                  5      /U-  n/ nWS	   S
   R                  5        H  u  pU	S:X  a  M  U" U	5      Xe'   [        [        R                  R                  5      Xu'   [        U	5      S:X  d  MM  [        U	R                  S5      5      S:  d  Mm  U	R                  S5       V
s/ s H  n
TU
   PM
     nn
[        S[        U5      5       H.  nUR!                  SR#                  US U 5      S-   X   -   5        M0     M     UR%                  S/ 5       H5  nUS   XmS   '   [        [        R                  R&                  5      X}S   '   M7     US	   S
   S   nU" S5      Xn'   [        [        R                  R                  5      X~'   U R                  S   nX`R)                  U5      -  nU[        [        R                  R&                  5      /U-  -  nUnUS	   R%                  S/ 5       HQ  n[+        U[,        5      (       a  UOUR/                  S5      u  nn
UR!                  U" U5      S-   U" U
5      -   5        MS     U R0                  R3                  S5        U R0                  R5                  S5        U R0                  R7                  U5        U R0                  R9                  U5        U R0                  R;                  U5        U R0                  R=                  U[>        -   5        U R0                  RA                  U[B        -   5        U R0                  RE                  S5        U R0                  RG                  S5        U R0                  RI                  [-        [        U5      5      5        g ! , (       d  f       GN= fs  snf s  sn
f )Nmtl_tokenizer.jsonr   r   r   c                X   > SR                  U4S jU R                  S5       5       5      $ )N c              3  .   >#    U  H
  nTU   v   M     g 7frS    ).0bbyte_maps     r*   	<genexpr>DChatterboxTalkerModel._set_vocab_mtl.<locals>.enc.<locals>.<genexpr>   s     B0A18A;0As   r   )joinencode)sr   s    r*   enc1ChatterboxTalkerModel._set_vocab_mtl.<locals>.enc   s!    77B0ABBBr-   
vocab_sizez[unused_]modelvocab r
   r   added_tokenscontentidz[SPACE]r   r   r   defaultF)r   r   r6   r   )%r   rO   jsonloadr   r   bytes_to_unicoder   r   intr   UNUSEDitemsNORMALr   r   appendr   getr   r   
isinstancer   splitr   r   r   r   r   r   r   r   r   r   r   r   r   )r{   r'   tokr   r   r   r   r   char_mergestr   partskentryspace_idr   r   r0   ar   s                      @r*   r   $ChatterboxTalkerModel._set_vocab_mtl   sy    $..#77wOST))A,C P ::..0	C l+6;FmDmxs!_mD--./&8!#L)//1DACx AFIdnn334HK1v{s188G#459./hhw.?@.?!.?@q#e*-A&&rwwuRay'9C'?%('JK . 2 WW^R0E"'	"2F;$'(>(>$?H4[! 1 w<(3s8 !6!67<< 34**844S//01H<< W!!(B/A"1d++1DAqMM#a&3,Q/0 0 	,,V4**95''/((2))&1))&:*=>))&:*=>**51**51 	,,T%--@Au PO E As   P;P&P+
P#c                   [        U R                  S-  SSS9 n[        R                  " U5      S   S   nS S S 5        / nWR	                  5        HZ  u  pE[        U5      S:w  a  M  UR                  5       nXd:w  d  M-  [        U5      S:X  d  M>  Xb;   d  ME  UR                  XRU   45        M\     U$ ! , (       d  f       N= f)Nr   r   r   r   r   r   r
   )r   rO   r   r   r   r   rF   r   )r{   r'   r   pairsr   r   lows          r*   _mtl_case_fold_pairs*ChatterboxTalkerModel._mtl_case_fold_pairs   s     $..#77wOSTIIaL)'2E P')KKMDA1v{'')CxCHMclas_- "  POs   B00
B>c                   U R                   (       a  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U R                  S   -  5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        GOhU 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                  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                  U R                  S   5        U R                  R                  U R                  5        U R                   (       a  [        O[         nU R                  R#                  US   5        U R                  R%                  US   5        U R                  R'                  US   5        U R                  R)                  US   5        U R                  R+                  US   5        U R                  R-                  [.        5        g )Nn_layern_ctxn_embd   n_headlayer_norm_epsilonnum_hidden_layersmax_position_embeddingshidden_sizeintermediate_sizenum_attention_headsnum_key_value_heads
rope_thetahead_dimrms_norm_epsr   r   r   r   r   )rp   r   add_block_countr   add_context_lengthadd_embedding_lengthadd_feed_forward_lengthadd_head_countadd_layer_norm_epsadd_head_count_kvadd_rope_freq_baseadd_rope_dimension_countadd_layer_norm_rms_epsadd_file_typeftypeTURBO_SAMPLINGMTL_SAMPLINGadd_sampling_top_kadd_sampling_min_padd_sampling_top_padd_sampling_tempadd_sampling_penalty_repeatadd_sampling_penalty_last_nPENALTY_LAST_N)r{   samplings     r*   set_gguf_parameters)ChatterboxTalkerModel.set_gguf_parameters  s~   ==,,T\\)-DE//W0EF11$,,x2HI44Qh9O5OP++DLL,BC//=Q0RS,,T\\:M-NO//=V0WX11$,,}2MN44T\\BU5VW++DLL9N,OP..t||<Q/RS//\0JK55dll:6NO33DLL4PQ&&tzz2%)]]>++HW,=>++HW,=>++HW,=>**8F+;<44X>N5OP44^Dr-   c           	   #    #    U R                   (       a  g U R                  S   nU R                  S   nU R                  S   nSU[        R                  " SUS[        R                  S9U-  -  -  nUS   nUS	   US
   -  nUS	   US   -  n/ nU H  n	S[
        R                  -  U	-  n
X:  a  UR                  S5        M1  X:  a  UR                  U5        MI  US	   U
-  US
   -
  US   US
   -
  -  nUR                  SSU-
  U-  U-   -  5        M     U R                  [        R                  R                  5      [        R                  " U[        R                  S94v   g 7f)Nrope_scalingr   r   r   r   r3   r4   factor original_max_position_embeddingslow_freq_factorhigh_freq_factorr
   )rp   r   r$   r7   float32r"   pir   format_tensor_namer   MODEL_TENSOR
ROPE_FREQSr9   )r{   rpdimbasefreqsr  low_freq_wavelenhigh_freq_wavelenrope_factorsfreqwavelensmooths               r*   generate_extra_tensors,ChatterboxTalkerModel.generate_extra_tensors  s~    ==\\.)ll:&||L)tQQemm Ls RSTH@ABGXDYYABRHZE[[D$''kD(G*##A&+##F+?@7JRPaMbbgij|g}  AC  DU  AV  hV  W##A!f*)>)G$HI  &&t'8'8'C'CDellS_glgtgtFuvvs   E E"c                    U R                   " USU R                  S   U-  S-  /U R                  SS  Q76 R                  SS5      R                  U R                  5      $ )Nr3   r   r
   )r\   r]   swapaxes)rH   r   s     r*   permuteChatterboxTalkerModel.permute4  sW     7==+;v+E+J_W]][\[]M^_!Q'	)r-   c              #    #    U R                   bq  U R                  bd  U R                  [        R                  R
                  5      [        R                  " U R                   U R                  /SS94v   S U l         S U l        U R                  bs  U R                  be  U R                  [        R                  R                  5      [        R                  " U R                  U R                  /SS94v   S U l        S U l	        g g g 7f)Nr   r&  )rv   rw   r"  r   r#  
TOKEN_EMBDr$   catrx   ry   OUTPUTr   s    r*   _maybe_emit_fused'ChatterboxTalkerModel._maybe_emit_fused;  s     ??&4+<+<+H**4+<+<+G+GH99doot/@/@AqIK K"DO $D??&4+<+<+H**4+<+<+C+CD99doot/@/@AqIK K"DO $D	 ,I&s   D Dc              #  L  #    UR                  S5      (       a  X!4v   g US:X  a  U R                  (       dW  [        [        UR                  S   5      5      nU R                  5        H	  u  pVXdU'   M     U[        R                  " U5         nXl        U R                  5        S h  vN   g US:X  a  Xl
        U R                  5        S h  vN   g US:X  a  Xl        U R                  5        S h  vN   g US:X  a  Xl        U R                  5        S h  vN   g US:X  a  g UR                  S5      (       d   eU[        S5      S  nU R                  (       a>  UR                  S	5      (       a  UR                  S
S5      nU R!                  U5      U4v   g UR                  S5      (       a  U R#                  XR$                  S   5      nUR                  S5      (       a  U R#                  XR$                  S   5      nU R!                  SU-   5      U4v   g  GNr GNP GN. GN7f)N
rope_freqsztext_emb.weightr   speech_emb.weightztext_head.weightzspeech_head.weightzspeech_head.biasztfmr.)z.c_attn.weightz.c_proj.weightz.c_fc.weightr
   zq_proj.weightr   zk_proj.weightr   zmodel.)r   rp   r   r   r]   r   r$   r9   rv   r:  rw   rx   ry   r   endswith	transposemap_tensor_namer3  r   )r{   
data_torchrg   bidfoldrG   rF   s          r*   modify_tensors$ChatterboxTalkerModel.modify_tensorsG  s    ??<(($$$$== E*"2"21"567$($=$=$?LE"'K %@'T(:;
(O--///&& *--///%%(O--///'' *--///%% w''''CLM"==}}QRR'11!Q7
''-z::==))j,,?T2UVJ==))j,,?T2UVJ##HtO4jAAC 0 0 0 0sI   B$H$&H'$H$H$H$0H1$H$H!DH$H$H$!H$)rw   ry   rv   rx   rp   rs   rO   r   rS   r   r   r6   dict[str, Callable[[], Tensor]])r   r   r6   z	list[str])r6   zlist[tuple[int, int]]r6   Iterable[tuple[str, Tensor]])rH   r	   r   r   r6   r	   rB  r	   rg   r   rC  z
int | Noner6   rK  )__name__
__module____qualname____firstlineno__r   rq   LLAMArs   ru   r   r   r   r   r   r   r  r/  staticmethodr3  r:  rE  __static_attributes____classcell__r~   s   @r*   rm   rm   k   sk    &&J0N"<B6EBNE8w. ) )
%1B 1Br-   rm   c                  v   ^  \ rS rSrSrSrSU 4S jjrSS jrSSS jjrS r	SS jr
SS	 jrS
 rSS jrSrU =r$ )ChatterboxMmprojModeli{  FTc                j   > [        U5      U l        [        TU ]  " U/UQ70 UD6  0 U l        0 U l        g rS   )rP   rp   rt   ru   _wnorm_g_wnorm_vrz   s       r*   ru   ChatterboxMmprojModel.__init__  s4    !),4T4V4+-+-r-   c                8    U R                   R                  S5      $ )Naudio_config)global_configr   r   s    r*   get_audio_config&ChatterboxMmprojModel.get_audio_config  s    !!%%n55r-   c                  ^  T R                   (       a  [        O[        nT R                   (       a  [        O[        nSS jnSS jnSU 4S jjn[        T R                  U-  T R                  U5      nUR                  [        T R                  S-  T R                  U5      5        UR                  [        T R                  U-  T R                  U5      5        U$ )Nc                    U R                  S5      (       a  g U S;   a  g S H-  u  pU R                  U5      (       d  M  X [        U5      S  -   s  $    U R                  S5      (       a  SU -   $ g )Nnum_batches_tracked)ztokenizer.windowztokenizer._mel_filters))zflow.encoder.za.gen.fenc.)zflow.decoder.estimator.z
a.gen.est.)zmel2wav.za.gen.hift.)zspeaker_encoder.za.spk.)z
tokenizer.za.s3tok.zflow.za.gen.)r?  r   r   )rg   srcdsts      r*   rename_s3gen9ChatterboxMmprojModel.index_tensors.<locals>.rename_s3gen  ss    }}233 EE ??3''c#hi00 w''$&r-   c                :    U R                  S5      (       a  g SU -   $ )Nsimilarity_a.ve.r   r   s    r*   	rename_ve6ChatterboxMmprojModel.index_tensors.<locals>.rename_ve  s    }--T>!r-   c                   > U R                  S5      (       a  SU [        S5      S  -   $ U S:X  a  gU S:X  a  gU S:X  a)  TR                  [        R                  R
                  5      $ g )Nr   a.cenc.ztext_pos_emb.emb.weightza.gen.t3.text_pos_embspeech_pos_emb.emb.weightza.gen.t3.speech_pos_embr>  )r   r   r"  r   r#  A_GEN_CODE_OUT_EMBD)rg   r{   s    r*   rename_talker:ChatterboxMmprojModel.index_tensors.<locals>.rename_talker  sm     {++ 4K(8(9#:::00.220**..t/@/@/T/TUUr-   zve.safetensorsr   )	rp   rK   rM   TURBO_S3GEN	MTL_S3GENrj   rO   rc   update)r{   r   r   s3genrf  rk  rq  re   s   `       r*   r   #ChatterboxMmprojModel.index_tensors  s    !%J#}})	,	"
	 %T^^e%;TYYU)$..;K*KTYYXabc)$..6*A499m\]r-   c                t   U R                   R                  U R                  5        U R                   R                  S5        U R                   R	                  [
        R                  R                  5        U R                   R                  S5        U R                   R                  S5        U R                   R                  S5        U R                   R                  S5        U R                   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%                  S5        U R                   R'                  S5        U R                   R)                  S5        U R                   R+                  S	5        U R                   R-                  S
5        U R                   R/                  S5        U R                   R1                  SS5        U R                   R1                  SS5        U R                   R1                  SU R2                  S   S   5        U R                   R1                  SU R4                  (       a  S5        g S5        g )NTP   r      r
   gh㈵>i   i         zchatterbox.n_melszchatterbox.sample_ratei]  zchatterbox.speech_vocabtext_configr   zchatterbox.meanflow)r   r  r  add_clip_has_audio_encoderadd_clip_audio_projector_typer   VisionProjectorTypeCHATTERBOX_SPKENCadd_audio_projection_dimadd_audio_num_mel_binsadd_audio_block_countadd_audio_embedding_lengthadd_audio_head_countadd_audio_feed_forward_length!add_audio_attention_layernorm_epsadd_clip_has_gen_audio_encoder!add_clip_gen_audio_projector_type
CHATTERBOX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_uint32r^  rp   r   s    r*   r  )ChatterboxMmprojModel.set_gguf_parameters  s   &&tzz2 	33D966t7O7O7a7ab11"5//3..q133C8--a066s;::4@ 	77=::4;S;S;^;^_55b977<::4@221511!4>>tD##$7<##$<eD##$=t?Q?QR_?`at?uv##$91USTUr-   c           	     
   UR                  S5      S   nUR                  S5      (       a  X R                  U'   OX R                  U'   X0R                  ;   a  X0R                  ;   a  U R                  R	                  U5      nU R                  R	                  U5      nUR                  5       R                  [        [        SUR                  5       5      5      SS9nUS-   UR                  5       UR                  5       -  U-  4$ g )N!.parametrizations.weight.originalr   	original0r
   T)r&  keepdim.weight)
r   r?  rY  rZ  popr=   normtupler   r&  )r{   rg   rB  r'  gvr  s          r*   _fuse_weight_norm'ChatterboxMmprojModel._fuse_weight_norm  s    zz=>qA==%%",MM$",MM$== T]]%:!!$'A!!$'A779>>eE!QUUW,=&>>MD9$aggi!'')&;d&BCCr-   c              #  T   #    SU;   a  U R                  X!5      nUb  Uv   g X!4v   g 7f)Nr  )r  )r{   rB  rg   rC  fuseds        r*   rE  $ChatterboxMmprojModel.modify_tensors  s4     .$6**4<E   s   &(c                   AAUR                  S5      (       d  US:X  a  [        R                  R                  $ US:  a0  UR	                  S5      (       a  [        R                  R
                  $ [        R                  R                  $ )N)rj  rn  za.gen.cond.z	a.gen.t3.za.gen.hift.m_source.a.s3tok.mel_filtersr3   )r  z	.weight_v)r   r   GGMLQuantizationTypeF32r?  F16)r{   rg   rh   rC  n_dimss        r*   tensor_force_quant(ChatterboxMmprojModel.tensor_force_quant  s|    # ghhlt  yN  mN,,000 Q;8,,-EFF,,000((,,,r-   c              #    ^ ^^^^^^^^^^^^^#    T R                   (       a  [        O[        m[        R                  " T R
                  S-  SSS9n[        U[        5      (       a  US   OUR                  n[        U[        5      (       a  US   OUR                  n[        U[        5      (       d  [        U5      OUn[        U[        5      (       d  [        U5      OUnS+U U4S jjnS[        5       4v   S	US
   S   R                  [        R                  5      4v   SUS   S   R                  5       4v   SUS   S   R                  5       4v   U" S5      R                  5       nU" S5      R                  5       nXRS   S   R                  5       -  U-   nT R                   (       a0  SU4v   SUS   S   R                  [        R                  5      4v   g [        R                  " 5          U" S5      R                  5       nU" S5      R                  5       n	US   S   n
X   U	S U
R                   S    -   nU" S5      R                  5       mU" S5      R                  5       mU" S5      R                  5       mU" S5      R                  5       mU" S5      R                  5       mU" S5      R                  5       mU" S5      R                  5       mU" S5      R                  5       mU" S 5      R                  5       mU" S!5      R                  5       mU" S"5      S   R                  5       nS#mUR                   S$   mS,UUUUUUUUUUUU4S% jjnU" X5      nU" X5      nU" S&5      R                  5       nUS S 2S4   US'   R#                  S(5      S   -  nS)[        R$                  " US    UUS    /SS*94v   S S S 5        g ! , (       d  f       g = f7f)-Nzconds.ptcpuF)map_locationweights_onlyt3genc                  > [         R                  R                  TR                  T-  5       nX   n[        R
                  UR                     n[        R                  " UR                  5       5      R                  U5      R                  UR                  5      R                  5       sS S S 5        $ ! , (       d  f       g = frS   )r   r^   r_   rO   r   ra   r5   r$   rY   rZ   r[   r\   r]   clone)rg   r   rU   r5   r{   r   s       r*   talker_tensorCChatterboxMmprojModel.generate_extra_tensors.<locals>.talker_tensor  s    ..t~~/FG5{'66tzzB''(9:??FNNtzzZ``b HGGs   A;B33
Cr  za.gen.cond.gen_prompt_tokenprompt_tokenr   za.gen.cond.gen_prompt_featprompt_featza.gen.cond.gen_embedding	embeddingzcond_enc.spkr_enc.weightzcond_enc.spkr_enc.biasspeaker_embza.gen.cond.spkr_defaultza.gen.cond.prompt_speech_tokenscond_prompt_speech_tokensr>  ro  z#cond_enc.perceiver.attn.norm.weightz!cond_enc.perceiver.attn.norm.biasz#cond_enc.perceiver.attn.to_q.weightz!cond_enc.perceiver.attn.to_q.biasz#cond_enc.perceiver.attn.to_k.weightz!cond_enc.perceiver.attn.to_k.biasz#cond_enc.perceiver.attn.to_v.weightz!cond_enc.perceiver.attn.to_v.biasz'cond_enc.perceiver.attn.proj_out.weightz%cond_enc.perceiver.attn.proj_out.biasz&cond_enc.perceiver.pre_attention_queryr   r
   c                L  > [         R                  " U T4TT5      n[         R                  " UT4TT5      nUTR                  -  T
-   R                  STTT-  5      R	                  SS5      nUTR                  -  T-   R                  STTT-  5      R	                  SS5      nUTR                  -  T-   R                  STTT-  5      R	                  SS5      n[         R
                  " XEU5      nUR	                  SS5      R                  ST5      nUTR                  -  T	-   U -   $ )Nr   r   r
   )F
layer_normTr[   r@  scaled_dot_product_attentionr\   )x1x2nx1nx2qr   r  ctxbkbobqbvln_bln_wn_er   wkwowqwvs           r*   
attn_block@ChatterboxMmprojModel.generate_extra_tensors.<locals>.attn_block6  s   ll2vtT:ll2vtT:244Z"_**2vsf}EOOPQSTU244Z"_**2vsf}EOOPQSTU244Z"_**2vsf}EOOPQSTU44Q1=mmAq)11"c:RTTzB++r-   zcond_enc.emotion_adv_fc.weightemotion_advr   za.gen.cond.t3_condr6  )rg   r   r6   r	   )r  r	   r  r	   r6   r	   )rp   rK   rM   r$   r   rO   r   dictr  r  varsrI   toint32r=   no_gradr]   r\   r8  )r{   condst3cgencr  spkr_wspkr_bspkr_row
speech_emb
speech_poscond_tokenspsequeryr  prep32emoemo_rowr  r  r  r  r  r  r  r   r   r  r  r  r  s   `                 @@@@@@@@@@@@@r*   r/  ,ChatterboxMmprojModel.generate_extra_tensors  s    !%J

4>>J6UY^_'t44eDk%(()%66uU|EII)#t44d3i#!+D$!7!7tDzT	c 	c %&8&:;; -d>.B1.E.H.H.UVV+T--@-C-I-I-KLL *4+<Q+?+E+E+GHH9:@@B78>>@.q17799FB== -h774c:U6VWX6Y6\6\]b]h]h6ijj
 ]]_&':;AACJ&'BCIIKJ9:1=K)J7M9J9J19M,NNC !FGMMOD !DEKKMDDEKKMBBCIIKBDEKKMBBCIIKBDEKKMBBCIIKBHIOOQBFGMMOB!"JKANTTVEF++a.C, , , U(CS&C @AGGIC!Q$i#m"4"<"<R"@"CCG'HTNCQU3W]^)_``I __s   G"O2GO	 	O	
OO)rY  rZ  rp   rG  )r6   zdict[str, Any] | NonerS   rH  )rg   r   rB  r	   r6   ztuple[str, Tensor] | NonerL  rJ  )rM  rN  rO  rP  has_vision_encoderhas_audio_encoderru   r_  r   r  r  rE  r  r/  rS  rT  rU  s   @r*   rW  rW  {  sB    .6/bV<!-Ia Iar-   rW  )r6   r	   )rO   r   r6   bool)rb   r   rc   r  rd   zCallable[[str], str | None]r6   rI  )&
__future__r   r   r"   pathlibr   typingr   r   r   r   r$   torch.nn.functionalnn
functionalr  r	   r'  r   r   r   r   r   rK   rM   rs  rt  r   r   r  r  r  rI   rP   rj   registerrm   rW  r   r-   r*   <module>r     s   , #    9 9    J J(*
+%	 


  #s^ab$s^ab6O" %&LBI LB 'LB^ %&IaK Ia 'Iar-   