o
    ݈h                     @   st   d dl Z d dlm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 dd Zdd	 Z			dd
dZdS )    N)groupby)get_ctm_line)BLANK_TOKENSPACE_TOKEN)SegmentWordc              	   C   s   | j s| S |jdkr't| j}|j|j }W d   n1 s!w   Y  nd}td| |||} td| |||} td| ||||||} | S )zR
    Function to save CTM files for all the utterances in the incoming batch.
    r   Ntokenswordssegments)segments_and_tokensminimum_timestamp_durationsf	SoundFileaudio_filepathframes
sampleratemake_ctm)utt_objoutput_dir_rootctm_file_configmodel	log_probsoutput_timestep_durationfaudio_file_duration r   ]/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/tts/BhasaAnuvaad/utils/make_ctm_files.pymake_ctm_files   sB   
r   c                 C   s   t | | }t || }|||d d f }tj|dd }dd t|D }	g }
|	D ]}|t|jjkr?|
|jj|  q,d	|
}d|v rS|
dd}d|v sId|v ra|
dd	}d|v sW|
dd
}|S )N   )axisc                 S   s   g | ]\}}|qS r   r   ).0kgr   r   r   
<listcomp>T   s    z!get_pred_text.<locals>.<listcomp> u   ▁▁u   ▁___z<space>)roundtorchargmaxtolistr   len	tokenizervocabappendjoinreplace)start_timestampend_timestampr   r   r   start_log_probend_log_probcur_log_probscur_token_idscollapsed_token_ids
text_charstoken_idtextr   r   r   get_pred_textM   s&   
r;   c                 C   s&  t j|d| }t j|dd g }	|jD ]\}
t|
tu re|
}| dkr2t|j|j	||||_
|	| |jD ].}t|tu rX|}| dkrH|	| |jD ]}| dkrV|	| qKq5|}| dkrc|	| q5q|
}| dkrp|	| qtt j||j ddy}|	D ]n}|jd	k s|j	d	k s|j}|j}|j	}|jd	kr|j|| kr|| d
 }t||jd
  d}t||jd
  |}|tkr|js|dt}t|jd||| |d dd d }| dkr|d|j
 7 }|d7 }|| qW d    n1 sw   Y  t j||j d|j|  d< |S )NctmT)exist_okr
   r	   r   z.ctmwr      g         r   lex)sourcechannel
start_timedurationtokenconftype_of_tokenspeaker
_level_ctm_filepath)ospathr/   makedirsr   typer   r;   t_startt_end	pred_textr.   words_and_tokensr   r   openutt_idr:   r   maxminr   remove_blank_tokensr0   r   r   stripwritesaved_output_files)alignment_levelr   r   r   r   r   r   r   
output_dirboundary_info_uttsegment_or_tokensegmentword_or_tokenwordrF   f_ctmboundary_info_r:   rD   end_timetoken_mid_pointctm_liner   r   r   r   h   s   









	
3r   )NNN)rL   	itertoolsr   	soundfiler   r(   /nemo.collections.asr.parts.utils.manifest_utilsr   utils.constantsr   r   utils.data_prepr   r   r   r;   r   r   r   r   r   <module>   s   4!