
    _bj                        d Z ddlmZ ddlmZ ddlmZ  ed           G d d                      Z ed           G d	 d
                      ZddZ	ddZ
ddZdS )z<Side-effect-free TTS provider planning for TrueTrace videos.    )annotations)	dataclass)ValidationResultT)frozenc                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
Zded<   d
Zded<   dZded<   dZded<   dS )TTSProviderPlanstrprovidervoicelanguageroleboolrequires_local_gpublocks_video_gpurequires_api_key default_for_phasenotes tuple[str, ...]side_effectsexternal_callsN)__name__
__module____qualname____annotations__r   r   r   r   r       S/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/audio/tts_plan.pyr   r   
   s         MMMJJJMMMIIIEOOOO$&L&&&&&(N((((((r   r   c                  @    e Zd ZU ded<   ded<   dZded<   dZded<   d	S )
TTSABTestPlanztuple[TTSProviderPlan, ...]
candidatesr	   recommended_default_providerr   r   r   r   N)r   r   r   r   r   r   r   r   r   r    r       sL         ++++%%%%$&L&&&&&(N((((((r   r    returnc                     t          ddddddddd	  	        } t          |           }|j        s't          d	                    |j                            | S )
zQReturn the phase-1 baseline voice plan: English EdgeTTS, no local GPU contention.edge_ttszen-GB-RyanNeuralenvoice_generationFphase_1zTBaseline voice for first TrueTrace finals; keeps local GPU reserved for image/video.	r
   r   r   r   r   r   r   r   r   ; )r   validate_tts_provider_planis_valid
ValueErrorjoinerrors)plan
validations     r    build_default_truetrace_tts_planr2   !   so       #d
 
 
D ,D11J 7:#455666Kr   c                 B   t                      t          ddddddddd		  	        t          d
dddddddd		  	        f} g }| D ])}|                    t          |          j                   *|r"t          d                    |                    t          | d          S )zHPlan a later voice comparison without making API calls or consuming GPU.nvidia_magpie_tts_multilingualdefault_multilingualr&   r'   FTab_testzXHosted NVIDIA Build/API Catalog candidate; test quality/latency/terms before defaulting.r)   whisper_alignmentzn/aalignment_qaqa_laterzNWhisper is speech-to-text for subtitle alignment and QA, not voice generation.r*   r%   )r!   r"   )r2   r   extendr+   r/   r-   r.   r    )r!   r/   	candidates      r   build_tts_ab_test_planr<   5   s     	)**5(#$"!'l
	
 
	
 
	
 	($""(b
	
 
	
 
	
J2 F D D	0;;BCCCC ,6**+++JZXXXXr   r0   r   c                   g }| j                                         s|                    d           | j                                        s|                    d           | j        dk    r|                    d           | j        dvr|                    d           | j         dv r | j        dk    r|                    d	           | j        d
k    r| j        r|                    d           | j        r'| j        r | j        d
k    r|                    d           | j	        r|                    d           | j
        r|                    d           t          | t          |                    S )Nzprovider is requiredzvoice is requiredr&   z)TrueTrace final voice language must be en>   r8   r'   z-role must be voice_generation or alignment_qa>   whisperr7   r'   z!Whisper is STT/alignment, not TTSr(   z.phase-1 TTS must not block the local video GPUzIphase-1 local GPU TTS is not allowed while video generation needs the GPUz#TTS plan must not have side effectsz%TTS plan must not have external calls)r,   r/   )r
   stripappendr   r   r   r   r   r   r   r   r   tuple)r0   r/   s     r   r+   r+   Y   s   F=   .,---: +)***}ABBBy<<<EFFF}888TYJ\=\=\9:::**t/D*FGGG c4#8 cT=SW`=`=`abbb =;<<< ?=>>>ZfFFFFr   N)r#   r   )r#   r    )r0   r   r#   r   )__doc__
__future__r   dataclassesr   autoshorts.ideas.candidater   r   r    r2   r<   r+   r   r   r   <module>rF      s   B B " " " " " " ! ! ! ! ! ! 7 7 7 7 7 7 $) ) ) ) ) ) ) ) $) ) ) ) ) ) ) )   (!Y !Y !Y !YHG G G G G Gr   