a Xc@s6ddlZddlmZmZddlZddlZddlZejdddl m Z ddl m Z ddl mZddlmZddlmZdd lmZdd lmZGd d d Zed kr2e ZejddddejddddejddddejdedddejddddeZejr$ej s$de_!nde_!e"edS) N)gmtimestrftimeM/apdcephfs_cq2/share_1290939/wenxuazhang/code/2Dtalker/repositories/sadtalker)ArgumentParser)CropAndExtract) Audio2Coeff)AnimateFromCoeff)get_data)get_facerender_data) text2speechc@seZdZddZddZdS) SadTalkercCs0dtjd<tjrd}nd}tjd}tj|d}d}tj |dd}tj |dd }tj |dd }tj |dd }tj |d d } tj |dd} tj |d d} tj |dd} tj |dd} tj |d d}t |t |||||_ t |t || | | ||_t | t| | |||_||_dS)Nz2/apdcephfs_cq2/share_1290939/shadowcun/pretrained/Z TORCH_HOMEcudacpurrZ checkpointsz%shape_predictor_68_face_landmarks.datz epoch_20.pthZ BFM_Fittingzauido2pose_00140-model.pthconfigzauido2pose.yamlzauido2exp_00300-model.pthzauido2exp.yamlzfacevid2vid_00189-model.pth.tarzmapping_00239-model.pth.tarzfacerender.yaml)osenvirontorchr is_availablesysargvpathsplitjoinprintrpreprocess_modelraudio_to_coeffranimate_from_coeffdevice)selfrcurrent_code_pathZ modules_pathcurrent_root_pathZpath_of_lm_croperZpath_of_net_recon_modelZdir_of_BFM_fittingZaudio2pose_checkpointZaudio2pose_yaml_pathZaudio2exp_checkpointZaudio2exp_yaml_pathZfree_view_checkpointZmapping_checkpointZfacerender_yaml_pathr!P/apdcephfs_cq2/share_1290939/wenxuazhang/code/2Dtalker/modules/sadtalker_test.py__init__s8   zSadTalker.__init__cCsntd}tj||}tj|ddtj|d}tj|ddt|tj|tj|}t||tj |rtj|tj|}t||nt tj|ddd} tj|d} tj| dd|j || \} } | durt dt| ||j} |j | || }d}t|| | ||}|j |||d }td |d |tj||d tj||d fS) Nz%Y_%m_%d_%H.%M.%ST)exist_okinputrfirst_frame_dirzNo face is detected video_namezThe generated video is named z in z.mp4)rrrrmakedirsrbasenameshutilmoveisfiler rgenerateAttributeErrorr rrr r)r source_image driven_audio result_dirZtime_tagsave_dirZ input_dirZpic_path audio_pathZ pose_styler&Zfirst_coeff_pathZ crop_pic_pathbatchZ coeff_path batch_sizedatar(r!r!r"test9s6  zSadTalker.testN)__name__ __module__ __qualname__r#r8r!r!r!r"r s)r __main__z--driven_audiozQ/apdcephfs_cq2/share_1290939/wenxuazhang/code/evaluation/in_the_wild/wav/deyu.wavzpath to driven audio)defaulthelpz--source_imagezX/apdcephfs_cq2/share_1290939/wenxuazhang/code/evaluation/in_the_wild/origin_pic/art2.pngzpath to source imagez --result_dirzA/apdcephfs/share_1290939/wenxuazhang/opensource/sadtalker/resultszpath to outputz --pose_stylezinput pose style from [0, 46))typer=r>z--cpur store_true)destactionr )#rtimerrrrr+rappendargparserZ!repositories.sadtalker.preprocessrZ'repositories.sadtalker.test_audio2coeffrZ)repositories.sadtalker.facerender.animaterZ%repositories.sadtalker.generate_batchr Z0repositories.sadtalker.generate_facerender_batchr modules.text2speechr r r9parser add_argumentint parse_argsargsr rrrmainr!r!r!r"s.        S