
    љi                          S SK JrJr  S SKrS SKJr  S SKrS SKrS SKJ	r	J
r
Jr  S SKrS SKr\R                  " \5      r\ " S S5      5       r " S S\5      r " S	 S
\5      rg)    )ABCabstractmethodN)	dataclass)ListTupleUnionc                   @    \ rS rSr% Sr\\S'   Sr\\S'   Sr	\\S'   Sr
g)SpeechRecognitionResult   Ntextpreprocess_metadatapostprocess_metadata )__name__
__module____qualname____firstlineno__r   str__annotations__r   dictr   __static_attributes__r       O/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/sts/stt/base.pyr
   r
      s"    D# $$!%$%r   r
   c                      \ rS rSrSSSSSSSS.S\S	\\   S
\S\S\S\S\4S jjr	S\
4S jrS\
S\
4S jrS\
4S jrS\
4S jrS\S\S\4S jrS\S\S\\\\\
4   4   4S jr\S\S\4S j5       rS\S\S\S\
S\\\\\
4   4   4
S jrS rS\S \S!\S\4S" jrS\S \4S# jrS$\S%\S\R8                  S-  4S& jrS'rg)(SpeechRecognizer   Nd         $@   Flanguagealternative_languagesmax_connectionsmax_keepalive_connectionstimeoutmax_retriesdebugr!   r"   r#   r$   r%   r&   r'   c          	          Xl         U=(       d    / U l        [        R                  " S[        R                  " U5      [        R
                  " UUS9S9U l        X`l        Xpl        g )NFr#   r$   follow_redirectsr%   limits)	r!   r"   httpxAsyncClientTimeoutLimitshttp_clientr&   r'   )selfr!   r"   r#   r$   r%   r&   r'   s           r   __init__SpeechRecognizer.__init__   sW     !%:%@b" ,,"MM'*<< /*C
 '
r   returnc                     U R                   U R                  U R                  (       a!  [        U R                  R                  SS 5      OS U R
                  U R                  S.$ )Nread)r!   r"   r%   r&   r'   )r!   r"   r1   getattrr%   r&   r'   r2   s    r   
get_configSpeechRecognizer.get_config.   sO    %)%?%?JNJZJZwt//77F`d++ZZ
 	
