
    ij4                     &   d dl Zd dlmZ d dlZd dlmZ d dl	m
Z
 d dl	mZ d dl	mZ d dl	mZ d dlmZ dZd	 Zd
 Zd Zd#dZd#dZd#dZd#dZd$dZd Zd#dZd Zd Zd%dZd Zd Zd Z d&dZ!d&dZ"	 d'dZ#d Z$	 	 	 d(dZ%d Z&d Z'd  Z(d! Z)d" Z*y))    N)Type)OpenVINOKerasTensor)cast)get_ov_output)standardize_dtype)stackc                    |t        j                  | t        j                  dgt        j                        d      j                  d      }t        j                  |t        j                  d|j                                     j                  d      S t        j                  || j                               j                  d      S )Nr   F	keep_dims   )ov_opset
reduce_maxconstantr   i32outputaddget_element_type)segment_idsnum_segmentsmax_ids      t/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/openvino/math.py_resolve_num_segmentsr      s    $$**A39U

&) 	 ||H%%a)@)@)BC

&)	 k224fQi    c           
         t        j                  |t        j                  d|j                                     j	                  d      }t        j
                  |||      j	                  d      }t        j                  |t        j                  dt        j                              j	                  d      }t        j                  |t        j                  d|j                                     j	                  d      }| j                         }	|	j                  j                  r|	j                  j                         nd}
|
dkD  rYt        j                  | t        j                        j	                  d      }t        j                  |t        j                  dgt        j                        t        j                  dgt        j                        t        j                  dgt        j                        t        j                  dgt        j                              j	                  d      }t        j                  |t        j                  dt        j                              j	                  d      }t        j                   ||gd      j	                  d      }nGt        j                  |t        j                  dt        j                              j	                  d      }t        j                  || j                               j	                  d      }t        j"                  ||      j	                  d      }t        j$                  ||| |      j	                  d      }t        j                  dgt        j                        j	                  d      }t        j                  |t        j                  dt        j                              j	                  d      }t        j                  |||t        j                  dgt        j                        j	                  d      t        j                  dgt        j                        j	                  d            j	                  d      S )	zEScatter-based segment reduction used by segment_sum and segment_prod.r   r   output_typer	   startstopstepaxesaxis)	reduction)r   lessr   r   r   select	unsqueezer   r   r   get_partial_shaperank	is_static
get_lengthshape_ofsliceconcat	broadcastscatter_nd_update)datar   r   r&   init_valis_negativesafe_segment_idsindicesnum_segments_plus_1
data_shaper+   data_shape_node
rest_shapenum_seg_nodebuffer_shapeinit_val_nodebuffer	scatteredr    ends                       r   _segment_reduce_via_scatterrB      sX    --X&&q+*F*F*HIfQi   \;fQi    (++B9fQi  #,,h''<+H+H+JKfQi  '')J+5??+D+D:??%%'"Dax"++DdhhGNN
 ^^##QC2""J<:""A31""A31
 &) 	  ))!2!21dhh!?

&) 	  :&Q

&) 	  ))!2!21dhh!?

&) 	 %%h0E0E0GHOO	M |<CCAFF**fQi  qc488,33A6E


h''4884fQi  >>1#txx(//21#txx(//2 fQir   c                    t        j                  dt        j                        j	                  d      }t        j                  dgt        j                        j	                  d      }t        j                  dgt        j                        j	                  d      }t        j
                  |t        j                  d|j                                     j	                  d      }t        j                  |||      j	                  d      }t        j                  t        j                  |t        j                        |      j	                  d      }t        j                  ||ddd      }	|	j	                  d      }
