
    љiv                        S SK r S SKJrJr  S SKJr  S SKrS SKrS SKrS SKJr  S SK	r	S SK
JrJrJrJr  S SKJr  SSKJr  S	S
KJrJr  S	SKJr  S	SKJr  S	SKJr  S	SKJr  S	SKJrJ r   S	SK!J"r"  S	SK#J$r$  S	SK%J&r&  S	SK'J(r(  S	SK)J*r*J+r+  S	SK,J-r-  S	SK.J/r/J0r0J1r1  S	SK2J3r3  S	SK4J5r5J6r6  \Rn                  " \85      r9\Rt                  " S5      r; " S S5      r<g)    N)datetimetimezone)ZoneInfo)time)AsyncGeneratorTupleListOptional)uuid4   )PoolProvider   )
STSRequestSTSResponse)SpeechDetector)SileroSpeechDetector)SpeechRecognizer)GoogleSpeechRecognizer)
LLMServiceLLMResponse)ChatGPTService)ContextManager)SpeechSynthesizer)VoicevoxSpeechSynthesizer)PerformanceRecordPerformanceRecorder)SQLitePerformanceRecorder)VoiceRecorderRequestVoiceResponseVoices)FileVoiceRecorder)SessionStateManagerSQLiteSessionStateManagerz"\[(?:lang|language):([a-zA-Z-]+)\]c            G          \ rS rSrSSSSSSSSSSSSSSSSSS	S
SSS
SSSSSSSSSSS	SSS.#S\S\S\S\S\S\S\S\	S\S\S\S \S!\
S"\S#\S$\S%\\   S&\S'\S(\S)\S*\S+\S,\S-\S.\S/\S0\S1\S2\S3\S4\S5\S6\S7\4FS8 jjrS9\4S: jrS;\S9\4S< jrS= rS> rS? rS@ rSA\4SB jrSA\4SC jrSA\SD\4SE jrSF\SG\4SH jr S9\4SI jr!SJ\"SK\SL\4SM jr#SD\4SN jr$SK\SG\4SO jr%SA\SP\&S9\4SQ jr'SK\SR\S9\(\\)\   4   4SS jr*SA\S9\+\S4   4ST jr,SA\S9\+\S4   4SU jr-SK\4SV jr.SK\4SW jr/SK\4SX jr0SA\S9\+\S4   4SY jr1SG\4SZ jr2S[ r3S\r4g)]STSPipeline!   Ng     Vg      ?i>  zgpt-4o-minizhttp://127.0.0.1:50021.   g      N@g        zo$Previous user's request and your response have been canceled. Please respond again to the following request:

r   z$Current date and time: UTCzaiavatar.dbTrecorded_voicesg      $@F)#vadvad_volume_db_thresholdvad_silence_duration_thresholdvad_sample_ratesttstt_google_api_keystt_sample_ratellmllm_openai_api_keyllm_base_url	llm_modelllm_system_promptllm_context_managerttstts_voicevox_urltts_voicevox_speaker	wakewordswakeword_timeoutmerge_request_thresholdmerge_request_prefixmin_request_text_lengthtimestamp_interval_secondstimestamp_prefixtimestamp_timezonedb_pool_providerdb_connection_strsession_state_managerperformance_recordervoice_recordervoice_recorder_enabledvoice_recorder_dirinvoke_queue_idle_timeoutinvoke_timeoutuse_invoke_queuedebugr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   c       #           ^  U#T l         U"T l        U(       a0  UR                  S:X  a  UT l        OG[	        SUR                   35      eUR                  S5      (       a  SSKJn$  U$" US9T l        OS T l        U(       a  UT l        OET R                  (       a&  SSK	J
n%  U%" T R                  R                  S	9T l        O[        US
9T l        U=(       d    [        UUUU#S9T l        T R                  R                  S[         S["        S[$        S[&        S["        4
U 4S jj5       n&U=(       d    [)        UUU#S9T l        U(       a  UT l        OQS n'U(       a  Un'O1T R                  (       a   SSKJn(  U(" T R                  R                  S	9n'[3        U	U
UUU'UU#S9T l        U=(       d    [5        UUU#S9T l        UT l        UT l        UT l        UT l        S T l         UT l!        UT l"        UT l#        T RH                  T l%        T RL                  T l'        T RP                  T l)        U(       a  UT l*        OET R                  (       a&  SSK+J,n)  U)" T R                  RZ                  S9T l*        O[]        US
9T l*        U=(       d
    [_        UUS9T l0        UT l1        ST l2        T Rf                  T l4        T Rj                  T l6        T Rn                  T l8        0 T l9        0 T l:        0 T l;        U T l<        U!T l=        g )N
postgresqlzUnsupported db_type: zpostgresql://r   )PostgreSQLPoolProvider)connection_strr   )PostgreSQLSessionStateManager)get_pool)db_path)volume_db_thresholdsilence_duration_thresholdsample_raterL   datatextmetadatarecorded_duration
session_idc                   >#    TR                  [        UTR                  R                  US5      TR                  R                  US5      UU UTR                  R                  US5      S95        S h  vN nUR                  S:X  a'  TR                  R                  USUR                  5        TR                  U5      I S h  vN   M[   NV N
 g 7f)Nuser_id
context_idsystem_prompt_params)r[   r]   r^   rX   
audio_dataaudio_durationr_   start)invoker   r*   get_session_datatypeset_session_datar^   handle_response)rW   rX   rY   rZ   r[   responseselfs         O/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/sts/pipeline.pyon_speech_detected0STSPipeline.__init__.<locals>.on_speech_detectedk   s     "&++j%11*iH8844ZN0%)XX%>%>zKa%b/ # 5h ==G+HH--j,H[H[\**84445 5#s=   A-C0C4C5C8ACCCCCC)google_api_keyrV   rL   )PostgreSQLContextManager)openai_api_keybase_urlmodelsystem_promptcontext_managerrC   rL   )rp   speakerrL   )PostgreSQLPerformanceRecorder)
record_dirrV   wav)>rL   rK   db_typerB   
ValueError
startswithdatabase.postgresrO   rD   session_state_manager.postgresrQ   rR   r#   r   r*   rk   bytesstrdictfloatr   r.   r1   llm.context_manager.postgresrn   r   r   r7   r:   r;   r<   r=   _validate_requestr?   rA   r@   handle_response_defaultrg   stop_response_defaultstop_responseprocess_llm_chunk_default_process_llm_chunkrE   performance_recorder.postgresru   rP   r   r!   rF   rG   $voice_recorder_response_audio_formaton_before_llm_default_on_before_llmon_before_tts_default_on_before_ttson_finish_default
_on_finish_request_queues_invoke_workers_response_queuesrI   rJ   )*ri   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rO   rQ   rk   _context_managaerrn   ru   s*   `                                         rj   __init__STSPipeline.__init__"   s   R 
 0 ''<7(8% #89I9Q9Q8R!STT))/::B$:J[$\D!$(D! !)>D&""U)FPTPePePnPn)oD&)BK\)]D&  
. 7'E'	
 
	$	$	55 	5 	5t 	5`e 	5sv 	5 
%	5  
0-'
 DH $"$7!((V(@$J_J_JhJh(i%%1%/ 1"3DH  
3%(
 # 0 (?$$8! "& +E'"4 0  $;;!77"&"@"@  (<D%$$X,IY]YnYnY}Y},~),EN_,`) - 
0A)'1
 '=#491 #88"8800 :<8:EG)B&,    returnc                    U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  S.$ )Nr:   r;   r<   r=   r?   r@   rA   rG   rI   rJ   rK   rL   r   ri   s    rj   
get_configSTSPipeline.get_config   st     $ 5 5'+'C'C$($=$=*.*I*I $ 5 5"&"9"9&*&A&A)-)G)G"11 $ 5 5ZZ
 	
