+
    ~jJ                    b   ^ RI Ht ^ RIt^ RIt^ RIHtHt ^ RIHtH	t	 ^ RI
HtHt ^ RIHtHt ^ RIHt ^ RIHtHtHtHt ^ R	IHtHtHt ^ R
IHt ^ RIHt ^RIH t H!t! ^RI"H#t# ^RI$H%t% ^RI&H't' ^RIH(t(H)t)H*t*H+t+H,t, ^RI-H.t.H/t/H0t0 ^RI1H2t2 ] ! R R]3]4      4       t4] ! R R4      4       t5] ! R R4      4       t6] ! R R4      4       t7] ! R R4      4       t8 ! R R]4      t9]! R4      t: ! R  R!]]Pv                  ]R$,          ]:,          ,          ]]:,          4      t< ! R" R#]4      t=]=t>R# )%    )annotationsN)ABCabstractmethod)AsyncIterableAsyncIterator)	dataclassfield)Enumunique)TracebackType)AnyGenericLiteralTypeVar)	BaseModel
ConfigDictField)rtc)Metadata)APIConnectionErrorAPIError)LanguageCode)logger)
STTMetrics)DEFAULT_API_CONNECT_OPTIONS	NOT_GIVENAPIConnectOptions
NotGivenOrTimedString)AudioBufferaiois_given)calculate_audio_durationc                  8    ] tR t^ tRt Rt Rt Rt Rt Rt	Rt
R# )	SpeechEventTypestart_of_speechinterim_transcriptpreflight_transcriptfinal_transcriptrecognition_usageend_of_speech N)__name__
__module____qualname____firstlineno__START_OF_SPEECHINTERIM_TRANSCRIPTPREFLIGHT_TRANSCRIPTFINAL_TRANSCRIPTRECOGNITION_USAGEEND_OF_SPEECH__static_attributes__r,       k/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/stt/stt.pyr%   r%       s?    'Ot-@1 *)+E#MJr8   r%   c                      ] tR t^5t$ R]R&   R]R&   RtR]R&   RtR]R&   RtR]R	&   R
tR]R&   R
t	R]R&   R
t
R]R&   R
tR]R&    R
tR]R&    R
tR]R&    R R ltRtR
# )
SpeechDatar   languagestrtext        float
start_timeend_time
confidenceNz
str | None
speaker_idzbool | Noneis_primary_speakerzlist[TimedString] | Nonewordszlist[LanguageCode] | Nonesource_languageszlist[str] | Nonesource_textszdict[str, Any] | Nonemetadatac                   V ^8  d   QhRR/#    returnNoner,   )formats   "r9   __annotate__SpeechData.__annotate__L   s     	 	t 	r8   c                	   \        V P                  \        4      '       g;   \        V P                  \        4      '       d   \        V P                  4      V n        V P                  e[   V P                   Uu. uF<  p\        V\        4      '       g"   \        V\        4      '       d   \        V4      MTNK>  	  upV n        R # R # u upi N)
isinstancer<   r   r=   rG   )selflangs   & r9   __post_init__SpeechData.__post_init__L   s    $--66:dmmUX;Y;Y(7DM  ,
 !11	% 2D "$55*T3:O:O T" 2	%D! -%s   7AC)r<   rG   )r-   r.   r/   r0   __annotations__rA   rB   rC   rD   rE   rF   rG   rH   rI   rW   r7   r,   r8   r9   r;   r;   5   s    