r   configc           
      &   U R                  5       R                  5       n0 nUR                  5        H  u  pEUc  M
  XB;  a  M  US:X  a  U R                  (       a  SS KnUR
                  " U R                  R                  UR                  " U5      UR                  " U R                  R                  R                  U R                  R                  R                  S9S9U l        XSU'   M  M   [        XU5        XSU'   M     U$ ! [         a     M  f = f)Nr%   r   r)   r*   )r:   keysitemsr1   r-   r.   _follow_redirectsr/   r0   _pool_max_connections_max_keepalive_connectionssetattr	Exception)r2   r<   allowed_keysupdatedkvr-   s          r   
set_configSpeechRecognizer.set_config7   s    (--/LLNDAy$I~## ','8'8)-)9)9)K)K %a 0$||,0,<,<,B,B,S,S6:6F6F6L6L6g6g (D$ "#AJ $DQ'!"AJ) #.  ! s   ,D
DDc                     Xl         U$ N)_preprocessr2   funcs     r   
preprocessSpeechRecognizer.preprocessS   s    r   c                     Xl         U$ rM   )_postprocessrO   s     r   postprocessSpeechRecognizer.postprocessW   s     r   
session_iddatac                   #    [        5       nU R                  X5      I S h  vN n[        U[        5      (       a
  Uu  oSl        OUnU(       d  U$ U R                  U5      I S h  vN Ul        U R                  XR                  XSR                  5      I S h  vN n[        U[        5      (       a  Uu  Ul        Ul        U$ Xcl        U$  N Ng N67frM   )	r
   rN   
isinstancetupler   
transcriber   rT   r   )r2   rW   rX   resultpreprocess_resultpreprocessed_bytespostprocess_results          r   	recognizeSpeechRecognizer.recognize[   s     (* #'"2"2:"DD'//=N: :!2!M !OO,>?? $(#4#4ZN`b|b|#}}(%007I4FK4  -K' E @ ~s4   CC
AC$C%2CC3CCCc                    #    U$ 7frM   r   )r2   rW   rX   s      r   rN   SpeechRecognizer._preprocesst   
        c                    #    g 7frM   r   r2   rX   s     r   r\   SpeechRecognizer.transcribew   s     s   r   r   c                    #    U$ 7frM   r   )r2   rW   r   rX   r   s        r   rT   SpeechRecognizer._postprocess{   re   rf   c                 T   #    U R                   R                  5       I S h  vN   g  N7frM   )r1   acloser9   s    r   closeSpeechRecognizer.close~   s     %%'''s   (&(audio_bytessample_ratetarget_sample_ratec                 f   US::  d  X#:X  a  U$ X#:  a  [         R                  SU SU S35        U$ SS KnUR                  S[	        U5      S-   S3U5      nX#-  nUS::  a  X#-  n[        [	        U5      U-  5      n/ n	[        U5       H}  n
X-  n[        U5      nUS-   [	        U5      :  a5  X-
  nX\   SU-
  -  X\S-      U-  -   nU	R                  [        U5      5        MY  U	R                  U[	        U5      :  a  X\   OS5        M     OUS S U2   n	UR                  " S[	        U	5       S3/U	Q76 $ )	Nr   zCannot upsample from zHz to Hz<r   h   )	loggerwarningstructunpacklenintrangeappendpack)r2   rp   rq   rr   rz   
audio_datadecimation_factorratiooutput_lengthdownsampledisource_indexindexfractioninterpolateds                  r   
downsampleSpeechRecognizer.downsample   sc   "k&G+NN2;-vFXEYY[\] 	]]Qs;'7':&;1#={K
 (=!4EJ% 78MK=) yL)19s:.+3H#-#4H#E
[\S\H]`hHh#hL&&s<'89&&EC
O<Sz'8YZ[ * %%8'8%89K {{Qs;/02A[AAr   c                 <   [         R                  " 5       n[        R                  " US5       nUR	                  S5        UR                  S5        UR                  U5        UR                  U5        S S S 5        UR                  S5        U$ ! , (       d  f       N!= f)Nwbrw   r   r   )	ioBytesIOwaveopensetnchannelssetsampwidthsetframeratewriteframesseek)r2   rp   rq   bufferwfs        r   to_wave_fileSpeechRecognizer.to_wave_file   sm    YYvt$OOAOOAOOK(NN;'	 %
 	A %$s   AB
Bmethodurlc                   #    [        SU R                  S-   5       H;  n U R                  R                  " X40 UD6I S h  vN nUR	                  5         Us  $    [        R                  SU R                   S35        g  N>! [
        R                   a  nUR                  R                  S:  aI  [        R                  SUR                  R                   SUR                  R                   35         S nA  g [        R                  SUR                  R                   SU SU R                   S35         S nAGM   S nAf[
        R                   a5  n[        R                  S	U S
U SU R                   S35         S nAGMg  S nAff = f7f)Nrw   i  z0Failed in recognition: Non-retriable HTTP error z, body=zHTTP z
 (attempt /z), retrying...zRequest error 'z' (attempt z0Failed in recognition: Retry attempts exceeded (z attempts).)r~   r&   r1   requestraise_for_statusr-   HTTPStatusErrorresponsestatus_coderx   errorr   ry   RequestError)r2   r   r   kwargsattemptresphserrhrerrs           r   http_request_with_retry(SpeechRecognizer.http_request_with_retry   su     Q 0 01 45G!--55fLVLL%%'	 6, 	>t?O?O>PP[\	
 / M (( >>--3LLJ5>>KeKeJffmnsn|n|  oB  oB  nC  D  ENN667z'!DL\L\K]]kl  %% %eWKy$BRBRASSab 	s_   F B A?B)F?BFAD<2F8=D<5F<F)F<FFF)rT   rN   r"   r'   r1   r!   r&   )r   r   r   r   r   r   r}   floatboolr3   r   r:   rJ   rQ   rU   bytesr
   ra   r   r   rN   r   r\   rT   rn   r   r   r-   Responser   r   r   r   r   r   r      s    +/")+   $Cy	
  $'   2
D 
 $ 8$ 4 # U ?V 2C u ueTY[_T_N`G`Aa  U s  S  5 _c hmnqsxy~  AE  zE  tF  oF  iG (%Be %B# %BSV %B[` %BN C  
 
$	r   r   c                      ^  \ rS rSrSSSSSSSSSS	.	S
\S\S\S\\   S\S\S\S\S\4U 4S jjjr	S\
S\4S jrSrU =r$ )SpeechRecognizerDummy   Ng        r   r   r   r   F)	recognized_textwait_secr!   r"   r#   r$   r%   r&   r'   r   r   r!   r"   r#   r$   r%   r&   r'   c       	   
      D   > [         T
U ]  UUUUUUU	S9  Xl        X l        g )Nr    )superr3   r   r   )r2   r   r   r!   r"   r#   r$   r%   r&   r'   	__class__s             r   r3   SpeechRecognizerDummy.__init__   s9     	"7+&?# 	 	
  / r   rX   r5   c                 v   #    [         R                  " U R                  5      I S h  vN   U R                  $  N7frM   )asynciosleepr   r   rh   s     r   r\    SpeechRecognizerDummy.transcribe   s,     mmDMM***### 	+s   $979)r   r   )r   r   r   r   r   r   r   r}   r   r3   r   r\   r   __classcell__)r   s   @r   r   r      s      $+/")+! ! 	!
 !  $Cy! ! $'! ! ! ! !2$U $s $ $r   r   )abcr   r   r   dataclassesr   r   r   typingr   r   r   r-   logging	getLoggerr   rx   r
   r   r   r   r   r   <module>r      se    #  ! 	  % %  			8	$ & & &}s }@$, $r   