+
    ~jYd                      a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 ^ RIHtHtHtHt ^ RIt^ RIHt ^RIHtHtHt ^RIHtHtHtHtHt ^RIHt ^R	IH t  ^R
I!H"t"H#t#H$t$H%t% ^RIH&t& ^RI'H(t(H)t)H*t* ]R-,          t+]R.,          t,]R/,          t-]R0,          t.]R1,          t/]+],,          ]-,          ].,          ]/,          t0R R lt1 ! R R]4      t2]2]3,          t4R R lt5R R lt6 ! R R]RR7      t7 ! R R]RR7      t8 ! R R]RR7      t9 ! R R]RR7      t: ! R R ]RR7      t;]R!,          t<R!t=R"]>R#&   R$t?R%]>R&&   ]	 ! R' R(4      4       t@ ! R) R*]P                  4      tA ! R+ R,]P                  4      tBR# )2    )annotationsN)	dataclassreplace)AnyLiteral	TypedDictoverload)NotRequired)tokenizettsutils)APIConnectionErrorAPIErrorAPIStatusErrorAPITimeoutErrorcreate_api_error_from_http)LanguageCode)logger)DEFAULT_API_CONNECT_OPTIONS	NOT_GIVENAPIConnectOptions
NotGivenOr)is_given)create_access_tokenget_default_inference_urlget_inference_headersc                    V ^8  d   QhRRRR/# )   modelstrreturnztuple[str, str | None] )formats   "q/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/inference/tts.py__annotate__r%   A   s      s '=     c                \    RpV P                  R4      ;pR8w  d   W^,           R pV RV p W3# )zParse a model string into a model and voice
Args:
    model (str): Model string to parse
Returns:
    tuple[str, str | None]: Model and voice (voice is None if not specified)
N:)rfind)r   voiceidxs   &  r$   _parse_model_stringr-   A   s@     E{{3B&Agi ds<r&   c                  >    ] tR t^Ot$ RtR]R&    R]R&    R]R&   RtR# )	FallbackModela  Inference Fallback Adapter: configuration for a fallback TTS model that runs server-side in LiveKit Inference, providing automatic fallback between providers.

Extra fields are passed through to the provider.

Example:
    >>> FallbackModel(model="cartesia/sonic", voice="")