IJHeJ!J
!&**&*E#*26/6]
 &*L")O&*H#*b	 	r8   r;   c                  @    ] tR t^Xt$ R]R&    ^ tR]R&   ^ tR]R&   RtR# )RecognitionUsager@   audio_durationintinput_tokensoutput_tokensr,   N)r-   r.   r/   r0   rY   r^   r_   r7   r,   r8   r9   r[   r[   X   s    5L#M3r8   r[   c                  h    ] tR t^`t$ R]R&   RtR]R&   ]! ]R7      tR]R&   R	t	R
]R&   R	t
R]R&   RtR	# )SpeechEventr%   type r=   
request_id)default_factoryzlist[SpeechData]alternativesNzRecognitionUsage | Noner*   zfloat | Nonespeech_start_timer,   )r-   r.   r/   r0   rY   rd   r	   listrf   r*   rg   r7   r,   r8   r9   ra   ra   `   s>    
J%*4%@L"@15.5&*|*=r8   ra   c                  V    ] tR t^kt$ R]R&   R]R&   RtR]R&   RtR]R&   RtR]R	&   R
tR# )STTCapabilitiesbool	streaminginterim_resultsFdiarizationzLiteral['word', 'chunk', False]aligned_transcriptToffline_recognizer,   N)	r-   r.   r/   r0   rY   rn   ro   rp   r7   r,   r8   r9   rj   rj   k   s1    OK:?7?"t"Kr8   rj   c                  t    ] tR t^ut$ ]! RR7      tRtR]R&   R]R&   R]R	&   ]! R
RR7      t	R]R&   R]R&   Rt
R# )STTErrorT)arbitrary_types_allowed	stt_errorzLiteral['stt_error']rb   r@   	timestampr=   label.)exclude	Exceptionerrorrk   recoverabler,   N)r-   r.   r/   r0   r   model_configrb   rY   r   ry   r7   r,   r8   r9   rr   rr   u   s9    d;L!,D
,JS$/E9/r8   rr   TEventc                    a  ] tR t^tR V 3R llt]R R l4       t]R R l4       t]R R l4       t]R	 R
 l4       t	]
R]/R R ll4       tR]R]/R R lltR R ltR]R]/R R lltR R ltR R ltR R ltR R ltRtV ;t# )STTc                    V ^8  d   QhRRRR/# )rL   capabilitiesrj   rM   rN   r,   )rO   s   "r9   rP   STT.__annotate__   s     . . .D .r8   c               	   < \         SV `  4        Wn        \        V 4      P                   R \        V 4      P
                   2V n        RV n        R# ).TN)super__init___capabilitiesrb   r.   r-   _label_recognize_metrics_needed)rU   r   	__class__s   &$r9   r   STT.__init__   sD    )d../qd1D1D0EF)-&r8   c                   V ^8  d   QhRR/# rL   rM   r=   r,   )rO   s   "r9   rP   r      s      s r8   c                	    V P                   # rS   )r   rU   s   &r9   rv   	STT.label   s    {{r8   c                   V ^8  d   QhRR/# r   r,   )rO   s   "r9   rP   r      s     	 	s 	r8   c                    R# )zGet the model name/identifier for this STT instance.

Returns:
    The model name if available, "unknown" otherwise.

Note:
    Plugins should override this property to provide their model information.
unknownr,   r   s   &r9   model	STT.model        r8   c                   V ^8  d   QhRR/# r   r,   )rO   s   "r9   rP   r      s     	 	# 	r8   c                    R# )zGet the provider name/identifier for this STT instance.

Returns:
    The provider name if available, "unknown" otherwise.

Note:
    Plugins should override this property to provide their provider information.
