
    8jJ              	           d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
mZmZmZmZ dedeeeeedz  f                  fdZd	 Zed
k    r ej         e                       dS dS )a*  Regenerate specific (scenario_id, turn_index) pairs only.

Usage:
    python -m scripts.regenerate_turns         --turns scripts/_pron_turns.txt         --out_dir /dataset/AnimaSync-mic-fix/data/audio_preview_pron_fixed

Each line in --turns is "<scenario_id>:<turn_index>", e.g. "daily_157_p1:2".
    N)Path)DEFAULT_SOURCESload_scenarios)dominant_base_for_turnsEMOTION_TO_BASEFEMALE_BY_BASEMALE_BY_BASE	synth_allpathreturnc                    g }|                                                                  D ]}|                                }|                                r'|                                                    d          rRd|v r.|                    dd          \  }}|                                }n|                                d}}|                    d          \  }}|                    |t          |          |f           |S )zEach line is `<scenario_id>:<turn_index>` (output goes to --out_dir
    with default filename) OR `<scenario_id>:<turn_index>	<abs_dest_path>`
    to pin a specific destination (e.g. straight into a setNN/prefixed file).
    #	   N:)		read_text
splitlinesrstripstriplstrip
startswithsplitappendint)r   outlinespecdestsidtis          \/home/ubuntu/service/kemix-engine/package/face/animasync-face-v3/scripts/regenerate_turns.pyparse_turn_specr"      s    
 .0C  ++-- 
) 
){{}}zz|| 	t{{}}77<< 	4<<D!,,JD$::<<DDt$D**S//R

CR$'((((J    c                    K   t          j                    } |                     dt          dd           |                     ddt          t                     |                     dt          d	           |                     d
t
          d           |                     dddgd d           |                                 }t          |j                  }t          dt          |           d           t          |j                  }d |D             }g g g g f\  }}}}g g g }}
}	|j                            dd           t          |          D ]X\  }}}|                    |          }|t          d|            1|t          |d                   k    rt          d| d| d           a|d         |         }|d                                         st          d| d| d           |                    d          p|                    d           }d }|r t&          t)          |d                            }|j        r<t-          j        |d!         pd"d"          }|j        dk    rt.          nt&          |         }|r,t          |          }|j                            dd           n| d#| d$|d!          d%}|j        |z  }|                                r|                                 |                    |d                    |                    |d!                    |                    |                    d&                     |                    |           |	                    |r|nd            |
                    d            |                    |           Zt          d't          |           d(|j                    |sd S t9          ||d)|j        |||	|
|*	  	         d {V  t          d+           d S ),Nz--turnsTz-File with <scenario_id>:<turn_index> per line)typerequiredhelpz	--sources+)nargsr%   defaultz	--out_dir)r%   r&   z--concurrency   )r%   r*   z--voice_gendermalefemalezfForce all turns to a single-gender voice (picked per emotion's base from MALE_BY_BASE/FEMALE_BY_BASE).)choicesr*   r'   z[want] z specific turnsc                      i | ]}|d          |S )scenario_id ).0ss     r!   
<dictcomp>zmain.<locals>.<dictcomp>=   s    555aa555r#   )parentsexist_okz[miss] scenario not found: turnsz[miss] z: turn z out of rangetextz[skip] r   z has empty textlong_solo_emotionneutral_t_z.mp3vadz[plan] z turns to synthesize -> 
elevenlabs)backendconcurrencyemotionsvadsvoice_seedsvoice_pools	voice_idsz[done])argparseArgumentParseradd_argumentr   r   r   
parse_argsr"   r7   printlenr   sourcesout_dirmkdirsortedgetr   r   r   r   voice_genderr   r	   parentexistsunlinkr   r
   rB   )apargswanted	scenariosby_sidtextsrC   rD   	out_pathsrE   rF   rG   r   r    r   scenturnis_monologuescenario_voice_idbaseout_pathfnames                         r!   mainre   -   sp     		 	"	"BOOID4H  J J JOOKsOOOOOOKdTO:::OOO#qO999OO$vx.@$Q  R R R ==??DTZ((F	
0CKK
0
0
0111t|,,I559555F')2r2~$E8T9*,b"iKLtd333 $, $,Rzz#<555666T']####9C99999:::G}R F|!!## 	5C55"555666~~g..I#..2I2I  	W ./FtG}/U/U V 	<"&tI'C)YOOD151Bf1L1L&4d!< 	,DzzHO!!$!>>>>88b884	?888E|e+H ?? 	OOT&\"""Y(((DHHUOO$$$""",833D9994   *++++	
FCJJ
F
F
F
FGGG 
y$	 	 	 	 	 	 	 	 	 	 
(OOOOOr#   __main__)__doc__rH   asynciojsonpathlibr   scripts.compiler.generate_audior   r   scripts.compiler.ttsr   r   r   r	   r
   listtuplestrr   r"   re   __name__runr1   r#   r!   <module>rr      s             K K K K K K K K             $ 4c3d
.B(C#D    (I I IX zGK r#   