
    [;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dZd ZddZd Zd Zd Zd Zedk    r e             dS dS )    N)Pathzd/data/video-pipeline/Channel-Loi-Co-Nhan/project/13062026-044-Dung-Thay-Nguoi-Ta-Gap-Nan-Ma-Voi-Cuoiz-http://192.168.1.103:8001/transcribe-and-savez http://192.168.1.103:8001/healthzaudio/master_narration.wavzsubtitles/asr_word_timing.jsonz5subtitles/master_subtitles_asr_timing_script_text.srtz-subtitles/subtitle_asr_script_text_debug.jsonz'logs/asr_subtitle_rebuild_manifest.json   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   .   s    	U3sC==4'((	)	)B
gA'MB
eA%KB
d
A$JB***Q***A***2****r   c                  "   t          j        t          dz                      d                    } g }| d         D ]Rt	          j        dd                             dd                    }|                    fd	|D                        S|S )
Nzscript/scenes.jsonr   encodingscenesz\S+	narration
 c              3   ,   K   | ]}d          |fV  dS )scene_idN )r/   r0   scs     r   	<genexpr>z(script_words_by_scene.<locals>.<genexpr>?   s,      88Qbna(888888r   )r   r    PROJECT	read_textrefindallreplaceextend)r   itemsr*   rP   s      @r   script_words_by_scenerY   9   s    :w!55@@'@RRSSDE8n 9 9
62k?#:#:4#E#EFF8888%8888888Lr   c                  &
   t                                           st          dt                      t          j                            dd           t          j                            dd           t          t          d d          } t          t                     t          t                    dddd}t          d	t                      t          t          |d
          }t                                          s1t                              t          j        |dd          d           t          j        t                              d                    }t#          |          }t%                      }|st          d          t'          |          t'          |          dz  k     r/t          dt'          |           dt'          |                     g }d}t)          t'          |          t'          |                    }d}	||k     rt)          t*          ||z
            }
||z
  t*          dz   k    rd}
||||
z            }||||
z            }t-          |d         d                   }t-          |d         d                   }||k    r|dz   }|                    |	|d         d         ||d                    d |D                       d           ||
z  }|	dz  }	||k     g }|D ]}|                    t          |d                              |                    t3          |d                    dt3          |d                               |                    |d                     |                    d!           t4                              d"                    |          d           t6                              t          j        t'          |          t'          |          t'          |          t9          dt'          |                    z  |d#dd          d           t                              t          j        d$t          | t          t                     t          t                    t          t4                    t'          |          t'          |          t'          |          d%d&
dd          d           t          d't'          |           d(t'          |           d)t'          |                      d S )*Nzmissing master audio: T)parentsexist_ok   r   vi
transcribe)
input_pathoutput_pathlanguagetaskword_timestampsz	POST ASR r   F   )r   indentr   rG   zASR returned no word timestampsg      ?zASR word count too low: asr=z script=r         r+   r,   gffffff?rL   c              3       K   | ]	\  }}|V  
d S )NrO   )r/   _r0   s      r   rQ   zmain.<locals>.<genexpr>s   s&      8841aQ888888r   )idxrN   r+   r,   textrl   z --> rm    rK   )	asr_wordsscript_wordsratiocues	completedz_Subtitle timing rebuilt from real ASR word timestamps; display text comes from original script.)
statusendpointhealthinput_audio_path
asr_output
srt_outputro   rp   rr   notezDONE ASR subtitle cues=z asr_words=z script_words=)MASTER_AUDIOexists
SystemExit
ASR_OUTPUTparentmkdirMANIFESTr'   HEALTH_ENDPOINTstrr   ENDPOINT
write_textr   r   r    rS   r7   rY   lenminWORDS_PER_CUEfloatr2   joinrE   
SRT_OUTPUTDEBUG_OUTPUTr?   )rv   r$   responseasr_docro   rp   rr   rl   ncue_idxtake	group_asrgroup_scriptr+   r,   linescs                    r   mainr   C   s      B@,@@AAAD4888O$666 b999F,'': G H7D999H ddjaPPP[bcccj--w-??@@Gg&&I(**L <:;;;
9~~L))D000cIccPST`PaPaccdddD
CC	NNC--..AG
''=!c'**s7ma'''Dc#*n-	#Cd
N3il7+,,IbM%())%<<$,C$Q*HH88<88888
 
 	 	 	 	t1' ''* E  S5]]###7,,GG8AeH3E3EGGHHHQvYR$))E**W===DJ^^L))Y#a\):):";";;	( (
 !% % %
 07  8 8 8 
--*oo*oo^^L))D		q$ $ !% % % 07  8 8 8 i#d))iiIiiVYZfVgVgiijjjjjr   __main__)Nr   )r   rT   r   urllib.requestr   pathlibr   rR   r   r   r{   r~   r   r   r   r   r   r'   r7   rE   rY   r   __name__rO   r   r   <module>r      s    				           
$u
v
v:45577
NN
HH>>5 5 5	7 	7 	7 	7  + + +  Nk Nk Nkb zDFFFFF r   