
    C1i                          S SK r " S S5      rg)    Nc                       \ rS rSr     SS jr\SS j5       r\        SS\R                  S\	S\	S\	S	\R                  S
\
S\S\
S\
S\
4S jj5       rSS\R                  4S jjrSrg)FeatureExtractor   c                     XPl         X0l        X@l        XB-  U l        U R                  U-  U l        X2-  U l        X l        U R                  X%US9R                  S5      U l	        g )N)n_melsfloat32)
n_fft
hop_lengthchunk_length	n_samplesnb_max_framestime_per_framesampling_rateget_mel_filtersastypemel_filters)selffeature_sizer   r
   r   r	   s         Z/home/james-whalen/.local/lib/python3.13/site-packages/faster_whisper/feature_extractor.py__init__FeatureExtractor.__init__   sj     
$(%5!^^z9(8*// 0 

&
 	    c                    [        U5      n[        R                  R                  USU -  S9nSnSn[        R                  " XEUS-   5      nSnSnXxU-  -   n	Sn
X-
  U-  n[        R
                  " S5      S	-  nXk:  nU
[        R                  " XU   U-
  -  5      -  X'   [        R                  " U	5      nU	R                  S
S5      UR                  SS
5      -
  nUS S * [        R                  " US S
 SS9-  nUSS  [        R                  " USS  SS9-  n[        R                  " [        R                  " U5      [        R                  " UU5      5      nSU	SUS-    U	S U -
  -  nU[        R                  " USS9-  nU$ )Ng      ?)ndg        g%qF@   gP@g     @@g@g      ;@   axisg       @)intnpfftrfftfreqlinspacelogexpdiffreshapeexpand_dimsmaximum
zeros_likeminimum)srr	   r   fftfreqsmin_melmax_melmelsf_minf_spfreqs
min_log_hzmin_log_mellogsteplog_tfdifframpslowerupperweightsenorms                       r   r    FeatureExtractor.get_mel_filters   s    V 66??UcBh?7 ${{7VaZ8 t# 
!)T1&&+$ #!BFF75kK6O+P$QQb!$x'7'72'>>sbnnU3BZa@@ab	BNN591== **R]]512::eU3KL uQ!,uWf~=>2>>%a00r   Ninput_arrayr	   r
   
win_lengthwindowcentermode
normalizedonesidedreturn_complexc
                 r   Ub  UOUS-  nUb  UOUn[         R                  " U 5      n
U	b  U	O)U
=(       d!    US L=(       a    [         R                  " U5      n	U	(       d  U	c  [        S5      e[         R                  " U R                  [         R
                  5      (       d  U
(       d  [        SU R                   35      eU R                  S:  d  U R                  S:  a  [        SU R                   S35      eU R                  S:X  a  [         R                  " U SS	9n S
nOSnU(       a  US-  n[         R                  " U SX44US9n U R                  u  pUS::  d  X:  a  [        SU SU 35      eUS::  a  [        SU 35      eUS::  d  X1:  a  [        SU 35      eUb>  UR                  S:w  d  UR                  S   U:w  a  [        SU SUR                   35      eX1:  a-  X-
  S-  n[         R                  " XR                  S9nUUXU-   & OUnSX-
  U-  -   n[         R                  R                  R                  U UUU4U R                  S   X R                  S   -  U R                  S   45      n Ub  U U-  n U
nUb  UOU(       + nU(       a  SnOS nU(       a2  U(       a  [        S5      e[         R                  R                  XSUS9nO[         R                  R!                  XSUS9nUR#                  S5      nU(       a  UR%                  S5      nU	(       a  U$ [         R&                  " U5      $ )Nr   z;stft requires the return_complex parameter for real inputs.zAstft: expected an array of floating point or complex values, got r   r   z)stft: expected a 1D or 2D array, but got zD arrayr   r    TF)r   r   )rF   zstft: expected 0 < n_fft <= z, but got n_fft=z2stft: expected hop_length > 0, but got hop_length=z;stft: expected 0 < win_length <= n_fft, but got win_length=z=stft: expected a 1D window array of size equal to win_length=z, but got window with size )dtypeorthoz9Cannot have onesided output if window or input is complexr   )r   r!   norm)r   r   r   )r#   iscomplexobj
ValueError
issubdtyperK   floatingndimr+   padshapezeroslibstride_tricks
as_stridedstridesr$   rfft	transposesqueezereal)rB   r	   r
   rC   rD   rE   rF   rG   rH   rI   input_is_complexinput_array_1d
pad_amountbatchlengthleftwindow_n_framescomplex_fftrM   outputs                        r   stftFeatureExtractor.stftC   sr    $.#9Zuz
#-#9Zu
??;7
 ) "VvT'9'Uboof>U 	 ."8M 
 }}[..<<EU#))*, 
 a;#3#3a#7;K<L<L;MWU 
 q ..1=K!N"N !J&&fz&>?dK $)) A:.vh6FugN  ?DZLQ  ?j0Mj\Z  {{a6<<?j#@ ST^S_ `006~?  &1,DhhuLL9G06GD*,-G :55 ff**55He$##A&0033##A&
 %/K ''38[DD O  VVZZ2DZIFVV[[BT[JF!!),^^A&F'v<RWWV_<r   waveformc                    Ub1  X0R                   -  U l        U R                  U R                  -  U l        UR                  [
        R                  La  UR                  [
        R                  5      nU(       a  [
        R                  " USU45      n[
        R                  " U R                  S-   5      SS R                  S5      nU R                  UU R                  U R                  USS9R                  S5      n[
        R                  " US	SS24   5      S
-  nU R                  U-  n[
        R                  " [
        R                  " USSS95      n[
        R                   " XR#                  5       S-
  5      nUS-   S-  nU$ )z8
Compute the log-Mel spectrogram of the provided audio.
Nr   r   r   r   T)rD   rI   	complex64.r   g|=)a_mina_maxg       @g      @)r   r   r
   r   rK   r#   r   r   rS   hanningr	   rh   absr   log10clipr,   max)	r   rj   paddingr   rD   rh   
magnitudesmel_speclog_specs	            r   __call__FeatureExtractor.__call__   sA   
 #),>,>>DN!%4??!BD>>+rzz2HvvhG5HDJJN+CR077	ByyJJOO  
 &
 	 VVDcrcN+q0
##j088BGGHEFG::h(<=sNc)r   )r   r
   r   r	   r   r   r   r   )P   i>        i  )   )NNNTreflectFNN)r{   N)__name__
__module____qualname____firstlineno__r   staticmethodr   r#   ndarrayr"   boolstrrh   rx   __static_attributes__ r   r   r   r      s     & ( (T  ! #@=ZZ@=@= @= 	@=
 

@= @= @= @= @= @= @=D     r   r   )numpyr#   r   r   r   r   <module>r      s    b br   