r   configc                     U R                  5       R                  5       n0 nUR                  5        H"  u  pEUc  M
  XB;  a  M   [        XU5        XSU'   M$     U$ ! [         a     M5  f = fN)r   keysitemssetattr	Exception)ri   r   allowed_keysupdatedkvs         rj   
set_configSTSPipeline.set_config   sp    (--/LLNDAy$#
 #   s   A
A'&A'c                     Xl         U$ r   )r   ri   funcs     rj   validate_requestSTSPipeline.validate_request   s    !%r   c                     Xl         U$ r   )r   r   s     rj   on_before_llmSTSPipeline.on_before_llm       "r   c                     Xl         U$ r   )r   r   s     rj   on_before_ttsSTSPipeline.on_before_tts   r   r   c                     Xl         U$ r   )r   r   s     rj   	on_finishSTSPipeline.on_finish   s    r   requestc                    #    g 7fr    ri   r   s     rj   r   !STSPipeline.on_before_llm_default           c                    #    g 7fr   r   r   s     rj   r   !STSPipeline.on_before_tts_default  r   r   rh   c                    #    g 7fr   r   ri   r   rh   s      rj   r   STSPipeline.on_finish_default  r   r   samplesr^   c                 V   #    U R                   R                  X5      I S h  vN   g  N7fr   )r*   process_samples)ri   r   r^   s      rj   process_audio_samples!STSPipeline.process_audio_samples	  s     hh&&w;;;   )')c                     Xl         U$ r   )r   r   s     rj   process_llm_chunkSTSPipeline.process_llm_chunk  s    "&r   llm_stream_chunkr[   r]   c                    #    0 $ 7fr   r   )ri   r   r[   r]   s       rj   r   %STSPipeline.process_llm_chunk_default  s
     	s   c                 <   #    [         R                  SU 35        g 7f)NzHandle response: loggerinfo)ri   rh   s     rj   r   #STSPipeline.handle_response_default  s     'z23s   c                 B   #    [         R                  SU SU 35        g 7f)NzStop response: z / r   )ri   r[   r^   s      rj   r   !STSPipeline.stop_response_default  s     oj\ZLABs   last_request_atc                 D   [         R                  " [        R                  5      nU R                  (       d  gU R
                  X2-
  R                  5       :  a  gU R                   H9  nXAR                  ;   d  M  [        R                  SU SUR                   35          g   g)NTz	Wake by 'z': F)
r   nowr   utcr:   r;   total_secondsrX   r   r   )ri   r   r   r   wws        rj   is_awakeSTSPipeline.is_awake  sx    ll8<<(~~  C$9#H#H#JJ..B\\!it3w||n=> !
 r   transaction_idc                    #    U R                   R                  U5      I S h  vN nUR                  U:H  UR                  4$  N7fr   )rD   get_session_stateactive_transaction_id)ri   r[   r   states       rj   is_transaction_active!STSPipeline.is_transaction_active+  s@     00BB:NN**n<e>Y>YYY Os   AA Ac                   #    U R                   (       a!  U R                  U5        S h  vN nU7v   M  U R                  U5        S h  vN nU7v   M   N,
 g  N
 g 7fr   )rK   _invoke_queued_invoke_directr   s      rj   rc   STSPipeline.invoke/  sR       "&"5"5g"> h"&"5"5g"> h	">">sI   #AAAAAA
