
    gPi                     (    d dl Z G d d          ZdS )    Nc                       e Zd Z	 	 	 	 	 ddZedd            Ze	 	 	 	 	 	 	 	 ddej        dedededej        de	de
de	de	de	fd            Zddej        fdZd	S )FeatureExtractorP   >          c                     || _         || _        || _        ||z  | _        | j        |z  | _        ||z  | _        || _        |                     |||                              d          | _	        d S )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         t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/faster_whisper/feature_extractor.py__init__zFeatureExtractor.__init__   s     
$(%5!^z9(=8*//5 0 
 

&

 	       c                 \   t          |          }t          j                            |d| z            }d}d}t          j        |||dz             }d}d}|||z  z   }	d}
|
|z
  |z  }t          j        d          d	z  }||k    }|
t          j        |||         |z
  z            z  |	|<   t          j        |	          }|	                    d
d          |                    dd
          z
  }|d d          t          j	        |d d
         d          z  }|dd          t          j	        |dd          d          z  }t          j
        t          j        |          t          j        ||                    }d|	d|dz            |	d |         z
  z  }|t          j	        |d          z  }|S )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   z FeatureExtractor.get_mel_filters   s    V 6??UcBh?77 ${7GVaZ88 t# 
!E)T1&++$ #!BF7d5kK6O+P$Q$QQeb!$$x'7'72'>'>>ssbnU3B3Za@@@@abb	BN591==== *R]5112:eU3K3KLL uQ!^,uWfW~=>2>%a0000r   NTreflectFinput_arrayr   r   
win_lengthwindowcentermode
normalizedonesidedreturn_complexc
                    ||n|dz  }||n|}t          j        |           }
|	|	n|
p|d uot          j        |          }	|	s|	t          d          t          j        | j        t           j                  s|
st          d| j                   | j        dk    s| j        dk     rt          d| j         d          | j        dk    rt          j        | d	          } d
}nd}|r |dz  }t          j        | d||ff|          } | j	        \  }}|dk    s||k    rt          d| d|           |dk    rt          d|           |dk    s||k    rt          d|           |6|j        dk    s|j	        d         |k    rt          d| d|j	                   ||k     r.||z
  dz  }t          j
        ||j                  }|||||z   <   n|}d||z
  |z  z   }t           j        j                            | |||f| j        d         || j        d         z  | j        d         f          } || |z  } |
}||n| }|rd}nd }|r5|rt          d          t           j                            | |d|          }n#t           j                            | |d|          }|                    d          }|r|                    d          }|	r|nt          j        |          S )N   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   )rJ   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
issubdtyperP   floatingndimr/   padshapezeroslibstride_tricks
as_stridedstridesr(   rfft	transposesqueezereal)rF   r   r   rG   rH   rI   rJ   rK   rL   rM   input_is_complexinput_array_1d
pad_amountbatchlengthleftwindow_n_framescomplex_fftrR   outputs                        r   stftzFeatureExtractor.stftC   s    $.#9ZZuz
#-#9ZZu
?;77
 ) N"VvT'9'Ubof>U>U 	  	."8M  
 }[.<< 	EU 	,#), ,  
 a;#3a#7#7UK<LUUU  
 q  .1===K!NN"N  	!J&fz:&>?d  K $)v A::NvNNuNN   ??QZQQ   ??j500ZjZZ   {a6<?j#@#@ ?T^ ? ?06? ?   J&1,DhuFL999G06GD4*,,--G :55 f*55He$#A&[033#A&
 
 %/K ''388[ 	DDD 	K  O   VZZu2DZIIFFV[[BT[JJF!!),, 	'^^A&&F'<vvRWV__<r   waveformc                    |#|| j         z  | _        | j        | j        z  | _        |j        t
          j        ur|                    t
          j                  }|rt          j        |d|f          }t          j	        | j
        dz             dd                             d          }|                     || j
        | j        |d                              d          }t          j        |d	ddf                   d
z  }| j        |z  }t          j        t          j        |dd                    }t          j        ||                                dz
            }|dz   dz  }|S )zH
        Compute the log-Mel spectrogram of the provided audio.
        Nr   r"   r!   r   T)rH   rM   	complex64.r    g|=)a_mina_maxg       @g      @)r   r   r   r   rP   r'   r   r   rX   hanningr   rm   absr   log10clipr0   max)	r   rn   paddingr   rH   rm   
magnitudesmel_speclog_specs	            r   __call__zFeatureExtractor.__call__   sR   
 #)D,>>DN!%4?!BD>++rz22H 	6vhG55HDJN++CRC077	BByyJO  
 
 &

 	 VDcrcN++q0
#j08BGHEFFFGG:h(<==sNc)r   )r   r   r   r   r	   )r   )NNNTrE   FNN)r   N)__name__
__module____qualname__r   staticmethodr   r'   ndarrayr&   boolstrrm   r|    r   r   r   r      s/           & ( ( ( \(T  ! #@= @=Z@=@= @= 	@=
 
@= @= @= @= @= @= @= @= \@=D               r   r   )numpyr'   r   r   r   r   <module>r      sM       b b b b b b b b b br   