
    /j                        S SK Jr  S SKrS SKJr  S SKJrJr  SSKJ	r	J
r
  SSKJrJrJrJr  SS	KJr  SS
KJrJrJrJrJrJr  \" S \R2                  S9r " S S\5      r " S S\5      rg)    )annotationsN)AsyncIterable)AnyClassVar   )tokenizeutils)DEFAULT_API_CONNECT_OPTIONS	NOT_GIVENAPIConnectOptions
NotGivenOr   )SentenceStreamPacer)TTSAudioEmitterChunkedStreamSynthesizedAudioSynthesizeStreamTTSCapabilities)	max_retrytimeoutc                     ^  \ rS rSr\SS.       SU 4S jjjr\SS j5       r\SS j5       r\	S.     SS jjr
\	S.   SS	 jjrSS
 jrSS jrSS jrSrU =r$ )StreamAdapter   F)sentence_tokenizertext_pacingc               x  > [         TU ]  [        SSS9UR                  UR                  S9  Xl        U=(       d    [        R                  R                  SS9U l	        S U l
        USL a  [        5       U l
        O[        U[        5      (       a  X0l
        U R
                  R                  SU R                  5        g )NT)	streamingaligned_transcript)capabilitiessample_ratenum_channels)retain_formatmetrics_collected)super__init__r   r!   r"   _wrapped_ttsr   	blingfireSentenceTokenizer_sentence_tokenizer_stream_pacerr   
isinstanceon_on_metrics_collected)selfttsr   r   	__class__s       R/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/tts/stream_adapter.pyr&   StreamAdapter.__init__   s     	(4DQ)) 	 	

  #5 $
9K9K9]9] :^ :
  :>$!4!6D%899!,0$2L2LM    c                .    U R                   R                  $ N)r'   modelr/   s    r2   r7   StreamAdapter.model2   s      &&&r4   c                .    U R                   R                  $ r6   )r'   providerr8   s    r2   r;   StreamAdapter.provider6   s      )))r4   conn_optionsc               4    U R                   R                  XS9$ )N)textr>   )r'   
synthesize)r/   r@   r>   s      r2   rA   StreamAdapter.synthesize:   s       +++QQr4   c                   [        XS9$ N)r0   r>   )StreamAdapterWrapper)r/   r>   s     r2   streamStreamAdapter.stream?   s     $HHr4   c                8    U R                   R                  5         g r6   )r'   prewarmr8   s    r2   rI   StreamAdapter.prewarmD   s    !!#r4   c                0    U R                   " S/UQ70 UD6  g Nr$   )emit)r/   argskwargss      r2   r.   #StreamAdapter._on_metrics_collectedG   s    		%777r4   c                X   #    U R                   R                  SU R                  5        g 7frL   )r'   offr.   r8   s    r2   acloseStreamAdapter.acloseJ   s"     143M3MNs   (*)r*   r+   r'   )r0   r   r   z&NotGivenOr[tokenize.SentenceTokenizer]r   zSentenceStreamPacer | boolreturnNone)rU   str)r@   rW   r>   r   rU   r   )r>   r   rU   rE   rU   rV   )rN   r   rO   r   rU   rV   )__name__
__module____qualname____firstlineno__r   r&   propertyr7   r;   r
   rA   rF   rI   r.   rS   __static_attributes____classcell__r1   s   @r2   r   r      s    
 FO27N N C	N
 0N 
