
    fPi-=                     d   d dl Z d dlZd dlZd dlmZ d dlmZ  e j        e	          Z
	 	 d,dedej        ded	ed
ef
dZ	 d-dedej        ded	edef
dZ	 d.dedej        ded
efdZ	 d.dedej        deded
ef
dZdeeej        ej        f                  deeej        ej        f                  fdZdeeej        ej        ej        ej        f                  fdZ	 	 d/dedej        dedefdZ	 d.dej        dedefdZ	 d.dej        dedefdZ	 d.dedej        ded	ed
ef
dZ	 	 d,dedej        ded	ed
ef
dZ	 	 	 d0dedej        ded ed!ed
edefd"Z	 	 d1dedej        ded#ed	ed
edefd$Z	 	 d1dedej        ded	edededed
edefd%Zd&ed'efd(Z ded)ee!         d*ee!         fd+Z"dS )2    N)WhisperConfig)InferenceSession  Fconfigdevice
batch_sizesequence_lengthuse_fp16c                 v    |rt           j        nt           j        }t          j        || j        |||          }|S Nr   dtype)torchfloat16float32randnnum_mel_bins)r   r   r   r	   r
   torch_dtypeaudio_featuress          /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/onnxruntime/transformers/models/whisper/whisper_inputs.pyget_sample_audio_featuresr   !   s;     $,>%--K[V-@/Z`hstttN    T	use_int32c                 z    |rt           j        nt           j        }t          j        d| j        ||f||          }|S )Nr   )lowhighsizer   r   )r   int32int64randint
vocab_size)r   r   r   r	   r   r   decoder_input_idss          r   get_sample_decoder_input_idsr#   /   sJ     "+;%++KF%Z,IRX`k   r   c                     |rt           j        nt           j        }t          j        || j        | j        ||          }|S r   )r   r   r   r   max_source_positionsd_model)r   r   r   r
   r   encoder_hidden_statess         r    get_sample_encoder_hidden_statesr(   ?   sF     $,>%--K!KF/Va   ! r   past_seq_lenc                 (  	
 | j         	| j        	z  | j        |rt          j        nt          j        
	
fdt          | j                  D             }	
fdt          | j                  D             }t          ||          S )Nc                 x    g | ]6}t          j                   t          j                   f7S r   r   rand).0_r   r   	head_size	num_headsr)   r   s     r   
<listcomp>z.get_sample_past_key_values.<locals>.<listcomp>\   sc          
  Jz9lIf\ghhhJz9lIf\ghhh	
     r   c                 x    g | ]6}t          j                   t          j                   f7S r,   r-   )r/   r0   r   r   r1   r%   r2   r   s     r   r3   z.get_sample_past_key_values.<locals>.<listcomp>c   sg     ! ! !
  Jz9.BIV\dopppJz9.BIV\doppp	
! ! !r   )	decoder_attention_headsr&   r%   r   r   r   rangedecoder_layersflatten_past_key_values)r   r   r   r)   r
   self_attention_kv_cachescross_attention_kv_cachesr1   r%   r2   r   s    ```   @@@@r   get_sample_past_key_valuesr;   O   s     .I)+I#  $,>%--K                 
 v,--     ! ! ! ! ! ! ! ! !
 v,--! ! ! ##;=VWWWr   self_attn_kv_cachescross_attn_kv_cachesc                 |    g }t          | |d          D ]&\  \  }}\  }}||||f}|                    |           '|S )NF)strict)zipappend)r<   r=   past_key_valuesself_k_cacheself_v_cachecross_k_cachecross_v_cachelayer_kv_cachess           r   r8   r8   o   sn     OHK1%I I I 0 0D$|&D}m (}mT////r   	kv_cachesc                     g g }}| D ][\  }}}}|                     |           |                     |           |                     |           |                     |           \||fS N)rA   )rH   r<   r=   rC   rD   rE   rF   s          r   group_past_key_valuesrK   ~   s     13B-DM 3 3@lM=""<000""<000##M222##M2222 444r      num_alignment_headsc                 l    |rt           j        nt           j        }t          j        |df||          }|S )N   r   )r   r   r   ones)r   r   rM   r   r   alignment_headss         r   get_sample_alignment_headsrR      s9     "+;%++Kj"5q!9&P[\\\Or   sot_sequence_lengthc                 j    |rt           j        nt           j        }t          j        |g| |          }|S r   r   r   r   tensor)r   rS   r   r   
sot_lengths        r   get_sample_sot_sequence_lengthrX      s6    
 "+;%++K23F+VVVJr   segment_lengthc                 j    |rt           j        nt           j        }t          j        |g| |          }|S r   rU   )r   rY   r   r   segment_sizes        r   get_sample_segment_lengthr\      s5    
 "+;%++K< 0{SSSLr   c                       j         |rt          j        nt          j         fdt	           j                  D             }|S )Nc           
      N    g | ]!}t          j        j                   "S r,   )r   r.   r%   )r/   r0   r   r   r   r2   r	   r   s     r   r3   z"get_sample_QKs.<locals>.<listcomp>   sN         	
	?F4OX^fq	
 	
 	
  r   )r5   r   r   r   r6   r7   )r   r   r   r	   r
   QKsr2   r   s   ````  @@r   get_sample_QKsr`      sy     .I#+>%--K         v,--	  C Jr   c                 0    t          | ||||          }d|iS )Nr   )r   )r   r   r   r	   r
   r   s         r   get_sample_encoder_inputsrb      s%     /vvz?\deeNn--r   decoder_sequence_lengthencoder_sequence_lengthc                 X    t          | ||||          }t          | ||||          }||dS )N)r   r"   )r   r#   )	r   r   r   rc   rd   r
   r   r   r"   s	            r   &get_sample_encoder_decoder_init_inputsrf      sB     /vvzKbdlmmN4VVZQhjstt,CTUUUr   past_sequence_lengthc                 ~    t          | ||||          }t          | |||          }t          | ||||          }	|||	dS )N)r"   r'   rB   )r#   r(   r;   )