r    r   r+   zNotRequired[dict[str, Any]]extra_kwargsr"   N__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r"   r&   r$   r/   r/   O   s"     JZJ%--,r&   r/   c               $    V ^8  d   QhRRRRRR/# )r   r   r    r0   dict[str, Any]r!   boolr"   )r#   s   "r$   r%   r%   e   s!      3 n  r&   c                    V P                  R 4      ^ ,          pVR8X  d   \        VP                  R4      4      # VR8X  d   \        VP                  R4      4      # VR8X  d   VP                  R4      R9   # R# )	/cartesiaadd_timestamps
elevenlabssync_alignmentinworldtimestamp_typeF)WORD	CHARACTER)splitr;   get)r   r0   providers   && r$   _has_aligned_transcriptrI   e   sv    {{3"H:L$$%5677<L$$%56779 015JJJr&   c                    V ^8  d   QhRRRR/# )r   fallbackz+list[FallbackModelType] | FallbackModelTyper!   zlist[FallbackModel]r"   )r#   s   "r$   r%   r%   p   s     & &9&&r&   c                    R  R lp\        V \        4      '       d   V  Uu. uF
  q!! V4      NK  	  up# V! V 4      .# u upi )c                    V ^8  d   QhRRRR/# )r   r   FallbackModelTyper!   r/   r"   )r#   s   "r$   r%   )_normalize_fallback.<locals>.__annotate__s   s      / M r&   c                    \        V \        4      '       d)   \        V 4      w  r\        Y'       d   VR7      # R R7      # V # ) r   r+   )
isinstancer    r-   r/   )r   
model_namer+   s   &  r$   _make_fallback+_normalize_fallback.<locals>._make_fallbacks   s8    eS!! 3E :J z%PPRPPr&   )rS   list)rK   rU   ms   &  r$   _normalize_fallbackrY   p   sC     (D!!+348aq!8448$%% 5s   =c                  h    ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   R
]R&   R
]R&   RtR# )CartesiaOptionsr    emotionz)Literal['slow', 'normal', 'fast'] | floatspeedfloatvolumedurationintmax_buffer_delay_msr;   r?   add_phoneme_timestampsuse_normalized_timestampsr"   Nr2   r3   r4   r5   r7   r8   r"   r&   r$   r[   r[      s/    L44MO  ##r&   r[   F)totalc                  "    ] tR t^t$ R]R&   RtR# )DeepgramOptionsr;   mip_opt_outr"   Nre   r"   r&   r$   rh   rh      s    r&   rh   c                      ] tR t^t$ 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]R&   R
]R&   RtR# )ElevenlabsOptionsra   inactivity_timeoutzLiteral['auto', 'off', 'on']apply_text_normalizationr;   	auto_modeenable_loggingenable_ssml_parsingrA   r    language_coder^   	stabilitysimilarity_booststyler]   use_speaker_boostzlist[float]chunk_length_schedulepreferred_alignmentr"   Nre   r"   r&   r$   rk   rk      sS    ::OLL&&r&   rk   c                  N    ] tR t^t$ RtR]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )RimeOptionszMistv2-specific parameters. Arcana has no extra WS JSON query params.
See: https://docs.rime.ai/api-reference/endpoint/websockets-json
r^   speed_alphar;   pause_between_bracketsphonemize_between_bracketsr    inline_speed_alphano_text_normalizationr"   Nr1   r"   r&   r$   ry   ry      s'        $$r&   ry   c                  @    ] tR t^t$ R]R&   R]R&   R]R&   R]R&   RtR	# )
InworldOptionsr^   speaking_ratetemperaturez:Literal['TIMESTAMP_TYPE_UNSPECIFIED', 'WORD', 'CHARACTER']rC   z<Literal['APPLY_TEXT_NORMALIZATION_UNSPECIFIED', 'ON', 'OFF']rm   r"   Nre   r"   r&   r$   r   r      s    NNZZr&   r   	pcm_s16leTTSEncodingDEFAULT_ENCODINGi]  ra   DEFAULT_SAMPLE_RATEc                      ] tR t^t$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   RtR# )_TTSOptionsTTSModels | strr   NotGivenOr[str]r+   zNotGivenOr[LanguageCode]languager   encodingra   sample_rater    base_urlapi_key
api_secretr:   r0   zNotGivenOr[list[FallbackModel]]rK   NotGivenOr[APIConnectOptions]conn_optionsr"   Nre   r"   r&   r$   r   r      sA    &&MLO  --//r&   r   c                    a  ] tR t^t]R]R]R]R]R]R]R]RR	R
]R]R]/R R ll4       t]R]R]R]R]R]R]R]RR	R
]R]R]/R R ll4       t]R]R]R]R]R]R]R]RR	R
]R]R]/R R ll4       t]R]R]R]R]R]R]R]RR	R
]R]R]/R R ll4       t]R]R]R]R]R]R]R]RR	R
]R]R]/R R ll4       t]R]R]R]R]R]R]R]RR	R
]R]R]/R R ll4       tR]R]R]R]R]R]R]RR	R
]R]R]/R V 3R lllt]R R l4       t]	R R l4       t
]	R R  l4       tR! R" ltR# R$ ltR% R& ltR' R( ltR]R)]R]R
]/R* R+ lltR]/R, R- lltR]/R. R/ lltR0 R1 ltR2tV ;t# )3TTSr+   r   r   r   r   r   r   http_sessionNr0   rK   r   c               L    V ^8  d   Qh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R/# )r   r   CartesiaModelsr+   r   r   r   NotGivenOr[TTSEncoding]r   NotGivenOr[int]r   r   r   r   aiohttp.ClientSession | Noner0   zNotGivenOr[CartesiaOptions]rK   7NotGivenOr[list[FallbackModelType] | FallbackModelType]r   r   r!   Noner"   )r#   s   "r$   r%   TTS.__annotate__          	
 " * % " ! $ 3 2 J 4 
