
    <j                         d dl Z d dlZd dlZd dlZd dlmZ  ed          ZdZdZ	edz  Z
edz  Zedz  Zed	z  Zed
z  Zedz  Zedz  ZdZdZd ZddZd Zd Zd Zd Zd Zedk    r e             dS dS )    N)Pathzg/data/video-pipeline/Channel-Loi-Co-Nhan/project/13062026-046-Nguoi-Biet-Nhan-Loi-Sai-Phuc-Khi-Chua-Canz-http://192.168.1.103:8001/transcribe-and-savez http://192.168.1.103:8001/healthzaudio/master_narration.wavz$audio/master_narration_timeline.jsonzsubtitles/asr_word_timing.jsonzsubtitles/asr_scene_wordsz5subtitles/master_subtitles_asr_timing_script_text.srtz-subtitles/subtitle_asr_script_text_debug.jsonz'logs/asr_subtitle_rebuild_manifest.json   g?c                 R    t          t          j        d          | z   d           d S )Nz%F %T T)flush)printtimestrftime)msgs    &scripts_run_asr_and_build_subtitles.pylogr      s*    	$-
!
!C
't444444       c                    |d n(t          j        |d                              d          }t          j                            | ||ddini |dnd          }t          j                            ||	          5 }t          j        |                                	                    d                    cd d d            S # 1 swxY w Y   d S )
NF)ensure_asciiutf-8zContent-Typezapplication/jsonPOSTGET)dataheadersmethodtimeout)
jsondumpsencodeurllibrequestRequesturlopenloadsreaddecode)urlpayloadr   r   reqresps         r   	post_jsonr'      s   ?44
7(O(O(O(V(VW^(_(_D
.
 
 8?8K!344QS ,vv%	 !  C 
		W		5	5 7z$))++,,W55667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   <9CC	Cc                 l   g }|                      dg           pg D ]\}|                     dg           pg D ]A}|                     d          *|                     d          |                    |           B]|s:t          |                      d          t                    rd | d         D             }|S )Nsegmentswordsstartendc                 f    g | ].}|                     d           |                     d          ,|/S )r+   Nr,   )get).0ws     r   