r   r   r   rg   r	   r
   r   r"   r'   rB   s
             r   get_sample_decoder_inputsri      s`     5VVZQ`bkll<VVZYabb0MackllO.!6*  r   c	                     t          | |||          }	t          ||          }t          ||          }t          | ||||          }
|	|||
dS )N)rQ   rS   rY   r_   )rR   rX   r\   r`   )r   r   r   r	   rM   rS   rY   r
   r   rQ   r_   s              r   get_sample_jump_times_inputsrk      si     1ATV_``O8ATUU.v~FFN
_h
O
OC*2(	  r   inputsmodelc                    d\  }}d\  }}}}d\  }}	d| v r*t          | d                   \  }}|d         j        \  }}}}i }
t          t          d |                                                    }d|v }|D ]c}|dv rB| d	                                                                                                         |
|<   I|d
k    rB| d
                                                                                                         |
|<   |dv rB| d                                                                                                         |
|<   d|v sd|v r|                    d                                                                                                          }|r7t          j
        |||	|f|j                  }||d |d |d |d |f<   ||
|<   c||
|<   jd|v sd|v rR|                    d                                                                                                          }||
|<   |dk    r&t          j        |gt          j                  |
|<   |dk    r(t          j
        |||	ft          j                  |
|<   |dk    rC| d                                                                                                         |
|<   g|dk    rC| d                                                                                                         |
|<   |dk    rC| d                                                                                                         |
|<   d|v rV| d                             d                                                                                                          |
|<   St          d|           |
S )N)NN)r   r   r   r   )   i  rB   r   c                     | j         S rJ   )name)is    r   <lambda>z(convert_inputs_for_ort.<locals>.<lambda>  s    af r   cache_indirection>   r   encoder_input_idsr   r'   >   	input_idsr"   r"   past_key_selfpast_value_self)r   past_key_crosspast_value_crossrg   rQ   rS   rY   cross_qkr_   zUnknown name not recognized: )rK   shapelistmap
get_inputsdetachcpunumpypopnpzerosr   arrayr   
ValueError)rl   rm   r<   r=   r   r2   r)   r1   	num_beamsmax_seq_len
ort_inputsmodel_inputsuse_buffer_sharingrq   orig_kv_cachenew_kv_caches                   r   convert_inputs_for_ortr     s    1;--5?2J	<#I{F""6KFSdLe6f6f3	29LQ9O9U6
I|YJ,,e.>.>.@.@AABBL,< *E *E:::%&67>>@@DDFFLLNNJt,,,%&=>EEGGKKMMSSUUJt777%&9:AACCGGIIOOQQJt$$(9T(A(A/33A66==??CCEEKKMMM! 1!xYY(W_l_rsssS`[j[*9*m|mZiZOP#/
4  #0
4  %%);t)C)C044Q77>>@@DDFFLLNNM,Jt+++!xbhGGGJt(((!xY(LTVT\]]]Jt&&&%&78??AAEEGGMMOOJt***%&;<CCEEIIKKQQSSJt%%%%&67>>@@DDFFLLNNJt4%e}0033::<<@@BBHHJJJtCTCCDDDr   input_namesoutput_namesc                 v   i }||z   D ]}|dv rddi||<   |dv r	ddd||<   |dk    rddi||<   )|d	v r.|d
k    r	ddd||<   =|dk    rddi||<   Kd|v sd|v r	ddd||<   \d|v sd|v r	ddd||<   md|v sd|v sd|v sd|v rddi||<   d|v r	ddd||<   d|v r	ddd||<   t          d|           |S )N>   r   ru   r   r   >   rv   r"   r	   )r   ro   rQ   rM   >   rY   rS   logitsr'   rw   rx   rg   )r   rO   present_key_selfpresent_value_selftotal_sequence_lengthry   rz   present_key_crosspresent_value_crossr{   
jump_times
max_lengthz$Unknown input or output name found: )	Exception)r   r   r   dynamic_axesrq   s        r   get_model_dynamic_axesr   L  s   
 Ll* )K )K:::"#\!2L777%16G!H!HL&&&"#%:!;L>>>X%16G!H!HL,,,"#\!2L$$(9T(A(A%16L!M!ML4''+?4+G+G &26M!N!NL$$!T))"d**$,, #$\!2L4%16G!H!HLT!!%1l!C!CLI4IIJJJr   )r   F)T)F)rL   T)r   FT)FT)#loggingr   r   r   transformersr   onnxruntimer   	getLogger__name__loggerr   intboolr   r#   r(   r;   r}   tupleTensorr8   rK   rR   rX   r\   r`   rb   rf   ri   rk   dictr   strr    r   r   <module>r      s)         & & & & & & ( ( ( ( ( (		8	$	$,  	 		L	 	 		
 	 	 	 	&  L  	
    ( 	
! 
!
!L
! 
! 	
! 
! 
! 
!* X XXLX X 	X
 X X X X@
eEL%,$>?@
uU\5<%?@A
 
 
 
	5E%,elELPQR	5 	5 	5 	5"  !	 L  	      L      L    "  L  	
    .  . ..L. . 	.
 . . . ." $(V VVLV V !	V
 !V V V V V V.  L  	
      8  L  	
        2::: : : :|00c0 s)0 0 0 0 0 0r   