
    Si                        S SK Jr  S SKrS SKJr  S SKJr  S SKJ	r
  S SKJr  S S.S jrS	 rSSS
 jjrSSS jjr " S S\5      rg)    )annotationsN)OpRun)_concat_from_sequence)_cfft)_sliceaxisc                *    [         R                  " XS9$ )Nr   )npconcatenate)r	   argss     Y/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/reference/ops/op_stft.py_concatr      s    >>$**    c                     [         R                  " XS9$ ! [         a]    [        U5      S:X  a#  [         R                  " U [	        U5      S   S9s $ [        U5       H  n[         R                  " XS9n M     U s $ f = f)Nr      r   )r   expand_dims	TypeErrorlentuplereversed)ar	   xs      r   
_unsqueezer      sj    ~~a++ t9>>>!%+a.99$Aq)A  s    :A=(A=<A=c                   [        U R                  5      S-
  nS/nS/nUR                  S   n	/ n
[        U5       H  nX-  nX-   n[        U [        R
                  " U/5      [        R
                  " U/5      U5      nUR                  SS nXS   -
  4nUR                  SS U-   UR                  SS -   n[        R                  " UU R                  S9n[        UUSS9n[        UU5      nU
R                  U5        M     [        U
SSS	9nUR                  nUSS n[        S
 U 5       5      n/ UQU	PSP7n[        R                  " UU5      nUU-  n[        UXUSS9$ )zApplies one dimensional FFT with window weights.

torch defines the number of frames as:
`n_frames = 1 + (len - n_fft) // hop_length`.
r   r   Ndtyper   r	   new_axisc              3  &   #    U  H  nS v   M	     g7f)r   N ).0_s     r   	<genexpr>_stft.<locals>.<genexpr>A   s     7Aas   F)onesided	normalize)r   shaperanger   r   arrayzerosr    r   r   appendr   r   reshape_dft)r   
fft_length
hop_lengthn_frameswindowr)   	last_axisr	   axis2window_sizeseqfsbeginendsliced_xnew_dimmissing	new_shapecstpad_sliced_xun_sliced_xnew_xshape_xshape_x_shortshape_x_short_onewindow_shapeweightsweighted_new_xs                               r   _stftrK      sw    AGGq I4DDE,,q/K CHo!!RXXug.#F ..B'+-NN3B''1HNN234GG	hhy0x26 !u5

; " "#B;E kkGCRLM7777&77Q7Ljj.GW_N
E r   c           
        S/nS/nS/nS/nU R                   S   n	XU	S-
  -  -   n
/ n/ n/ n[        U	5       GH*  nUnUS-   n[        R                  " [	        U [        R
                  " U/5      [        R
                  " U/5      U5      US   S9n[        UUSUSS9n[        UR                   5      nUS-
  n[	        U[        R
                  " U5      [        R
                  " U5      U/5      n[        R                  " UUS9n[        R                  " UR                   SU R                  S	9U-  nUR                   S
S nX-  nUR                   S   nU
UU-   -
  n/ UQUP7n/ UQUP7n[        R                  " UU R                  S9n[        R                  " UU R                  S9n[        UUUSS9n [        UUUSS9n![	        U[        R
                  " U5      [        R
                  " U5      U/5      n[        R                  " UUS9n"[        UU"USS9n#UR                  [        U SS95        UR                  [        U#SS95        UR                  [        U!SS95        GM-     [        USSS9n$[        USSS9n%[        USSS9n&U$R                  SSS9n'U%R                  SSS9n(U&R                  SSS9n)U'U)-  n*U(U)-  n+[        R                   " U*SS9n,[        R                   " U+SS9n-[        U,U-SS9n.U.R                   n/U.R#                  S5      n0[        R$                  " U0S5      n1U/SS
 n2[        U2USS9n3U1R#                  U35      $ )zReverses of `stft`.r   r      r   r   r   T)r	   r)   r*   )
fill_valuer    Nr   r!   )r	   keepdims)rM   r   )r   r   )r+   r,   r   squeezer   r-   r1   r   fullr    r.   r   r/   r   r   sumr   r0   	transpose)4r   r2   r3   r5   r)   zeroonetwoaxisfr4   expected_signal_lenseqrseqiseqcr:   r;   r<   frame_xiftn_dimsn_dims_1slicedytmpctmpshape_beginn_leftsizen_right
left_shaperight_shaperightleftyycitmpyiredrrediredcresrresirescrrrirr0ri0concresult_shapereshaped_result
transposedother_dimensionsfinal_shapes4                                                       r   _istftr   K   s3   3D#C#CDEwwr{H$X\'BB DDDHo1f**1bhhw'3%%@q
 7JR(dSSYY A:RXXd^RXXc]XJGzz&x0wwtzzaqww?&Hjj"ozz"~%$7+{+F+
--W-AGG4xx
!''2D$B/T4R0 RXXc]BHHSMH:Fzz&x0T4R0 	Jqr*+Jr+,Jr+,O T !B;D B;D B;D 88a8(D88a8(D88a8(D	B	B ..!
$C
..!
$C3!$D ::Lll7+Oov6J#AB'*Ca8Kk**r   c                      \ rS rSrSS jrSrg)STFT   Nc           	        Uc"  Uc  UR                   S   nOUR                   S   nUnUc   [        R                  " U4UR                  S9nSUR                   S   U-
  U-  -   n[	        XXgX5S9nUR                  UR                  5      4$ )Nr   r   r   r   )r)   )r+   r   onesr    rK   astype)	selfr   
frame_stepr5   frame_lengthr)   r3   r4   ress	            r   _run	STFT._run   s    ~ wwr{%||A
>WWl_AGG<Fl2zAAAZ6U

177#%%r   r$   )NNN)__name__
__module____qualname____firstlineno__r   __static_attributes__r$   r   r   r   r      s    &r   r   )F)r2   int)
__future__r   numpyr   onnx.reference.op_runr   *onnx.reference.ops.op_concat_from_sequencer   onnx.reference.ops.op_dftr   r1   onnx.reference.ops.op_slicer   r   r   rK   r   r   r$   r   r   <module>r      sA    #  ' L 3 .  +	*ZM+`&5 &r   