r   r,   r   s   &r9   providerSTT.provider   r   r8   c                   V ^8  d   QhRR/# )rL   rM   rj   r,   )rO   s   "r9   rP   r      s     " "o "r8   c                	    V P                   # rS   )r   r   s   &r9   r   STT.capabilities   s    !!!r8   r<   c               (    V ^8  d   QhRRRRRRRR/# 	rL   bufferr    r<   NotGivenOr[str]conn_optionsr   rM   ra   r,   )rO   s   "r9   rP   r      s2       "	
 ( 
r8   c               	   "   R # 5irS   r,   )rU   r   r<   r   s   &&$$r9   _recognize_implSTT._recognize_impl   s
         r   c               (    V ^8  d   QhRRRRRRRR/# r   r,   )rO   s   "r9   rP   r      s2     9* 9*9* "	9*
 (9* 
9*r8   c               	N  "   \        VP                  ^,           4       F  p \        P                  ! 4       pV P	                  WVR7      G Rj  xL
 pV P
                  '       d   \        P                  ! 4       V,
          p\        VP                  \        P                  ! 4       VV P                  \        V4      R\        V P                  V P                  R7      R7      pV P                  RV4       Vu # 	  \/        R4      h L  \         d   p	TP                  T4      p
TP                  ^ 8X  d   T P!                  T	RR7       h YCP                  8X  d5   T P!                  T	RR7       \#        RTP                  ^,            R	24      T	hT P!                  T	R
R7       \$        P&                  ! RT	 RT
 R2RT P                  RT^,           RR/R7       \(        P*                  ! T
4      G Rj  xL 
   Rp	?	EK  Rp	?	i\,         d   p	T P!                  T	RR7       h Rp	?	ii ; i5i)   )r<   r   NF
model_namemodel_provider)rd   ru   durationrv   r\   streamedrI   metrics_collectedrz   !failed to recognize speech after 	 attemptsTfailed to recognize speech: , retrying in ssttattemptr   extraunreachable)range	max_retrytimeperf_counterr   r   r   rd   r   r#   r   r   r   emitr   _interval_for_retry_emit_errorr   r   warningasynciosleeprx   RuntimeError)rU   r   r<   r   irA   eventr   stt_metricseretry_intervals   &&$$       r9   	recognizeSTT.recognize   s     |--12A/!..0
"22L 3   111#002Z?H",#(#3#3"&))+!)"kk'?'G!&!)'+zz+/=="#K II1;?+ 3d =))_(  4!-!A!A!!D))Q.$$QE$:000$$QE$:,;L<R<RUV<V;WW`a $$QD$9NN6qcGWWXY!4;;%q1u& mmN3333    6sf    H%+DDD%BD5H%DH"CG;.G1/G;4H%;H"H"	HH""H%c               $    V ^8  d   QhRRRRRR/# rL   	api_errorrx   rz   rk   rM   rN   r,   )rO   s   "r9   rP   r      !     	
 	
Y 	
T 	
d 	
r8   c           
     	~    V P                  R \        \        P                  ! 4       V P                  VVR7      4       R# ry   )ru   rv   ry   rz   N)r   rr   r   r   rU   r   rz   s   &&&r9   r   STT._emit_error   s/    		))+kk'		
r8   c               $    V ^8  d   QhRRRRRR/# )rL   r<   r   r   r   rM   RecognizeStreamr,   )rO   s   "r9   rP   r      s*     
 
 "
 (	

 

r8   c               	    \        R 4      h)zYstreaming is not supported by this STT, please use a different STT or use a StreamAdapter)NotImplementedError)rU   r<   r   s   &$$r9   stream
STT.stream   s     "g
 	
r8   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r     s      d r8   c                   "   R# 5i)z;Close the STT, and every stream/requests associated with itNr,   r   s   &r9   aclose
STT.aclose  s     r   c                   V ^8  d   QhRR/# )rL   rM   r~   r,   )rO   s   "r9   rP   r   	  s      # r8   c                	   "   V # 5irS   r,   r   s   &r9   
__aenter__STT.__aenter__	  
     r   c               (    V ^8  d   QhRRRRRRRR/# 	rL   exc_typeztype[BaseException] | NoneexczBaseException | Noneexc_tbzTracebackType | NonerM   rN   r,   )rO   s   "r9   rP   r     2      , " %	
 
r8   c                	B   "   V P                  4       G R j  xL
  R #  L5irS   r   rU   r   r   r   s   &&&&r9   	__aexit__STT.__aexit__        kkm   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r     s       r8   c                    R# )z&Pre-warm connection to the STT serviceNr,   r   s   &r9   prewarmSTT.prewarm  s    r8   )r   r   r   )r-   r.   r/   r0   r   propertyrv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   __classcell__)r   s   @r9   r~   r~      s    
. .   	 	 	 	 " "  %.	 9* %.	9*
 +F9*v	

 %.
 +F	
 r8   r~   c                  |   ] tR tRt ! R R4      tR]/R R llt]R R l4       t]P                  R	 R
 l4       t]R R l4       t
]
P                  R R l4       t
R R lt]R R l4       tR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR-tR.# )/r   i  c                      ] tR tRtRtRtR# )RecognizeStream._FlushSentineli  z$Sentinel to mark when it was flushedr,   N)r-   r.   r/   r0   __doc__r7   r,   r8   r9   _FlushSentinelr     s    2r8   r   sample_ratec               $    V ^8  d   QhRRRRRR/# )rL   r   r~   r   r   r   zNotGivenOr[int]r,   )rO   s   "r9   rP   RecognizeStream.__annotate__  s*     #. #. #. (	#.
 %#.r8   c                 a  VS n         VS n        \        P                  \        P
                  \        P                  ,          ,          ! 4       S n        \        P                  \        ,          ! 4       S n
        \        P                  P                  S P                  ^4      S n        S P                  w  S n        p\        P                   ! S P#                  V4      RR7      S n        ^ S n        \        P                   ! S P)                  4       4      S n        S P*                  P-                  V 3R l4       \/        V4      '       d   TMRS n        ^ S n        RS n        RS n        \8        P8                  ! 4       S n        R# )a8  