N N0 ' ' * * ?ZRR*;R	R 4OI0I	I
$8O Or4   r   c                  P   ^  \ rS rSr% SrS\S'   S	U 4S jjrS
S jrSS jrSr	U =r
$ )rE   N   tts_stream_adapterzClassVar[str]_tts_request_span_namec               B   > [         TU ]  U[        S9  Xl        X l        g rD   )r%   r&   *DEFAULT_STREAM_ADAPTER_API_CONNECT_OPTIONS_tts_wrapped_tts_conn_options)r/   r0   r>   r1   s      r2   r&   StreamAdapterWrapper.__init__Q   s!    S/YZ#&	)5&r4   c                   #    g 7fr6    )r/   event_aiters     r2   _metrics_monitor_task*StreamAdapterWrapper._metrics_monitor_taskV   s     s   c                  ^ ^^#    T R                   R                  R                  5       mT R                   R                  (       a$  T R                   R                  R	                  TTS9m[
        R                  " 5       nTR                  UT R                   R                  T R                   R                  SSS9  [
        R                  " 5       nTR                  US9  SU U4S jjnSUU U4S jjn[        R                  " U" 5       5      [        R                  " U" 5       5      /n [        R                  " U6 I S h  vN   TR                  5       I S h  vN   [
        R                  R                   " U6 I S h  vN   g  NB N, N	! TR                  5       I S h  vN    [
        R                  R                   " U6 I S h  vN    f = f7f)	N)sent_streamaudio_emitterz	audio/pcmT)
request_idr!   r"   	mime_typerF   )
segment_idc                    >#    TR                     S h  vN n [        U TR                  5      (       a  TR                  5         M6  TR	                  U 5        MI   ND
 TR                  5         g 7fr6   )	_input_chr,   _FlushSentinelflush	push_text	end_input)datar/   rp   s    r2   _forward_input1StreamAdapterWrapper._run.<locals>._forward_inputm   sY     "nn ,ddD$7$788%%'%%d+,n !!#s&   A-AAAAA-AA-c                 h  >#    SSK Jn   SnT  S h  vN nTR                  U " UR                  US95        UR                  R	                  5       =n(       d  ML  TR
                  R                  R                  UTR                  S9 IS h  vN nU  S h  vN nTR                  UR                  R                  R                  5       5        XR                  R                  -  nMV   N N^ NU
 TR                  5         S S S 5      IS h  vN    GM  ! , IS h  vN  (       d  f       GM  = f
 g 7f)Nr   )TimedStringg        )r@   
start_timer=   )voice.ior   push_timed_transcripttokenstriprg   r'   rA   rh   pushframer{   tobytesdurationrx   )	r   r   evr@   
tts_streamaudiooutput_emitterr/   rp   s	         r2   _synthesize.StreamAdapterWrapper._run.<locals>._synthesizew   s     .H' +b44RXX(C !# 0009911<<t'E'E =  '1 9e&++EKK,<,<,D,D,FG KK$8$88+9z #((*      (s   D2D0C)D0A6D2C+D2DC/C-
C/AD)D0+D2-C//D D2DD2D-	DD-	'D2rX   )rg   r*   rF   r+   wrapr	   	shortuuid
initializer!   r"   start_segmentasynciocreate_taskgatherrS   aiocancel_and_wait)r/   r   rr   rt   r|   r   tasksrp   s   ``     @r2   _runStreamAdapterWrapper._runY   sj    ii33::<99""))1166', 7 K
 __&
!!!		--//! 	" 	
 __&
$$
$;	$ 	$	+ 	+*  01.
	4..%((($$&&&))++U333 )&3 $$&&&))++U333sl   D!G
'F =F >F G
F$G
:F;G
 F G
G
GF%G GGG
)rg   rh   )r0   r   r>   r   rU   rV   )rl   zAsyncIterable[SynthesizedAudio]rU   rV   )r   r   rU   rV   )rY   rZ   r[   r\   rd   __annotations__r&   rm   r   r^   r_   r`   s   @r2   rE   rE   N   s"    ,@M@6
:4 :4r4   rE   )
__future__r   r   collections.abcr   typingr   r    r   r	   typesr
   r   r   r   stream_pacerr   r0   r   r   r   r   r   r   r   rf   r   rE   rk   r4   r2   <module>r      s^    "  )    Y Y -  .?4<<. *
2OC 2OjE4+ E4r4   