r&   c               	    R # Nr"   selfr   r+   r   r   r   r   r   r   r   r0   rK   r   s   &&$$$$$$$$$$$r$   __init__TTS.__init__       " 	r&   c               L    V ^8  d   Qh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R/# )r   r   DeepgramModelsr+   r   r   r   r   r   r   r   r   r   r   r   r0   zNotGivenOr[DeepgramOptions]rK   r   r   r   r!   r   r"   )r#   s   "r$   r%   r      r   r&   c               	    R # r   r"   r   s   &&$$$$$$$$$$$r$   r   r      r   r&   c               L    V ^8  d   Qh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R/# )r   r   ElevenlabsModelsr+   r   r   r   r   r   r   r   r   r   r   r   r0   zNotGivenOr[ElevenlabsOptions]rK   r   r   r   r!   r   r"   )r#   s   "r$   r%   r      s       	
 " * % " ! $ 3 4 J 4 
r&   c               	    R # r   r"   r   s   &&$$$$$$$$$$$r$   r   r      r   r&   c               L    V ^8  d   Qh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R/# )r   r   
RimeModelsr+   r   r   r   r   r   r   r   r   r   r   r   r0   zNotGivenOr[RimeOptions]rK   r   r   r   r!   r   r"   )r#   s   "r$   r%   r     s       	
 " * % " ! $ 3 . J 4 
r&   c               	    R # r   r"   r   s   &&$$$$$$$$$$$r$   r   r     r   r&   c               L    V ^8  d   Qh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R/# )r   r   InworldModelsr+   r   r   r   r   r   r   r   r   r   r   r   r0   zNotGivenOr[InworldOptions]rK   r   r   r   r!   r   r"   )r#   s   "r$   r%   r     s       	
 " * % " ! $ 3 1 J 4 
r&   c               	    R # r   r"   r   s   &&$$$$$$$$$$$r$   r   r     r   r&   c               L    V ^8  d   Qh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R/# )r   r   r    r+   r   r   r   r   r   r   r   r   r   r   r   r0   NotGivenOr[dict[str, Any]]rK   r   r   r   r!   r   r"   )r#   s   "r$   r%   r   (  s       	
 " * % " ! $ 3 1 J 4 
r&   c               	    R # r   r"   r   s   &&$$$$$$$$$$$r$   r   r   '  r   r&   c               L    V ^8  d   Qh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R/# )r   r   r   r+   r   r   r   r   r   r   r   r   r   r   r   r0   zqNotGivenOr[dict[str, Any] | CartesiaOptions | DeepgramOptions | ElevenlabsOptions | RimeOptions | InworldOptions]rK   r   r   r   r!   r   r"   )r#   s   "r$   r%   r   :  s     i< i<i< 	i<
 "i< *i< %i< "i< !i< $i< 3i<