<listcomp>z!collect_words.<locals>.<listcomp>-   s7    dddqAEE'NN,F155QV<<KcKcKcKcr   )r.   append
isinstancelist)docr*   segr0   s       r   collect_wordsr7   &   s    Ewwz2&&,"    "%%+ 	  	 AuuW~~)aeeEll.FQ	   eZ 0 0$77 eddCLdddLr   c                     t          t          t          d|           dz                      }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dd|dd|dd|dS )	Ng        i  i6 i`  02:,03)introundmax)secmshmss        r   srt_timerE   1   s    	U3sC==4'((	)	)B
gA'MB
eA%KB
d
A$JB***Q***A***2****r   c                      t          j        t          dz                      d                    } d | d         D             S )Nzscript/scenes.jsonr   encodingc           
          i | ]G}|d          t          j        d|                    d          pd                    dd                    HS )scene_idz\S+	narration 
 )refindallr.   replace)r/   scs     r   
<dictcomp>z#script_by_scene.<locals>.<dictcomp>>   s\        	:
6BFF;,?,?,E2+N+NtUX+Y+YZZ  r   scenes)r   r    PROJECT	read_text)r   s    r   script_by_scenerW   <   sM    :w!55@@'@RRSSD x.   r   c                    |sg | dt          |          ddfS t          |          t          dt          |                    z  }|t          k     r6t          d|  dt          |           dt          |           d|d	          g }d}|t          |          k     rt	          t
          t          |          |z
            }t          |          |z
  t
          dz   k    rd
}d                    ||||z                      }	t	          t          |          dz
  t          |t          |          z  t          |          z                      }
t	          t          |          dz
  t          |
t          ||z   t          |          z  t          |          z            dz
                      }|t          ||
         d                   z   }|t          ||         d                   z   }||k    rt	          ||dz             }t	          ||          }|	                    | |||	d           ||z  }|t          |          k     || t          |          t          |          |dfS )Nr   g      ?)rJ   script_words	asr_wordsratio   zASR scene word count too low: z asr=z script=z ratio=z.3f   rN   r+   r,   gffffff?)rJ   r+   r,   text)
lenr?   MIN_WORD_RATIO
SystemExitminWORDS_PER_CUEjoinr>   floatr2   )rJ   rY   rZ   scene_start
speech_endr[   cuesidxtaker^   a0a1r+   r,   s                 r   build_scene_cuesrm   D   s    h!#i..cfgggg	NNSC$5$5666E~  G(  G  GY  G  Gadeqarar  G  G  |A  G  G  G  H  H  	HD
C
L!!
!
!=#l"3"3c"9::|s"ma&777DxxSt^455 Y!#U3Y+?#lBSBS+S%T%TUUY!#SUC$J#i..3PSVWcSdSd3d-e-ehi-i%j%jkkeIbM'$:;;;E)B-"6777%<<j%$,//C#z""E#tTTUUUt! L!!
!
!" hL8I8IX[\eXfXfqvwwwwr   c                  $	   t                                           st          dt                      t                                          st          dt                     t          j                            dd           t                              dd           t          j                            dd           t          t          d d          } t          j        t                              d                    d	         }t                      }g }g }d
}d
}|D ]}|d         }t          |d                   }	t          | dz  }
t!          |	          t!          |
          dddd}t#          d|            t          t$          |d          }|
                                s,|
                    t          j        |dd          d           t+          t          j        |
                    d                              }|                    |g           }t/          |||t1          |d                   t1          |                    d|d                                       \  }}|                    |           |                    |           |t7          |          z  }|t7          |          z  }g }t9          |d          D ]\  }}|                    t!          |                     |                    t;          |d                    dt;          |d                               |                    |d                    |                    d           t                              d                    |          d           t>                              t          j        d|||tA          d|          z  ||ddd          d           t                              t          j        d dt$          | t!          t                     t!          t                    t!          t                    ||t7          |          d!d"dd          d           t#          d#t7          |           d$| d%|            d S )&Nzmissing master audio: zmissing timeline: T)parentsexist_ok   r   r   rG   itemsr   rJ   
audio_pathz.jsonvi
transcribe)
input_pathoutput_pathlanguagetaskword_timestampszPOST ASR scene r   F   )r   indentr+   rg   r,   r\   z --> r^   rL   rM   scene_level_asr_timing)moderZ   rY   r[   scene_debugrh   	completedzSubtitle timing rebuilt from per-scene ASR word timestamps; display text comes from the matching scene script so ASR omissions cannot shift later scenes.)statusr~   endpointhealthinput_audio_pathscene_asr_dir
srt_outputrZ   rY   rh   notez#DONE ASR scene-level subtitle cues=z asr_words=z script_words=)!MASTER_AUDIOexistsra   TIMELINE
SRT_OUTPUTparentmkdirSCENE_ASR_DIRMANIFESTr'   HEALTH_ENDPOINTr   r    rV   rW   r   strr   ENDPOINT
write_textr   r7   r.   rm   re   extendr2   r_   	enumeraterE   rd   DEBUG_OUTPUTr?   )r   timelinescene_scriptsall_cuesr   	total_asrtotal_scriptitemrJ   rs   outr$   responserZ   rY   rh   dbglinesri   cs                       r   mainr   a   s      B@,@@AAA?? :8h88999D4888t444O$666b999Fz(,,g,>>??HH#%%MHKIL * *
#$|,--
0000j//s88 #
 
 	(h(()))Xw===zz|| 	aNN4:hU1MMMX_N```!$*S]]G]-L-L"M"MNN	$((266$$w-  $((<e5566
 
	c 	3S^^#	L)))EHa((  QSXX7,,GG8AeH3E3EGGHHHQvYR$))E**W===DJ($SL111"( ( !% % % 07  8 8 8 
(--]++*oo$H l$ $ !% % % 07  8 8 8 oc(mmoo	ooamoopppppr   __main__)Nr   )r   rO   r   urllib.requestr   pathlibr   rU   r   r   r   r   
ASR_OUTPUTr   r   r   r   rc   r`   r   r'   r7   rE   rW   rm   r   __name__ r   r   <module>r      sK    				           
$x
y
y:455;;77
55NN
HH>>5 5 5	7 	7 	7 	7  + + +  x x x:Jq Jq JqZ zDFFFFF r   