Args:
sample_rate : int or None, optional
    The desired sample rate for the audio input.
    If specified, the audio input will be automatically resampled to match
    the given sample rate before being processed for Speech-to-Text.
    If not provided (None), the input will retain its original sample rate.
zSTT._metrics_task)namec                8   < SP                   P                  4       # rS   )	_event_chclose)_rU   s   &r9   <lambda>*RecognizeStream.__init__.<locals>.<lambda>;  s    t~~/C/C/Er8   Nr?   )_stt_conn_optionsr!   Chanr   
AudioFramer   r   	_input_chra   r  	itertoolstee_tee_event_aiterr   create_task_metrics_monitor_task_metrics_task_num_retries
_main_task_taskadd_done_callbackr"   
_needed_sr
_pushed_sr
_resampler_start_time_offsetr   _start_time)rU   r   r   r   monitor_aiters   f$$$ r9   r   RecognizeStream.__init__  s    	)#..?3Q3Q"QRT+.0MM%%dnna8	+/99(=$00&&}5<O
 (():;


$$%EF)1+)>)>+D59),"&))+r8   c                   V ^8  d   QhRR/# rL   rM   r@   r,   )rO   s   "r9   rP   r   E  s     ' '5 'r8   c                	    V P                   # rS   )r  r   s   &r9   start_time_offset!RecognizeStream.start_time_offsetD  s    &&&r8   c                    V ^8  d   QhRRRR/# rL   valuer@   rM   rN   r,   )rO   s   "r9   rP   r   I  s     ( (u ( (r8   c                	6    V^ 8  d   \        R4      hWn        R# )r   z&start_time_offset must be non-negativeN)
ValueErrorr  rU   r$  s   &&r9   r   r!  H  s    19EFF"'r8   c                   V ^8  d   QhRR/# r  r,   )rO   s   "r9   rP   r   O  s     	  	 E 	 r8   c                    V P                   # )a  Wall-clock anchor for the stream. Seeded to `time.time()` when the
stream is initialized (and re-seeded on each retry). Plugins may
override this via the setter to anchor it at a more accurate moment
(e.g., when the first audio frame is sent to the provider) so that
server-provided stream-relative timestamps (like
`SpeechEvent.speech_start_time`) can be converted to wall-clock
accurately.
)r  r   s   &r9   rA   RecognizeStream.start_timeN  s     r8   c                    V ^8  d   QhRRRR/# r#  r,   )rO   s   "r9   rP   r   [  s     ! ! !$ !r8   c                	6    V^ 8  d   \        R4      hWn        R# )r   zstart_time must be non-negativeN)r&  r  r'  s   &&r9   rA   r*  Z  s    19>?? r8   c               $    V ^8  d   QhRRRRRR/# )rL   acquire_timer@   connection_reusedrk   rM   rN   r,   )rO   s   "r9   rP   r   `  s#     
 
 
RV 
[_ 
r8   c                   V P                   P                  R\        R\        P                  ! 4       RV P                   P                  RRVV\        V P                   P                  V P                   P                  R7      R7	      4       R# )z@Report connection timing as an STTMetrics event with zero usage.r   rc   r?   Tr   )	rd   ru   r   rv   r\   r   r.  r/  rI   N)r  r   r   r   r   r   r   r   )rU   r.  r/  s   &&&r9   _report_connection_acquired+RecognizeStream._report_connection_acquired`  sa    		))+ii&&")"3!TYY__TYYM_M_`
	
r8   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r   r  s    %%D%r8   c                	   "   R # 5irS   r,   r   s   &r9   _runRecognizeStream._runq  s     "%r   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r   t  s     ' '$ 'r8   c           
     	  "   V P                   P                  p\        P                  ! 4       pV P                  V8:  d|    V ;P                  \        P                  ! 4       V,
          ,          un        \        P                  ! 4       V n        \        P                  ! 4       pV P                  4       G R j  xL
 # R #  L  \         Ed   pT^ 8X  d   T P                  TRR7       h T P                  T8X  d.   T P                  TRR7       \        RT P                   R24      ThT P                  TRR7       T P                   P                  T P                  4      p\        P                  ! RT RT R2R	T P                  P                  R
T P                  RR/R7       \        P                   ! T4      G R j  xL 
  T ;P                  ^,          un         R p?EK  R p?i\"         d   pT P                  TRR7       h R p?ii ; i5i)NFr   r   r   Tr   r   r   r   r   r   r   )r  r   r   r  r  r  r5  r   r   r   r   r   r   r  r   r   r   rx   )rU   max_retrieslast_start_timer   r   s   &    r9   r  RecognizeStream._main_taskt  s    ((22 ))+;. ''499;+HH'#'99; "&))+!YY[(( /
 ) '!#$$QE$:&&+5$$QE$:,;D<M<M;NiX $$QD$9%)%7%7%K%KDL]L]%^NNN6qcGWWXY!499#3#3%t'8'8& "--777!!Q&!!    6sa   =H A5B> 5B<6B> 9H<B> >H
C-G7F:8GHH*H+G??HHc               $    V ^8  d   QhRRRRRR/# r   r,   )rO   s   "r9   rP   r     r   r8   c           
     	    V P                   P                  R \        \        P                  ! 4       V P                   P                  VVR7      4       R# r   )r  r   rr   r   r   r   s   &&&r9   r   RecognizeStream._emit_error  s9    		))+ii&&'		
r8   c                    V ^8  d   QhRRRR/# )rL   event_aiterzAsyncIterable[SpeechEvent]rM   rN   r,   )rO   s   "r9   rP   r     s     & &7Q &VZ &r8   c                  "   V  Rj  xL
  pVP                   \        P                  8X  d   VP                  f   Q R4       h\	        VP
                  \        P                  ! 4       RV P                  P                  VP                  P                  VP                  P                  VP                  P                  R\        V P                  P                  V P                  P                  R7      R7	      pV P                  P                  RV4       EK  VP                   \        P                   8X  g   EK3  ^ V n        EK=   EL9ED;R# 5i)zTask used to collect metricsNz>recognition_usage must be provided for RECOGNITION_USAGE eventr?   Tr   )	rd   ru   r   rv   r\   r^   r_   r   rI   r   )rb   r%   r5   r*   r   rd   r   r  r   r\   r^   r_   r   r   r   r   r4   r  )rU   r@  evr   s   &&  r9   r  %RecognizeStream._metrics_monitor_task  s      $ 	& 	&"ww/;;;++7 T7 )!}}"iik ))**#%#7#7#F#F!#!5!5!B!B"$"6"6"D"D!%#'99??499CUCU 		2K@O<<<$%!/	&s,   E	EEED%E	8
E	EE	c                    V ^8  d   QhRRRR/# )rL   framezrtc.AudioFramerM   rN   r,   )rO   s   "r9   rP   r     s     . . .4 .r8   c                   V P                  4        V P                  4        V P                  '       d'   V P                  VP                  8w  d   \	        R4      hVP                  V n        V P
                  '       dx   V P
                  VP                  8w  d]   V P                  '       gK   \        P                  ! VP                  V P
                  \        P                  P                  R7      V n        V P                  '       dB   V P                  P                  V4      pV F  pV P                  P                  V4       K   	  R# V P                  P                  V4       R# )zPush audio to be recognizedz6the sample rate of the input frames must be consistent)qualityN)_check_input_not_ended_check_not_closedr  r   r&  r  r  r   AudioResamplerAudioResamplerQualityHIGHpushr
  send_nowait)rU   rE  framess   && r9   