AAAAAAAc                  ^ ^^^^^#    S m TR                   (       d  [        S5      e[        R                  " T R	                  [        STR                   STR                  0S95      5        [        5       m[        [        5       5      m[        TTR                  T R                  R                  R                  T R                  R                  R                  T R                   R                  R                  S9mT R"                  (       aH  TR$                  (       a7  T R&                  R)                  [+        TTR$                  5      5      I S h  vN   TR,                  (       a6  TR,                  nT R.                  (       a  [0        R3                  SU 35        OTR$                  (       a  T R                  R5                  TR                   TR$                  5      I S h  vN R,                  nU(       dW  T R.                  (       a  [0        R3                  S5        [        STR                   TR                  TR6                  S	S0S
97v   g T R.                  (       a  [0        R3                  SU 35        OSnUTl        T R8                  (       a  T R9                  T5      I S h  vN =n(       ag  T R.                  (       a%  [0        R3                  STR,                   SU 35        [        STR                   TR                  TR6                  S	U0S
97v   g TR,                  Tl        [<        R>                  " TR@                  =(       d    / SS9Tl!        TRD                  Tl#        [        5       T-
  Tl$        T RJ                  RM                  TR                   5      I S h  vN n[N        RP                  " [R        RT                  5      nT RV                  S:  Ga-  TRX                  (       Ga  URZ                  (       a  XTRZ                  -
  R]                  5       nT RV                  U:  a  [0        R3                  SU ST RV                   35        UR^                  =(       d    SRa                  T Rb                  S5      nT Rb                   U STR,                   3Tl        TR@                  =(       d    URd                  Tl         T RJ                  Rg                  TR                   UTR,                  TR@                  5      I S h  vN   T R                  Rh                  Rk                  TR6                  5      I S h  vN nT Rm                  TU5      n	U	(       Ga  TR6                  (       aX  U[N        Rn                  Ra                  [R        RT                  S9:X  a)  [0        R3                  STR6                   35        S Tl        TR6                  (       d:  [        [        5       5      Tl        [0        R3                  STR6                   35        T Rp                  S:  a  XTRr                  -
  R]                  5       T Rp                  :  a]  [N        RP                  " [u        T Rv                  5      5      Ry                  S5      n
T Rz                   U
 STR,                   3Tl        UnOURr                  nT R.                  (       a3  [0        R3                  ST STR,                   SUR|                   S35        T RJ                  R                  TR                   TU5      I S h  vN   OS Tl        0 Tl         TR6                  Tl        U	(       aP  T R                  (       a  TR                  (       d.  T R                  TR                   TR6                  5      I S h  vN   [        5       T-
  TlC        [        STR                   TR                  TR6                  TR,                  US.S
97v   T R                  T5      I S h  vN   T R                  R                  TR6                  TR                  TR,                  TR@                  TR                  5      mS [        [        [        [        4   S 4   4UUUU UU4S! jjnSn/ nS"n0 nU" 5         S h  vN u  nnnnT R                  TR                   T5      I S h  vN u  nnU(       d=  T R.                  (       a)  [0        R3                  S#U STR,                   S$T S35          GObUR                  (       a  UR                  nUR                  =(       d    UR                  nU(       a_  UR                  UR                  UR                  (       a1  UR                  R                  (       a  UR                  R                  OS S%.UU'   [        S&TR                   TR                  UR6                  UR                  S'97v   GMV  UUR,                  -  nUTlR        U(       a  UR                  U5        [        S(TR                   TR                  UR6                  UR,                  UR                  UUUU(       a  S"OSS).S*9	7v   SnGM  [        5       T-
  TlU        U(       a1  [<        R>                  " [        UR                  5       5      SS9TlX        T R                  R)                  T5        [        S+TR                   TR                  TR6                  UTR                  =(       d    SS,9nT R"                  (       a8  T R&                  R)                  [        TUT R                  5      5      I S h  vN   T R                  TU5      I S h  vN   U7v   g  G
N! G	N GN GN GNz GNF GNe GN GN GN GN
 GN1 NH N0! [         a  n[        R                  " 5       n[0        R                  S-U SU 35        T(       aA  [<        R>                  " [        U5      US..SS9Tlb        T R                  R)                  T5        [        S/TR                   TR                  TR6                  S/S00S
97v    S nAg S nAff = f7f)1Nz'session_id is required but not providedacceptedblock_barge_in)re   r[   rY   )r   r]   stt_namellm_nametts_namezUse text in request: zNo speech recognized.canceledreason)re   r[   r]   r^   rY   zRecognized text from request:  zInvalid request: z / reason: F)ensure_asciir   z%Merge consecutive requests: Interval z < Threshold 
)tzinfozInvalid context_id: zCreate new context_id: z%Y/%m/%d %H:%M:%Sz

zStart transaction:  z (previous: )rb   )request_textrecognized_textr   c            
     l  >#    Sn S nT  S h  vN nTR                  T
R                  T5      I S h  vN u  p4U(       d<  TR                  (       a)  [        R	                  SU ST
R
                   ST S35          g T	R                  S:X  a  [        5       T-
  T	l        UR                  (       a  S US S 47v   M  UR                  (       aP  XR                  -  n U T	l
        T	R                  S:X  a+  [        5       T-
  T	l        TR                  T
5      I S h  vN   [        5       T-
  T	l        [        R                  UR
                  5      =n(       a  UR!                  S5      nTR#                  UT
R                  T
R$                  5      I S h  vN nTR&                  R)                  UR                  UR
                  U=(       d    0 S.US	9I S h  vN nU(       a4  T	R*                  S:X  a  [        5       T-
  T	l        [        5       T-
  T	l        XrXR.                  47v   GM   GN GN GN N N^
 g 7f)
Nr   z&Break llm_stream for new transaction: r    (current: r   r   r   )styled_textr   )rX   
style_infolanguage)r   r[   rL   r   r   rX   llm_first_chunk_timer   	tool_call
voice_textresponse_voice_textllm_first_voice_chunk_timer   llm_timeLANGUAGE_PATTERNsearchgroupr   r]   r7   
synthesizetts_first_chunk_timetts_timeguradrail_name)r  r   r   is_txn_active
active_txnmatchparsed_infoaudio_chunk
llm_streamperformancer   ri   
start_timer   s           rj   synthesize_stream5STSPipeline._invoke_direct.<locals>.synthesize_stream  s"    
.8 1c*6:6P6PQXQcQces6t0t-M(::"KK*PQ[P\\]^e^j^j]kkv  xF  wG  GH  )I  J #771<;?6J;N8 (11"$4dD@@  (22"&A&AA
:D7&AAQFEIVjEXKB"&"5"5g">>>+/6J+>K( !1 7 78H8M8M NNuN#(;;q> )-(?(?(**) #K )-(;(;-883C3H3HR]Rcac#d!) )< ) #K #&;;q@?Cv
?RK</3v
/B,%CbCbbbc1c0t, ?##K /9so   H4H2H%H2 H4H(C#H4H+A7H4H.AH4H0AH4%H2(H4+H4.H40H42H4Tz-Break synthesize_stream for new transaction: r   )name	argumentsresultr  )re   r[   r]   r^   r  chunk)is_first_chunkis_guardrail_triggered)	re   r[   r]   r^   rX   r  r   r`   rY   final)re   r[   r]   r^   rX   r  zError at invoke: )error	tracebackr  z-Error in processing Speech-to-Speech pipeline)cr[   ry   asynciocreate_taskrg   r   r   r   r~   r   r   r]   r.   	__class____name__r1   r7   rG   r`   rF   recordr   rX   rL   r   r   	recognizer^   r   r   jsondumpsfilesrequest_filesra   voice_lengthstt_timerD   r   r   r   r   r   r<   allow_mergeprevious_request_timestampr   previous_request_textreplacer=   previous_request_filesupdate_previous_requestrs   get_last_created_atr   minr?   timestamp_inserted_atr   rA   strftimer@   r   update_transactionrK   wait_in_queuer   stop_response_timer   chat_streamr_   r   r   r}   r   r   r  idr  r  r  rW   response_textappendr  
total_timelistvalues
tool_callsrE   r  r    r   r   r   r  
format_excr  
error_info) ri   r   r   r   r   r   requests_intervalr.  last_created_atr   now_strr4  r  r;  response_audiosr  tool_call_recordsr  r   r   r  r  r  tctc_idfinal_responseiextbr  r  r  r   s    ``                          @@@@rj   r   STSPipeline._invoke_direct7  sJ
    V	%% !JKK  4 4["--*G,B,BC6 !  J \N+-++44++44++44K **w/A/A))00ngN`N`1abbb||"),,::KK"77H IJ##)-););G<N<NPWPbPb)c#c"i"i&zz$;<%'#*#5#5 '#*#5#5"*,C!D  ::KK"@@Q RS"$*GL%%#'#9#9'#BBB6Bzz&7~[QWPX$YZ%'#*#5#5 '#*#5#5"*F!3  '.||K$(,

7==3FBUZ([K%'.'='=K$#'6J#6K  44FFwGYGYZZE,,x||,C ++a/G4G4G4G33),/O/O)O(^(^(`%336GG&KL]K^^klp  mI  mI  lJ  %K  L161L1L1RPR0[0[\`\u\uwy0z-*.*C*C)DEZD[[]^e^j^j]k'l(/(U9U9U00HH&&W\\7==   %)HH$<$<$P$PQXQcQc$ddO}}Wo>H%%&(,,*>*>hll*>*SS&:7;M;M:N$OP-1*))),UWG&KK"9':L:L9M NO 22Q6CB]B]<];l;l;nqu  rQ  rQ  <Q&ll8D4K4K+LMVVWjkG&*&;&;%<WIT',,#XGL,/),1,G,G) ::KK"5n5EQw||nT`afa|a|`}}~   A00CCGDVDVXfh}~~~  $ "%,%7%7K" !6!6g>S>S((););W=O=OPPP-1Vj-@K*"--"--*1,,?[  %%g...--g.@.@'//SZS_S_ahananpw  qM  qM  NJ4c^E%BT<UW[<[-\ 4c 4cl M O!N "QbQd ,'Mk#3X~262L2LWM_M_ao2p,p)z$zz&ST^S__`ahamam`nny  {I  zJ  JK  %L  M#--)33BEE,RWWE %'GG)+8:		biinnbiinnZ^4)%0
 &(#*#5#5 '#3#>#>"2"<"<  !1!6!66,9)#**;7! &11#OO/::)../::%*0>bpZ^v{|
 
 "'%)Vj%8K" )-D9J9Q9Q9S4Tch)i&%%,,[9("--"--"&::@bN **))00"OT5^5^2    //'>:::  W c $d& C$ [ e0  Q /|,',p Rez ;  	%%'BLL,SEbT:;)- X!#5 !&*'& ))00="--"--!#RS  	sO  qEn m/Bn m2A+n 
qAn #m5$A1n qB	n m8 E!n m;6n 8m>9G#n nA6n nA%n 9n:Bn nn
n%n 4n5Jn 
nn $n%	n .q/n 2n 5n 8n ;n >n n n n 
nn n n n 
q!B(q	qqqc                   #    XR                   ;  a  g U R                   U   nU R                  R                  U0 5      nUR                  5       (       d   UR	                  5       u  pEUR                  U5      nU(       aE  UR                  [        SUUR                  S95      I S h  vN   UR                  S 5      I S h  vN   UR                  5       (       d  M  g g  N6 N! [        R                   a     g f = f7f)N	cancelled)re   r[   r^   )
r   r   getempty
get_nowaitputr   r^   r   
QueueEmpty)ri   r[   queuepending
request_idr   response_queues          rj   _clear_queueSTSPipeline._clear_queueQ  s     111$$Z0''++J;++--&+&6&6&8#
!(Z!8!(,,[(#-#*#5#5.   
 ),,T222 ++--

 3%% sU   AC:AC  %C&C  >C?C  C:C:C  C   C74C:6C77C:c           
        #    U R                   U   nU R                  (       a  [        R                  SU 35           [        R
                  " UR                  5       U R                  S9I S h  vN u  p4U R                  R                  U0 5      R                  U5      n [        R                  " U R                  5       IS h  vN   U R                  U5        S h  vN nU(       d  M  UR                  U5      I S h  vN   M-   N! [        R                   aV    UR                  5       (       a<  U R                  (       a  [        R                  SU 35        U R                  U5         g  GM7  f = f N N Ny
 S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= f! [        R                   aR    [        R!                  SU 35        U(       a0  UR                  [#        SUUR$                  SS0S95      I S h  vN     Oh[&         a\  n[        R)                  SU S	U 35        U(       a0  UR                  [#        SUUR$                  SS
0S95      I S h  vN     S nAOS nAff = fU(       a  UR                  S 5      I S h  vN    XR                  ;   a  U R                  U   R+                  US 5        OU! U(       a  UR                  S 5      I S h  vN    XR                  ;   a   U R                  U   R+                  US 5        f f = fGM  ! [&         a6  n[        R)                  SU S	U 35        U R                  U5         S nAg S nAff = f7f)NzQueue worker started: )timeoutz(Queue worker idle timeout, cleaning up: zinvoke timed out: r  zinvoke timed out)re   r[   r^   rY   zinvoke error in queue worker: z - zinvoke error in queue workerzQueue worker crashed: )r   rL   r   r   r   wait_forrP  rI   TimeoutErrorrQ  _cleanup_session_queuer   r\  rJ   r   rS  warningr   r^   r   r  pop)ri   r[   rU  rW  r   rX  rh   exs           rj   _process_queueSTSPipeline._process_queuef  s    $$Z0::KK0=>.	4
070@0@		T-K-K1 +'J "&!6!6!:!::r!J!N!Nz!ZP&t/B/BCC.2.A.A'.J C(-~&4&8&8&B B B!+ ++ {{}}::"KK*RS]R^(_`33J?  DC B /K  DCCCCC ++ NN%7
|#DE%,00!('1'.'9'9&-/A%B	2    ! LL#A*SQSPT!UV%,00!('1'.'9'9&-/M%N	2    &,00666!%:%::--j9==j$O &,00666!%:%::--j9==j$O ;Q V  	4LL1*SEF''
33	4sn  9M"L 0D
 .D/D
 5+L !$F* E7F* 	FE=E9 E=#F-FE;FD
 
A#E4-L .M"/L 3E44L 7F* 9E=;F=F>F* 	F
F* K F'FF'#F* &K 'F* *AI4H
I4K 	I4AI/$I'%I/*K /I44K 7L J4L L#K&$5LL 
M),MM"MM"c                     U R                   R                  US 5        U R                  R                  US 5        U R                  R                  US 5        g r   )r   ra  r   r   )ri   r[   s     rj   r_  "STSPipeline._cleanup_session_queue  sD      T2  T2!!*d3r   c                n  #    UR                   nX R                  ;  ac  [        R                  " 5       U R                  U'   0 U R                  U'   [        R
                  " U R                  U5      5      U R                  U'   UR                  (       d  U R                  U5      I S h  vN   [        [        5       5      n[        R                  " 5       nX@R                  U   U'   U R                  U   R                  X145      I S h  vN    UR                  5       I S h  vN nUc  g U7v   M#   N N* N7fr   )r[   r   r   Queuer   r!  rc  r   r7  rY  r~   r   rS  rP  )ri   r   r[   rW  rX  rh   s         rj   r   STSPipeline._invoke_queued  s     ''
111/6}}D  ,02D!!*-/6/B/B##J/0D  , $$##J///\
5<]]_8Fj)*5"":.22J3HIII+//11HN	  0 	J 2s7   B$D5&D/'AD5D1D5D3 D51D53D5c                 V   #    U R                   R                  U5      I S h  vN   g  N7fr   )r*   finalize_session)ri   r^   s     rj   finalizeSTSPipeline.finalize  s     hh''
333r   c                    #    U R                   R                  5         U R                  R                  5       I S h  vN   g  N7fr   )rE   closerF   stopr   s    rj   shutdownSTSPipeline.shutdown  s/     !!'')!!&&(((s   8AA A)r   r   r   r   r   r   r   r   rB   rL   rg   rI   rJ   r1   r=   r<   rE   rD   r   r.   r?   r@   rA   r7   rK   r*   rF   rG   r   r;   r:   )5r#  
__module____qualname____firstlineno__r   r   intr   r~   r   r   r   r	   r   r"   r   r   boolr   r   r   r   r   r   r   r   r   r   r   r   r   r}   r   r   r   r   r   r   r   r   r   r
   r   r   rc   r   rY  rc  r_  r   rl  rq  __static_attributes__r   r   rj   r%   r%   !   s    #).03$ $"&$"& &!%.2!% 8$&#"&), %X (),/ :"')-!.5948(,'+"3+/ $!&Om- m- "'	m-
 ).m- m- m-  m- m- m-  m- m- m- m- ,m-  !m-" #m-$ "%m-& 9'm-(  )m-* "'+m-, "-m-2 "%3m-4 %*5m-6 7m-8  9m-: ';m-< =m->  3?m-@ 2Am-B &Cm-D !%Em-F  Gm-H $)Im-J Km-L Mm-N Om-^
D 
  $ : : z [ <5 <c <  Y\ gj 4k 4Cc Cs C
 X $ $Zc Z3 ZSXY]_ghk_lYlSm ZJ >+tBS3T XJ X>+W[J[;\ XtS *34s 34j4 4
 
T)	*84 4)r   r%   )=r   r   r   zoneinfor   r&  loggingrer   r  typingr   r   r	   r
   uuidr   databaser   modelsr   r   r*   r   
vad.sileror   r.   r   
stt.googler   r1   r   r   llm.chatgptr   llm.context_managerr   r7   r   tts.voicevoxr   rE   r   r   performance_recorder.sqliter   rF   r   r   r    voice_recorder.filer!   rD   r"   r#   	getLoggerr#  r   compiler  r%   r   r   rj   <module>r     s     '    	   8 8  # +  , ! . ( ' / " 3 H B G G 2 Q			8	$::CD `
) `
)r   