i<( J)i<* 4+i<, 
-i<r&   c                 < \        V4      '       d   TM\        p\        V\        4      '       d'   \	        V4      w  rTpVe   \        V4      '       g   Tp\        V
4      '       d   \        V
4      M/ p\        SV `  \        P                  ! R\        W4      R7      V^R7       \        V4      '       d   TM	\        4       p\        V4      '       d   TM+\        P                  ! R\        P                  ! RR4      4      pV'       g   \        R4      h\        V4      '       d   TM+\        P                  ! R	\        P                  ! R
R4      4      pV'       g   \        R4      h\        p\        V4      '       d   \!        V4      p\#        TT\        V\        4      '       d   \%        V4      MT\        V4      '       d   TM\&        TTTTTT\        V4      '       d   TM\(        R7      V n        Wn        \.        P0                  \2        P4                  ,          ! V P6                  V P8                  RRR7      V n        \<        P>                  \@        ,          ! 4       V n!        R# )a  Livekit Cloud Inference TTS

Args:
    model (TTSModels | str): TTS model to use, in "provider/model[:voice]" format
    voice (str, optional): Voice to use, use a default one if not provided
    language (str, optional): Language of the TTS model.
    encoding (TTSEncoding, optional): Encoding of the TTS model.
    sample_rate (int, optional): Sample rate of the TTS model.
    base_url (str, optional): LIVEKIT_URL, if not provided, read from environment variable.
    api_key (str, optional): LIVEKIT_API_KEY, if not provided, read from environment variable.
    api_secret (str, optional): LIVEKIT_API_SECRET, if not provided, read from environment variable.
    http_session (aiohttp.ClientSession, optional): HTTP session to use.
    extra_kwargs (dict, optional): Extra kwargs to pass to the TTS model.
    fallback (FallbackModelType, optional): Fallback models - either a list of model names,
        a list of FallbackModel instances.
    conn_options (APIConnectOptions, optional): Connection options for request attempts.
NT)	streamingaligned_transcript)capabilitiesr   num_channelsLIVEKIT_INFERENCE_API_KEYLIVEKIT_API_KEYrQ   zUapi_key is required, either as argument or set LIVEKIT_API_KEY environmental variableLIVEKIT_INFERENCE_API_SECRETLIVEKIT_API_SECRETz[api_secret is required, either as argument or set LIVEKIT_API_SECRET environmental variable)r   r+   r   r   r   r   r   r   r0   rK   r   i,  )
connect_cbclose_cbmax_session_durationmark_refreshed_on_get)"r   r   rS   r    r-   dictsuperr   r   TTSCapabilitiesrI   r   osgetenv
ValueErrorr   rY   r   r   r   r   _opts_sessionr   ConnectionPoolaiohttpClientWebSocketResponse_connect_ws	_close_ws_poolweakrefWeakSetSynthesizeStream_streams)r   r   r+   r   r   r   r   r   r   r   r0   rK   r   parsed_modelparsed_voiceresolved_extra_kwargslk_base_url
lk_api_keylk_api_secretfallback_models	__class__s   &&$$$$$$$$$$$       r$   r   r   :  s   P &.k%:%:k@S eS!!)<U)C&L E'$6>|6L6L\ 2RT,,#:5#X $ 	 	
 #+8"4"4h:S:U    6		BSUW8XY 	
 g  
## 9299EY[];^_ 	
 m  <EH1(;O /9(C/H/H\(+h!)(!3!3X9I# $.$)1,)?)?E`

 %))'*I*IJ''^^!$"&	

  (89;r&   c                    V ^8  d   QhRRRR/# )r   r   r    r!   r   r"   )r#   s   "r$   r%   r     s     
E 
Ec 
Ec 
Er&   c                T    \        V4      w  rT ! Y'       d   VR7      # \        R7      # )zCreate a TTS instance from a model string

Args:
    model (str): TTS model to use, in "provider/model[:voice_id]" format

Returns:
    TTS: TTS instance
rR   )r-   r   )clsr   r+   s   && r$   from_model_stringTTS.from_model_string  s'     +51ueDD)DDr&   c                   V ^8  d   QhRR/# r   r!   r    r"   )r#   s   "r$   r%   r     s        s  r&   c                	.    V P                   P                  # r   )r   r   r   s   &r$   r   	TTS.model  s    zzr&   c                   V ^8  d   QhRR/# r   r"   )r#   s   "r$   r%   r     s      # r&   c                	    R # )livekitr"   r   s   &r$   rH   TTS.provider  s    r&   c                    V ^8  d   QhRRRR/# )r   timeoutr^   r!   aiohttp.ClientWebSocketResponser"   )r#   s   "r$   r%   r     s     = = =3R =r&   c                	T  "   V P                  4       pV P                  P                  pVP                  R4      '       d   VP	                  RR^4      p/ \        4       CRR\        V P                  P                  V P                  P                  4       2/CpRp \        P                  ! VP                  V RV P                  P                   2VR7      V4      G Rj  xL
 pRRR\-        T P                  P.                  4      RT P                  P0                  RT P                  P2                  /pT P                  P4                  '       d   T P                  P4                  TR&   T P                  P                  '       d   T P                  P                  TR&   T P                  P6                  '       d   T P                  P6                  TR&   T P                  P8                  '       da   T P                  P8                   Uu. uF9  pRTP;                  R4      RTP;                  R4      RTP;                  R/ 4      /NK;  	  p	pRT	/TR&   T P                  P<                  '       dF   RT P                  P<                  P>                  RT P                  P<                  P@                  /TR&    TPC                  \D        PF                  ! T4      4      G Rj  xL
  T#  EL   \        P                   d(   p\        TP                   TP"                  R7      ThRp?i\        P$                   d   p\'        R	4      ThRp?i\        P(                   d   p\+        R