push_frameRecognizeStream.push_frame  s    ##% ???t%2C2CCUVV++???t%2C2CC???"%"4"4%%OO55::# ???__))%0F**51   NN&&u-r8   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r     s     	: 	:t 	:r8   c                4   V P                  4        V P                  4        V P                  '       d=   V P                  P                  4        F  pV P                  P                  V4       K   	  V P                  P                  V P                  4       4       R# )z#Mark the end of the current segmentN)rH  rI  r  flushr
  rN  r   )rU   rE  s   & r9   rT  RecognizeStream.flush  si    ##% ???..0**51 1 	""4#6#6#89r8   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r     s      4 r8   c                Z    V P                  4        V P                  P                  4        R# )z3Mark the end of input, no more audio will be pushedN)rT  r
  r  r   s   &r9   	end_inputRecognizeStream.end_input  s    

r8   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r     s     ! !d !r8   c                N  "   V P                   P                  4        \        P                  ! V P                  4      G Rj  xL
  V P
                  e)   \        P                  ! V P
                  4      G Rj  xL
  V P                  P                  4       G Rj  xL
  R#  L^ L* L
5i)zClose ths stream immediatelyN)r
  r  r!   cancel_and_waitr  r  r  r   r   s   &r9   r   RecognizeStream.aclose  sv     !!$**---)%%d&8&8999ii    	. : s5   >B% B5B%6B!7!B%B#B%!B%#B%c                   V ^8  d   QhRR/# )rL   rM   ra   r,   )rO   s   "r9   rP   r     s     	 	 	r8   c                	  "    V P                   P                  4       G R j  xL
 pV#  L  \         dM    T P                  P	                  4       '       g%   T P                  P                  4       ;p'       d   Th\        R hi ; i5irS   )r  	__anext__StopAsyncIterationr  	cancelled	exception)rU   valr   s   &  r9   r`  RecognizeStream.__anext__  sr     	/))3355C 
 6! 	/::''))djj6J6J6L/Ls/L	$$.		/s1   B* (* B* *B!B7
BBc                   V ^8  d   QhRR/# )rL   rM   zAsyncIterator[SpeechEvent]r,   )rO   s   "r9   rP   r     s      5 r8   c                	    V # rS   r,   r   s   &r9   	__aiter__RecognizeStream.__aiter__  s    r8   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r     s     M M4 Mr8   c                	    V P                   P                  '       d1   \        V 4      p\        VP                   R VP
                   R24      hR# )r   z
 is closedN)r  closedrb   r   r.   r-   rU   clss   & r9   rI  !RecognizeStream._check_not_closed  sA    >>   t*C#..!13<<.