|	j	                  d      }t        j                  | ||      j	                  d      }t        j                  |t        j                  d|j                                     j	                  d      }t        j                  ||
|d      j	                  d      }t        j                  ||      j	                  d      }t        j                  |||||      j	                  d      S )	zCSort + segment_max reduction shared by segment_max and segment_min.r   r   r   minvalue)r%   modesortLOWEST)	fill_mode)r   r   r   r   r   r'   r   r(   squeezer.   topkgatherr   segment_maxr)   r/   )r3   r   r   zerozero_1done_1dis_negsafe_segnrK   
sorted_segsort_idxsorted_data
nseg_plus1resultnseg_1ds                   r   _segment_reduce_via_ov_maxrZ   \   s   Q)003DTXX.55a8GsDHH-44Q7F]]X&&q+*F*F*HIfQi  v|[AHHKH 	(97	fQi  ==115wGDQJ{{1~H//$$7>>qAKh''<+H+H+JKfQi  !!ZxfQi    t4;;A>G>>&'7FGDKKANNr   c                 |    t        |       } t        |      }t        ||      }t        | ||dd      }t        |      S )Nsumr   r&   r4   r   r   rB   r   r3   r   r   sortedrX   s        r   segment_sumra   {   sD    D,K(lCL(k<51F v&&r   c                 v    t        |       } t        |      }t        ||      }t        | ||      }t        |      S N)r   r   rZ   r   r_   s        r   rM   rM      s;    D,K(lCL'k<HFv&&r   c                    t        |       } t        |      }t        ||      }t        j                  |       j	                  d      }t        j                  t        |||            j	                  d      }t        |      S Nr   )r   r   r   negativer   rZ   r   )r3   r   r   r`   neg_datarX   s         r   segment_minrh      sr    D,K(lCL  &--a0H"8[,GfQi  v&&r   c                 |    t        |       } t        |      }t        ||      }t        | ||dd      }t        |      S )Nprodr   r]   r^   r_   s        r   segment_prodrk      sD    D,K(lCL(k<6AF v&&r   c                    t        |       } t        j                  |t        j                        }d}|rdnd}t        j
                  | ||d|      }|j                  d      }|j                  d      }t        |      t        |      fS )Ndtyper   rE   nonemaxr   r   )r   r   r   r   r   rK   r   r   )	xkr`   k_tensorr%   	sort_type	topk_nodevaluesr7   s	            r   top_krw      s|    aA  $((3HD!vIa4	BIa Fq!Gv&(;G(DDDr   c                    ddl m} t        j                  dt        j
                        }t        j                  t        |       |      j                  d      } t        |      }t        ||      d   }t        j                  |dz
  gt        j
                        j                  d      }t        j                  dt        j
                        j                  d      }t        j                  |||      j                  d      }t        j                  ||      j                  d      } ||| d      }	t        j                  |	|      j                  d      }	t        j                  |	|      j                  d      }
t        |
      S )Nr   )take_along_axisr   rm   r   r$   ) keras.src.backend.openvino.numpyry   r   r   r   r   r)   r   r   rw   rL   rJ   greater_equalr   )targetspredictionsrr   ry   one_constanttopk_valuesk_minus_1_idxtopk_values_axistopk_mintargets_valuesmasks              r   in_top_kr      s9   @$$Q1L  w!7FMMaPG,K Q'*K%%q1ugTXX>EEaHM(($((;BB1E]$4fQi  ,7>>qAH %['CN%%nlCJJ1MN!!.(;BB1EDt$$r   c                    t        |       } |\t        j                  dgt        j                        j                  d      }t        j                  | |d      j                  d      } d}t        |t              rt        |      }t        j                  |t        j                        j                  d      }t        j                  d| j                               j                  d      }t        j                  | |d      j                  d      }t        j                  |      j                  d      }t        j                  |||      j                  d      }t        j                  | |      j                  d      }t        j                  |      j                  d      }	t        j                   |	||      j                  d      }
t        j"                  |
      j                  d      }|s%t        j$                  ||      j                  d      }t        j&                  ||      j                  d      }t)        |      S )Nr   r   FT)r   r   r   r   r   r   reshape
isinstancetuplelistr   r   	is_finiter(   subtractexp
reduce_sumlogrJ   r   r   )rq   r%   keepdimsflatten_shape
const_zeror   r   norm_maxnorm_max_subexp_norm_maxsum_explog_sum_exps               r   	logsumexpr      s   aA| ))2$9@@CQu5<<Q?$DzT488,33A6D""1a&8&8&:;BB1EJ$$Qd3::1=J"":.55a8Iy*jAHHKH$$Q188;L<<-44Q7L!!,h?FFqIG,,w'..q1K##Hd3::1=,,x5<<Q?K{++r   c                    t        |       } t        |      }| j                         }|j                         }|j                  j                  r(|j                  j	                         dk  rt        d      |j                  j                  r(|j                  j	                         dk  rt        d      |d   }|d   }|j                  r8|j                  r,|j	                         |j	                         k7  rt        d      t        j                  dt        j                        j                  d      }t        j                  dt        j                        j                  d      }t        j                  | |      j                  d      } t        j                  ||      j                  d      }t        j                  | |      j                  d      }t        j                  ||      j                  d      }	t        j                  dt        j                        j                  d      }
t        j                  |	|
d      j                  d      }t        j                  |      j                  d      }t!        |      S )	N   z"`cdist` inputs must have rank >= 2r   z.Last dimension of inputs to `cdist` must matchr   F)r   r*   r+   r,   r-   
ValueErrorr   r   r   r   r   r)   r   multiplyr   sqrtr   )rq   yx_shapey_shapex_lasty_lastneg2neg3diffsq	last_axissummedrX   s                r   cdistr      s   aAaA!!#G!!#G||',,"9"9";a"?=>>||',,"9"9";a"?=>>R[FR[FF,,&"3"3"55MNNR*11!4DR*11!4D1d#**1-A1d#**1-AQ"))!,D			4	&	-	-a	0B!!"dhh/66q9I  Y6==a@F]]6"))!,Fv&&r   c           	      
   t        |       } | j                  }t        |      }t        j                  dgt
        j                        }t        j                  | t
        j                        j                  d      }t        j                  |dz
  gt
        j                        }t        j                  dt
        j                        }t        j                  |||      j                  d      }	t        j                  |	|      j                  d      }
t        j                  dgt
        j                        j                  d      }t        j                  ||	gd      j                  d      }t        j                  | |d      j                  d      }t        j                  |t
        j                        j                  d      }t        j                  |t
        j                        j                  d      }t        j                  |
|      j                  d      }t        j                  t        j                  ||      j                  d      t        j                  dt
        j                        j                  d            j                  d      }t        j                   ||      j                  d      }t        j"                  t        j                  dt
        j                        j                  d      ||t
        j                        j                  d      }t        j$                  |t        j                  dgt
        j                              j                  d      }t        j                  t'        j(                  |t&        j*                              j                  d      }t        j$                  ||      j                  d      }t        j                  ||      j                  d      }t        j                  ||t        j                  dt
        j                              j                  d      }t        j,                  ||t        j                  |dz
  gt
        j                        t        j                  dgt
        j                        |      j                  d      }t        j$                  ||      j                  d      }t        j                  |gt
        j                        j                  d      }t        j                  |||gd      j                  d      }t        j                  ||d      j                  d      }t/        |      S )	Nr   r   r   r   r$   Frm   r   )r   partial_shapelenr   r   r   r   r.   r   rL   rJ   r0   r   r   r   divider   ranger)   nparangeint32r/   r   )rq   sequence_lengthsequence_strider   ndimzero_const_1dshape_tensorlast_idxaxis0signal_len_1dsignal_len_scalar	minus_oneshape_2dx_2d	seq_len_cstride_cr   num_seq_scalarrow_stoprow_idx
row_idx_2dcol_idx
col_idx_2dr7   gatheredbatch_shape
num_seq_1d
seq_len_1d	out_shaperX   s                                 r   extract_sequencesr      s   aAooGw<D %%qc4884M$$QDHH=DDQGL  $(TXX6Ha*EOOL(EBII!LM ((FMMaP!!2$188;I	=9BII!LHAx/66q9D!!/488<CCAFI  $((;BB1EH.	:AA!DD\\h'..q1!TXX&--a0 fQi 
   :AA!DHnn!TXX&--a0HH	
 fQi  ##""A31fQi  
		/2fQi  ##G];BB1EJll:z299!<Ggx((DHH5fQi  ..qz4884sDHH- fQi  ##NMBII!LJ""O#4dhh?FFqIJ	j*-AfQi  h	59@@CFv&&r   c                    | d   j                   }|dk(  rt        | d   d      n| d   }|dk(  rt        | d   d      n| d   }t        j                  t	        |      t        j
                  dgt        j                              j                  d      }t        j                  t	        |      t        j
                  dgt        j                              j                  d      }t        j                  ||gd      j                  d      }t        | d   j                        dz   }	t        j
                  |D 
cg c]  }
|	|
z   	 c}
t        j                        j                  d      }|rt        j                  nt        j                  } |||      j                  d      }t        j                  |t        j
                  dt        j                        t        j
                  dt        j                              j                  d      }t        j                  |t        j
                  dt        j                        t        j
                  dt        j                              j                  d      }|dk(  rft        j                  |t        j                         j                  d      }t        j                  |t        j                         j                  d      }t#        |      t#        |      fS c c}
w )a?  Shared helper for fft, fft2, and ifft2.

    Args:
        x: Tuple of (real, imag) KerasTensors.
        axes_offsets: List of negative axis offsets relative to the
            complex-data rank (e.g. [-2] for fft, [-3, -2] for fft2/ifft2).
        inverse: If True, use ov_opset.idft; otherwise use ov_opset.dft.
    r   float64float32r   r   )rn   r   r   r)   r   r   r   r   r   r0   r   shapeidftdftrL   convertf64r   )rq   axes_offsetsinverse	ori_dtypex0x1realimagcomplex_datar+   offr#   oprX   out_realout_imags                   r   _dftr   >  sC    !

I"+y"8adI	adB"+y"8adI	adBb8,,bT488<fQi 	 b8,,bT488<fQi 	 ??D$<4;;A>Lqtzz?QD+,,dhhfQi 	 "x||Bd#**1-F!!!TXX.0A0A"dhh0OfQi  !!!TXX.0A0A"dhh0OfQi  I##Hdhh7>>qA##Hdhh7>>qAx(*=h*GGG# 	-s   9K9c                      t        | dgd      S )Nr   Fr   r   r   rq   s    r   fftr   i  s    e44r   c                 "    t        | ddgd      S )Nr   r   Fr   r   r   s    r   fft2r   n  s    R%88r   c                 "    t        | ddgd      S )Nr   r   Tr   r   r   s    r   ifft2r   s  s    R$77r   c                 <   | j                   }| j                   dk(  rt        | d      n| } t        |       }t        |j                        }t        j                  |dz
  gt        j                        j                  d      }| t        j                  |gt        j                        j                  d      }|j                  d   }t        |t              r||k  rdg|z  }dg|z  }	||z
  |	d<   t        j                  |t        j                        j                  d      }
t        j                  |	t        j                        j                  d      }t        j                  ||
|d      j                  d      }t        j                  |||      j                  d      }n%t        j                  ||      j                  d      }t        j                  |t        j                  dt        j                        t        j                  dt        j                              j                  d      }t        j                  |t        j                  dt        j                        t        j                  dt        j                              j                  d      }|dk(  rft        j                  |t        j                         j                  d      }t        j                  |t        j                         j                  d      }t#        |      t#        |      fS )Nr   r   r   r   r   r   )rn   r   r   r   r   r   r   r   r   r   r   intpadrdftrL   r   r   r   )rq   
fft_lengthr   x_noder+   r#   signal_sizelast_dim	pad_beginpad_endpad_begin_nodepad_end_noder   r   r   s                  r   rfftr   x  sX   Igg2Q	A1Fv||DdQhZ299!<D''dhh?FFqI<<#h$J)>d
IcDjG$x/GBK%..y$((CJJ1MN#,,Wdhh?FFqIL\\jfQi  }}VT;7>>qA}}VT*11!4h488,h.?.?DHH.MfQi  h488,h.?.?DHH.MfQi  I##Hdhh7>>qA##Hdhh7>>qAx(*=h*GGGr   c                    | d   j                   }|dk(  rt        | d   d      t        | d   d      f} t        t        | d            }t	        |j
                        }t        j                  |dz
  gt        j                        j                  d      }|[t        j                  |gt        j                        j                  d      }t        j                  |||      j                  d      }n%t        j                  ||      j                  d      }|dk(  r3t        j                  |t        j                        j                  d      }t        |      S )Nr   r   r   r   r   r$   r   )rn   r   r   r   r   r   r   r   r   r   r   irdftr   r   r   )rq   r   r   r   r+   r#   r   r   s           r   irfftr     s   !

II!A$	"D1y$9: qr!23L|!!"DdQhZ299!<D''dhh?FFqI|T;?FFqI|T299!<I  188;u%%r   c                 n   t        | j                        dvrt        d| j                         ||k  rt        d| d|       t	        |t
              r|dvrt        d|       | j                  }t        |       } | j                  }t        |      }|dkD  r^t        j                  d|d   gt        j                        j                  d	      }	t        j                  | |	d
      j                  d	      } |rd	gt        | j                        z  }
d	gt        | j                        z  }|dz  |
d<   |dz  |d<   t        j                  |
t        j                        j                  d	      }t        j                  |t        j                        j                  d	      }t        j                  | ||d      j                  d	      } ||z
  dz  }||z
  |z
  }| j!                         }|t        j"                  k(  rCt        j$                  | t        j&                        j                  d	      } t        j&                  }|t	        |t
              r!t(        j*                  j-                  ||      }n|}t        |j                        dk7  s|j                  d   |k7  rt        d|j                         t/        j                  |||gg      }t        j                  ||      j                  d	      }n@t/        j0                  ||z   |z         }t        j                  ||      j                  d	      }t        j                  |t        j                        j                  d	      }t        j                  |t        j                        j                  d	      }t        j2                  | |||d
      j                  d	      }t        j4                  |t        j                  d	t        j                        t        j                  dt        j                              j                  d	      }t        j4                  |t        j                  dt        j                        t        j                  dt        j                              j                  d	      }|dkD  rt7        |d d       d|dz  dz   gz   }t        j                  |t        j                        j                  d	      }t        j                  ||d
      j                  d	      }t        j                  ||d
      j                  d	      }|dk(  rft        j$                  |t        j"                        j                  d	      }t        j$                  |t        j"                        j                  d	      }t9        |      t9        |      fS )N>   r   r   zJInvalid input type. Expected `float32` or `float64`. Received: input type=zT`fft_length` must equal or larger than `sequence_length`. Received: sequence_length=z, fft_length=>   hannhamming]If a string is passed to `window`, it must be one of `"hann"`, `"hamming"`. Received: window=r   r   r   Freflectr   PThe shape of `window` must be equal to [sequence_length].Received: window shape=)transpose_framesr   )r   rn   	TypeErrorr   r   strr   r   r   r   r   r   r   r   r   r   r   r   r   f32scipysignal
get_windowr   onesstftrL   r   r   )rq   r   r   r   windowcenterr   	ori_shapenum_dimsr   r   r   r   r   l_padr_padelement_typewinwin_nodeframe_size_nodeframe_step_node	stft_noder   r   target_shapetarget_shape_nodes                             r   r
  r
    s    !)??$$%GG9.
 	
 O#))8(9 :$'
 	

 &#,,;;A(D 
 IaAI9~H!| ))2y}*=txxHOO
 Qu5<<Q?C#agg,&	#AGG$"a	" Ao!**9dhh?FFqI(($((;BB1ELLNL)DKKAN/)a/E(50E%%'LtxxQ)003xxfc",,))&/BCCsyy>Q#))B-?"B**-))6  ffSE5>*+$$S,7>>qAgg.68$$S,7>>qA''
DHH=DDQGO''BII!LO	8_ofQi  !TXX&"dhh' fQi	 
 !TXX&"dhh' fQi	  !|IcrN+r:?Q3F.GG$--lDHHELLQO##H.?GNN
 ##H.?GNN
 I##Hdhh7>>qA##Hdhh7>>qAx(*=h*GGGr   c                    d|dz
  |z  z   }||z  }||z
  }t        j                  dt        j                        j	                  d      }t        j
                  | t        j                        j	                  d      }t        j                  |t        j                  dt        j                        |      j	                  d      }t        j                  |t        j                  dt        j                        |      j	                  d      }	t        j                  t        j                  t        j                  |t        j                        t        j                  |	t        j                  dt        j                                    t        j                  |t        j                              j	                  d      }
|dkD  rt        j                  g dt        j                        j	                  d      }t        j                  dd|gt        j                        j	                  d      }t        j                  | ||d      j	                  d      } t        j                  t        j                  |t        j                  dt        j                              j	                  d      t        j                  |	t        j                  dt        j                              j	                  d      t        j                  ||gt        j                        j	                  d      gd      j	                  d      }t        j                  | |d      j	                  d      } t        j                  | t        j                  g dt        j                              j	                  d      } t        j                  g dt        j                        j	                  d      }t        j                  t        j                  ddgt        j                        j	                  d      t        j                  |	t        j                  dt        j                              j	                  d      t        j                  dgt        j                        j	                  d      gd      j	                  d      }t        j                  | ||d      j	                  d      } t        j                  t        j                  t        j                  d	t        j                        |	      t        j                  dt        j                              j	                  d      }t        j                  t        j                  |d	z  |z  t        j                        |	      j	                  d      }t        j                  t        j                  |t        j                  dt        j                              j	                  d      t        j                  |t        j                  dt        j                              j	                  d      gd      j	                  d      }t        j                  | |d      j	                  d      } t        j                  |t        j                  ||z  t        j                              j	                  d      }t        j                  | t        j                  dgt        j                        j	                  d      t        j                  |t        j                  dt        j                              j	                  d      t        j                  dgt        j                        j	                  d      t        j                  dgt        j                        j	                  d            j	                  d      } t        j                  |t        j                  |t        j                              j	                  d      }t        j                  t        j                  |t        j                  dt        j                              j	                  d      t        j                  |gt        j                        j	                  d      t        j                  |t        j                  dt        j                              j	                  d      gd      j	                  d      }t        j                  | |d      j	                  d      } t        j                   | t        j                  dgt        j                        j	                  d      d
      j	                  d      } t        j                  | t        j                  dgt        j                        j	                  d      t        j                  |
t        j                  dt        j                              j	                  d      t        j                  dgt        j                        j	                  d      t        j                  dgt        j                        j	                  d            j	                  d      } | |
fS )aB  Perform overlap-and-add using OpenVINO ops.

    Takes a tensor x of shape [batch, num_sequences, fft_length] and
    reconstructs a time-domain signal by striding each frame by
    `sequence_stride` and summing the overlapping contributions.

    Returns the reconstructed signal and its length as an OV scalar node.
    r   r   r   )r   r   r   r   F)r   r   r      )r   r   r   r   r   r   )r   r   r   r   r   r.   rL   r   r   r   r   r0   r)   r   	transposer/   r   )rq   r   r   nstep
padded_len
pad_amountrN   r   
flat_batchnum_sequencesoutput_sizer   r   overlap_shapepad_begin_n	pad_end_noverlapping_dim_sizetotal_innerr   	slice_len
inner_size	sum_shapes                         r   _overlap_sequences_ovr*    s    aO33E(Jj(JQ)003D txx8??BG""1dhh/fQi  OO""1dhh/fQi 
 ,,otxx8mX->->q$((-KL	
 	*dhh/ fQi  A~%%i:AA!D	##Q:$6AHHKLLIw
;BB1E OOH--a:fQix00DHH=fQiuo6AHHK	
 	
 fQi  	M5188;A 	1h//dhhGHOO		A ##L$((;BB1EKq!fdhh/66q9x00DHH=fQiqc488,33A6	
 	
	 fQi  	QY
;BB1EA $,,(++Atxx8-H!TXX& fQi  ##%!)o5txx@ fQi  OOH--a:fQiX..q$((;fQi	
 	

 fQi  	M5188;A !!%/1488< fQi  		1#txx(//29h&7&7488&DELLQO1#txx(//21#txx(//2	 fQi  ""h//JfQi  H--a:fQiugtxx077:H--a:fQi	
 	
 fQi  	Iu-44Q7A	1#txx(//2	 fQi	  		1#txx(//2;(9(9!TXX(FGNN	
 	1#txx(//21#txx(//2	 fQi  k>r   c                 P   t        |t              r|dvrwt        d|       |gt        j                  |t        j
                        }t        |j                        dk7  s|j                  d   |k7  rt        d|j                         | d   j                  }|t        | |      }	t        |	      }	|	j                         }
|
t        j                  k(  r3t        j                  |	t        j                         j#                  d      }	|	j%                         }|j&                  j)                         }|D cg c]   }|j*                  rd n|j)                         " }}|dk(  rIt        j,                  |	t        j.                  dt        j0                              j#                  d      }	n|dkD  rt        j2                  |	t        j0                  	      j#                  d      }t        j4                  |t        j.                  |dz
  t        j0                        t        j.                  dt        j0                              j#                  d      }t        j6                  t        j.                  dgt        j0                        j#                  d      t        j,                  |t        j.                  dt        j0                              j#                  d      t        j.                  |gt        j0                        j#                  d      gd      j#                  d      }t        j8                  |	|d
      j#                  d      }	t;        |	||      \  }	}|r|dz  nd}|t        j<                  |	t        j.                  |gt        j0                        j#                  d      t        j.                  ||z   gt        j0                        j#                  d      t        j.                  dgt        j0                        j#                  d      t        j.                  dgt        j0                        j#                  d            j#                  d      }	n|dkD  rt        j<                  |	t        j.                  |gt        j0                        j#                  d      t        j.                  t>        gt        j0                        j#                  d      t        j.                  dgt        j0                        j#                  d      t        j.                  dgt        j0                        j#                  d            j#                  d      }	|rt        j4                  t        j2                  |	t        j0                  	      j#                  d      t        j.                  dt        j0                        t        j.                  dt        j0                              j#                  d      }t        j@                  |t        j.                  |dz  t        j0                              j#                  d      }t        j<                  |	t        j.                  dgt        j0                        j#                  d      t        j,                  |t        j.                  dt        j0                              j#                  d      t        j.                  dgt        j0                        j#                  d      t        j.                  dgt        j0                        j#                  d            j#                  d      }	|dk(  rIt        jB                  |	t        j.                  dgt        j0                              j#                  d      }	ny|dkD  rt|d d }|D cg c]  }||nd
 c}dgz   }t        j8                  |	t        j.                  |t        j0                        j#                  d      d
      j#                  d      }	|dk(  r3t        j                  |	t        j                        j#                  d      }	tE        |	      S t        |t              r!tF        jH                  jK                  ||      }n%t        j                  |t        j
                        }t        | d         }t        | d         }|j                         }
|
t        j                  k(  rft        j                  |t        j                         j#                  d      }t        j                  |t        j                         j#                  d      }t        j,                  |t        j.                  dt        j0                              j#                  d      }t        j,                  |t        j.                  dt        j0                              j#                  d      }t        j6                  ||gd      j#                  d      }|j%                         j&                  j)                         }tM        tO        |dz
              |dz
  |dz
  |dz
  gz   }t        jP                  |t        j.                  |t        j0                              j#                  d      } |dz
  }!|!dkD  rjt        j2                  | t        j0                  	      j#                  d      }"t        j<                  |"t        j.                  |!gt        j0                        t        j.                  t>        gt        j0                        t        j.                  dgt        j0                        t        j.                  dgt        j0                              j#                  d      }#t        j8                  | t        j6                  t        j.                  dgt        j0                        j#                  d      |#gd      j#                  d      d
      j#                  d      } t        j.                  |jS                  t        jT                        t        j                         j#                  d      }$t        j.                  |t        j0                        j#                  d      }%t        j.                  |t        j0                        j#                  d      }&|3t        j.                  |t        j0                        j#                  d      nd }'t        jV                  | |$|%|&|d
|'      j#                  d      }(|!dkD  r|j%                         }|D cg c]   }|j*                  rd n|j)                         " c}d d })|)D cg c]  }||nd
 c}dgz   }t        j8                  |(t        j.                  |t        j0                        j#                  d      d
      j#                  d      }(|dk(  r3t        j                  |(t        j                        j#                  d      }(tE        |(      S c c}w c c}w c c}w c c}w )N>   r   r   r   rm   r   r   r  r   r   r   Fr   r   r$   r  )r  
normalizedsignal_length),r   r  r   r   asarrayr   r   r   rn   r   r   r   r   r   r   r   r  r   r*   r+   r-   
is_dynamicr)   r   r   r.   rL   r0   r   r*  r/   	INT32_MAXr   rJ   r   r  r  r  r   r   r  astyper   istft)*rq   r   r   r   lengthr  r  r  r   framesr  ori_partial_shaper  dimori_shape_list
frames_shpnum_seq_nodeflatten_shp_	start_valcur_lenend_node
batch_dimsdr  x_realx_imagreal_expimag_expstackedr+   permr3   num_batch_dimsr:   trailingr  r  r  signal_length_noderX   r   s*                                             r   r2  r2    s    &#,,;;A(D  
	jjrzz2syy>Q#))B-?"B**-))6 
 !

I~ q*%v&..0488#%%fdhh7>>qAF"446$))446 )
 NND(88
 

 q=''))!TXX6fQi  \!**6txxHOOJ $??!!(Q,9!!!TXX. fQi	 
 #//%%rdDHH5<<Q?&&$h&7&7488&DfQi%%zlDHH=DDQG 	 fQi  %%fk5AHHKF)&/:N	'-J!O1	^^!!9+txx8??B!!9v#5"6AHHK!!1#txx077:!!1#txx077: fQi  1}!%%yk488<CCAF%%yk488<CCAF%%qc4884;;A>%%qc4884;;A> &)  "//%%f$((CJJ1M%%a2%%a2 &)	 
 $,,%%jAotxx@ &)  "%%qc4884;;A>&& ("3"3Atxx"@fQi%%qc4884;;A>%%qc4884;;A> &)  q=%%))1#txx8fQi  \',J@JK1AB6KO L %%!!,9@@C fQi	  	!%%fdhh7>>qAF"6**&#ll%%fo>jjrzz21Q4 F1Q4 F**,Ltxx!!&$((3::1=!!&$((3::1=!!!!"dhh/fQi  !!!!"dhh/fQi  oox2<CCAFG$$&++668DdQh D1HdQhq#AAD""42fQi 	 AXN"++DdhhGNN
 >>~.9yk4884qc488,qc488,
 &) 	 OO""B4299!<hGafQi
 &) 	   BJJ!7BII!LH''
DHH=DDQGO''BII!LO  	&$((+2215  ^^( fQi  "446 )
 NND(88
 2 =HHqQ]2HB4O!!lDHH5<<Q?
 &)	 	 I!!&$((3::1=v&&]
X Lh
 Is   9%xx7%x&x#c                 "   t        |       } t        j                  d| j                               j	                  d      }t        j
                  |       j	                  d      }t        t        j                  ||      j	                  d            S )Nr   r   )r   r   r   r   r   r   r   r   )rq   	const_oner   s      r   rsqrtrL    sl    aA!!!Q%7%7%9:AA!DI==""1%Dxy$?FFqIJJr   c                 v    t        |       } t        j                  |       j                  d      }t	        |      S re   )r   r   erfr   r   )rq   rN  s     r   rN  rN    s/    aA
,,q/
 
 
#Cs##r   c                    t        |       } | j                         j                         s3t        j                  | t
        j                        j                  d      } t        j                  d| j                               j                  d      }t        j                  |       j                  d      }t        t        j                  ||      j                  d            S )Nr   r   )r   r   is_realr   r   r   r  r   r   rN  r   r   )rq   rK  rN  s      r   erfcrQ    s    aA'')Q)003!!!Q%7%7%9:AA!DI
,,q/
 
 
#Cx00C@GGJKKr   c           
         t        |       } | j                         }d}dt        j                  |z  z  }dt        j                  t        j                        z  }t        j                  d|      j                  d      }t        j                  d|      j                  d      }t        j                  | |       j                  d      }t        j                  t        j                  ||      j                  d            j                  d      }t        j                  t        j                  ||      j                  d      t        j                  ||      j                  d            j                  d      }	t        j                  t        j                  |	|	      j                  d      t        j                  t        j                  d|z  |      j                  d      |      j                  d            j                  d      }
t        j                  t        j                  |       j                  d      t        j                  t        j                  t        j                  |
      j                  d      |	      j                  d            j                  d            j                  d      }t        j                  t        j                  |      j                  d      |       j                  d      }t        j                  ||      j                  d      }t        j                  t        j                  |      j                  d            j                  d      }t        j                  t        j                  ||      j                  d      |      j                  d      }t        j                  |t        j                   ||      j                  d            j                  d      }t#        |      S )Ng7A`?g       @g      ?r   g      ?)r   r   r   pir   r   r   r   r   r   r   r   signrN  r   rf   r   r   )rq   rn   atwo_over_pi_atwo_over_sqrt_pionehalfx_sqlog_termrr   innery0erf_erry0_sqexp_termderivy1s                    r   erfinvrc    s   
 	aA EA25519%MRWWRUU^+


C
'
.
.q
1CS%(//2DQ"))!,D||H--c48??BCJJ1MH-/66q9$)003	 fQi 
 !Q&&q)cAgu-44Q7	

&)	
 fQi 
 
		a"hmmE299!<a@GGJ	

&)	

 fQi  R 0 7 7 :A>EEaHGb"%,,Q/E||H--e4;;A>?FFqIH*E299!< fQi 
 
		
HOOGU+2215
fQi  r""r   c                 $    ddl m}  ||       d   S )Nr   )slogdetr   )rz   re  )rq   re  s     r   logdetrf    s    81:a=r   )NF)T)Frc   )r   T)Nr   T)+numpyr   openvino.opset16opset16r   scipy.signalr  openvinor   keras.src.backend.openvino.corer   r   r   r   rz   r   r0  r   rB   rZ   ra   rM   rh   rk   rw   r   r   r   r   r   r   r   r   r   r   r
  r*  r2  rL  rN  rQ  rc  rf   r   r   <module>rn     s     #   ? 0 9 = 2	
=@O>''	''E%8,2'4>'B(HV5
9
8
%HP&, LPcHLW~ T'nK$L1#hr   