4      ThRp?ii ; iu upi  L  \H         d+   pTPK                  4       G Rj  xL 
  \+        R4      ThRp?ii ; i5i)http://httpwsAuthorizationzBearer Nz/tts?model=)headersstatusz+LiveKit Inference TTS connection timed out.z*failed to connect to LiveKit Inference TTStypezsession.creater   r   extrar+   r   r   r0   modelsrK   r   retries
connectionz>failed to send session.create message to LiveKit Inference TTS)r   zhttps://)&_ensure_sessionr   r   
startswithr   r   r   r   r   asynciowait_for
ws_connectr   r   ClientResponseErrorr   messager   TimeoutErrorr   ClientConnectorErrorr   r    r   r   r0   r+   r   rK   rG   r   r   	max_retrysend_strjsondumps	Exceptionclose)
r   r   sessionr   r   r   eparamsrX   r   s
   &&        r$   r   TTS._connect_ws  s    &&(::&&677''a8H
#%
w':4::;M;MtzzOdOd'e&fg
 
	Z''""hZ{4::;K;K:L#MW^"_ B $3tzz556

++TZZ,,	"
 ::"jj..F7O::"jj..F7O::!%!4!4F::: ,, -A	 QUU7^QUU7^QUU>26
 -   #+F!3F:::"""4::22::4::22<<$F< 
	++djj0111 	c ** 	P,QYYqxxHaO## 	X!"OPVWW++ 	Z$%QRXYY	Z"" 2 	((*$P	s   BN(AK" K K" $BN(4N(94N(.N(?M)$N(*AN(0(M0 M.M0 N(K" "M&7"LM&0M&1L==M&M&M!!M&&N(.M0 0N%;N NN  N%%N(c                    V ^8  d   QhRRRR/# r   r   r   r!   r   r"   )r#   s   "r$   r%   r     s      "A d r&   c                	B   "   VP                  4       G R j  xL
  R #  L5ir   )r	  )r   r   s   &&r$   r   TTS._close_ws  s     hhjs   c                   V ^8  d   QhRR/# )r   r!   zaiohttp.ClientSessionr"   )r#   s   "r$   r%   r     s      !6 r&   c                	    V P                   '       g$   \        P                  P                  4       V n         V P                   # r   )r   r   http_contextr   r   s   &r$   r   TTS._ensure_session  s+    }}}!..;;=DM}}r&   c                   V ^8  d   QhRR/# r   r!   r   r"   )r#   s   "r$   r%   r     s       r&   c                	:    V P                   P                  4        R # r   )r   prewarmr   s   &r$   r  TTS.prewarm  s    

r&   r   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   r+   r   r   zNotGivenOr[TTSModels | str]r   r0   r   r!   r   r"   )r#   s   "r$   r%   r     s>     
 
 
 +	

 "
 1
 

r&   c                  \        V4      '       d   W P                  n        \        V4      '       d   WP                  n        \        V4      '       d   \	        V4      V P                  n        \        V4      '       d&   V P                  P                  P                  V4       \        V P                  P                  V P                  P                  4      V P                  n
        R# )z
Args:
    voice (str, optional): Voice.
    model (TTSModels | str, optional): TTS model to use.
    language (str, optional): Language code for the TTS model.
    extra_kwargs (dict, optional): Extra kwargs to pass to the TTS model.
N)r   r   r   r+   r   r   r0   updaterI   _capabilitiesr   )r   r+   r   r   r0   s   &$$$$r$   update_optionsTTS.update_options  s     E??$JJE??$JJH".x"8DJJL!!JJ##**<80GJJdjj551
-r&   c               $    V ^8  d   QhRRRRRR/# )r   textr    r   r   r!   ztts.ChunkedStreamr"   )r#   s   "r$   r%   r   !  s)     M MM*;M	Mr&   c               	&    V P                  WR 7      # ))r   )_synthesize_with_stream)r   r"  r   s   &&$r$   
synthesizeTTS.synthesize!  s     ++D+LLr&   c                    V ^8  d   QhRRRR/# )r   r   r   r!   r   r"   )r#   s   "r$   r%   r   &  s      0	r&   c               	T    \        WR 7      pV P                  P                  V4       V# )r   r   )r   r   add)r   r   streams   &$ r$   r+  
TTS.stream&  s%     "dF&!r&   c                   V ^8  d   QhRR/# r  r"   )r#   s   "r$   r%   r   -  s     " "d "r&   c                	   "   \        V P                  4       F  pVP                  4       G R j  xL
  K  	  V P                  P                  4        V P                  P                  4       G R j  xL
  R #  LF L5ir   )rW   r   acloseclearr   )r   r+  s   & r$   r/  