KLL !r8   c                   V ^8  d   QhRR/# rK   r,   )rO   s   "r9   rP   r   
  s     O O Or8   c                	    V P                   P                  '       d1   \        V 4      p\        VP                   R VP
                   R24      hR# )r   z input endedN)r
  rl  rb   r   r.   r-   rm  s   & r9   rH  &RecognizeStream._check_input_not_ended
  sA    >>   t*C#..!13<<.MNN !r8   c                   V ^8  d   QhRR/# )rL   rM   r   r,   )rO   s   "r9   rP   r     s      / r8   c                	   "   V # 5irS   r,   r   s   &r9   r   RecognizeStream.__aenter__  r   r   c               (    V ^8  d   QhRRRRRRRR/# r   r,   )rO   s   "r9   rP   r     r   r8   c                	B   "   V P                  4       G R j  xL
  R #  L5irS   r   r   s   &&&&r9   r   RecognizeStream.__aexit__  r   r   )r  r  r  r
  r  r  r  r  r  r  r  r  r  r  N)r-   r.   r/   r0   r   r   r   r   r   setterrA   r1  r   r5  r  r   r  rP  rT  rX  r   r`  rh  rI  rH  r   r   r7   r,   r8   r9   r   r     s     
#.
 (1#.J ' ' ( (
 	  	  ! !

" % %'R	
&8.2	:
!	M
O
 r8   r   )r   ry   )?
__future__r   r   r   abcr   r   collections.abcr   r   dataclassesr   r	   enumr
   r   typesr   typingr   r   r   r   pydanticr   r   r   livekitr   livekit.agents.metrics.baser   _exceptionsr   r   r<   r   logr   metricsr   r   r   r   r   r   utilsr    r!   r"   utils.audior#   r=   r%   r;   r[   ra   rj   rr   r|   EventEmitterr~   r   SpeechStreamr,   r8   r9   <module>r     s6   "   # 8 (   1 1 1 1  0 6 #     / . 2 Kc4 K K(   D    = = = L L Ly  
	UW9:VCDFOUpc D r8   