TTS.aclose-  sY     4==)F--/!! * 	jj!!! " 	"s!   ,A9A5?A9.A7/A97A9)r   r   r   r   )r2   r3   r4   r5   r	   r   r   classmethodr   propertyr   rH   r   r   r   r  r  r   r%  r+  r/  r8   __classcell__r   s   @r$   r   r      sO    "+	
 %. -6 (1 %. $- '0 6: 5> MV 7@ $  "+	
 %. -6 (1 %. $- '0 6: 5> MV 7@ $  "+	
 %. -6 (1 %. $- '0 6: 7@ MV 7@ $  "+	
 %. -6 (1 %. $- '0 6: 1: MV 7@ $  "+	
 %. -6 (1 %. $- '0 6: 4= MV 7@ $  "+	
 %. -6 (1 %. $- '0 6: 4= MV 7@ $i< "+	i<
 %.i< -6i< (1i< %.i< $-i< '0i< 6:i<& 'i<( MV)i<* 7@+i< i<V 
E 
E      =~
 "+
 .7	

 %.
 4=
8M>YM
3N" "r&   r   c                  >   a  ] tR tRtRtR V 3R lltR R ltRtV ;t# )r   i5  zStreamed API using websocketsc                    V ^8  d   QhRRRR/# )r   r   r   r   r   r"   )r#   s   "r$   r%   SynthesizeStream.__annotate__8  s     ( (s (2C (r&   c               	h   < \         SV `  WR 7       Wn        \        VP                  4      V n        R# )r)  N)r   r   _ttsr   r   )r   r   r   r   s   &$$r$   r   SynthesizeStream.__init__8  s(    S<	SYY'
r&   c                    V ^8  d   QhRRRR/# )r   output_emitterztts.AudioEmitterr!   r   r"   )r#   s   "r$   r%   r8  >  s     D. D.)9 D.d D.r&   c           	     	  a aaa	a
"   \         P                  ! 4       o	SP                  S	S P                  P                  ^RRR7       \
        P                  P                  4       P                  4       o
\        P                  ! 4       oR V V
3R llpR VV V
3R llpR VVV	V 3R	 llp S P                  P                  P                  S P                  P                  R
7      ;_uu_4       GRj  xL
 pS P                  P                  P                   S n        S P                  P                  P$                  S n        \        P(                  ! V! 4       4      \        P(                  ! V! V4      4      \        P(                  ! V! V4      4      .p \        P*                  ! V!  G Rj  xL
  SP-                  4        S
P/                  4       G Rj  xL
  \         P0                  P2                  ! V!  G Rj  xL
  RRR4      GRj  xL
  R#  EL Lg LA L  SP-                  4        S
P/                  4       G Rj  xL 
  \         P0                  P2                  ! T!  G Rj  xL 
  i ; i Ld  + GRj  xL 
 '       g   i     R# ; i  \        P4                   d    \7        4       Rh\8        P:                   d(   p\=        TP>                  TP@                  R7      RhRp?i\B         d    h \D         d   p\G        4       ThRp?ii ; i5i)   Tz	audio/pcm)
request_idr   r   r+  	mime_typec                   V ^8  d   QhRR/# r  r"   )r#   s   "r$   r%   +SynthesizeStream._run.<locals>.__annotate__K  s     	. 	.4 	.r&   c                    <"   SP                     R j  xL
  p \        V SP                  4      '       d   SP                  4        K8  SP	                  V 4       KK   LFDGSP                  4        R # 5ir   )	_input_chrS   _FlushSentinelflush	push_text	end_input)datar   sent_tokenizer_streams    r$   _input_task*SynthesizeStream._run.<locals>._input_taskK  s^     "nn 6 6ddD$7$788)//1%//5	6n "++-s&   A0AAAAA0AA0c                    V ^8  d   QhRRRR/# r  r"   )r#   s   "r$   r%   rC  T  s     	# 	#,K 	#PT 	#r&   c                l  <"   / pR VR&   S  Rj  xL
  pVP                  4       pVP                  R,           VR&   / pSP                  P                  '       d   SP                  P                  VR&   SP                  P                  '       d   SP                  P                  VR&   SP                  P
                  '       d   SP                  P
                  VR&   WCR&   SP                  P                  '       d   SP                  P                  M/ VR	&   SP                  4        V P                  \        P                  ! V4      4      G Rj  xL
  SP                  4        EK\   ELX LED\RR
/pT P                  \        P                  ! T4      4      G Rj  xL 
  SP                  4        R# 5i)input_transcriptr   N 
transcriptr+   r   r   generation_configr   zsession.flush)copytokenr   r+   r   r   r0   _mark_startedr  r  r  set)	r   base_pktev	token_pktrS  end_pktinput_sent_eventr   rK  s	   &     r$   _sentence_stream_task4SynthesizeStream._run.<locals>._sentence_stream_taskT  s^    ')H1HV1 ' 'b$MMO	*,((S.	,'46!::###151A1A%g.::###151A1A%g.::&&&48JJ4G4G%j11B-.@D

@W@W@WTZZ%<%<]_	'"""$kk$**Y"7888 $$&' 9 2" G ++djj1222  "sQ   
F4E.E)E.A:F44F4BF4E,F4)E.,F4..F4FF4c                    V ^8  d   QhRRRR/# r  r"   )r#   s   "r$   r%   rC  n  s     7	X 7	X!@ 7	XT 7	Xr&   c           	       <"   R pSP                  4       G R j  xL
   V P                  SP                  P                  R7      G R j  xL
 pVP                  \
        P                  P                  \
        P                  P                  \
        P                  P                  39   d   \        RSR7      hVP                  \
        P                  P                  8w  d$   \        P                  ! RVP                  4       K  \        P                  ! VP                   4      pVP#                  R4      pVf   Ve   TpSP%                  VR7       VP#                  R4      R8X  d   EKJ  VP#                  R4      R	8X  d2   \&        P(                  ! VR
,          4      pSP+                  V4       EK  VP#                  R4      R8X  d   ^RIHp VP#                  R4      ;p'       d<   V F2  pSP1                  V! VR,          VR,          VR,          R7      4       K4  	  EK  VP#                  R4      ;p	'       d<   V	 F2  p
SP1                  V! V
R,          V
R,          V
R,          R7      4       K4  	  EKU  EKX  VP#                  R4      R8X  d   SP3                  4        R # VP#                  R4      R8X  g   EK  \5        RVP                    24      h EL EL5i)Nr   z&Gateway connection closed unexpectedly)r@  z"unexpected Gateway message type %s
session_id)
segment_idr   zsession.createdoutput_audioaudiooutput_alignment)TimedStringwordswordstartend)
start_timeend_timecharschardoneerrorz&LiveKit Inference TTS returned error: )waitreceive_conn_optionsr   r   r   	WSMsgTypeCLOSEDCLOSECLOSINGr   TEXTr   warningr  loadsrJ  rG   start_segmentbase64	b64decodepushvoice.iorg  push_timed_transcriptrI  r   )r   current_session_idmsgrJ  rb  b64datarg  rh  	word_inforn  	char_infor\  r=  r@  r   s   &          r$   
_recv_task)SynthesizeStream._run.<locals>._recv_taskn  sV    -1"'')))JJt/A/A/I/IJJJ88%%,,%%++%%--  
 )@Z  88w00555NN#GR'+zz#((';!XXl3
%-*2H)3&"00J0G88F#'88XXf%7$..tG}=G"''0XXf%);;6 $ 11u1).I*@@ +$-f$5/8/A-6u-=!" */ #'((7"333).I*@@ +$-f$5/8/A-6u-=!" */ 4 XXf%/",,.XXf%0"%KCHH:#VWWk * Ks6   KK.KK	FK$AK8A9K7KKra  Nr   )$r   	shortuuid
initializer   r   r   basicSentenceTokenizerr+  r   Eventr:  r   r   rt  r   last_acquire_time_acquire_timelast_connection_reused_connection_reusedcreate_taskgatherrW  r/  aiogracefully_cancelr  r   r   r   r   r  r   r   r  r   )r   r=  rL  r]  r  r   tasksr  r\  r@  rK  s   ff      @@@r$   _runSynthesizeStream._run>  s;    __&
!!!

..! 	" 	
 !) @ @ B I I K"==?	. 	.	# 	#47	X 7	Xr	.yy11$:L:L:T:T1UUUY[%)YY__%F%F"*.))//*P*P'''6''(=b(AB''
27>!..%000$((*/66888))55u=== VUU 1 9= %((*/66888))55u=== VUUU  ## 	.!#-** 	S,QYYqxxHdR 	 	.$&A-	.s
  B"L*AJ 0H1J 4BI.H)H*H.#I.H%I.7H8I.<J I,J LJ HI.I.$I);H><&I)"I%#I))I.,J .J	4I75
J	 J	J LJ 2L
>L
?"K!!L
.
L
9L
:LL

L)r  r  r   r:  )	r2   r3   r4   r5   r6   r   r  r8   r4  r5  s   @r$   r   r   5  s    '( (D. D.r&   r   )r>   zcartesia/sonic-3zcartesia/sonic-2zcartesia/sonic-turbozcartesia/sonic)deepgramzdeepgram/aurazdeepgram/aura-2)r@   zelevenlabs/eleven_flash_v2zelevenlabs/eleven_flash_v2_5zelevenlabs/eleven_turbo_v2zelevenlabs/eleven_turbo_v2_5z!elevenlabs/eleven_multilingual_v2)rimezrime/arcanazrime/mistv2)rB   zinworld/inworld-tts-2zinworld/inworld-tts-1.5-maxzinworld/inworld-tts-1.5-minizinworld/inworld-tts-1-maxzinworld/inworld-tts-1)C__conditional_annotations__
__future__r   r   r}  r  r   r   dataclassesr   r   typingr   r   r   r	   r   typing_extensionsr
   rQ   r   r   r   _exceptionsr   r   r   r   r   r   r   logr   typesr   r   r   r   r   _utilsr   r   r   r   r   r   r   r   	TTSModelsr-   r/   r    rN   rI   rY   r[   rh   rk   ry   r   r   r   r7   r   r   r   r   )r  s   @r$   <module>r     s   " "    	  * 4 4  ) # #  $  Y Y  Y Y 
 )  

  ^+.>>Km[	-I -& "C' &$iu $iu 	 "	 )5 	 [Ye [ k" + + +  S   0 0 0k"#'' k"\M.s++ M.r&   