o
    4ѹg1                     @   s  d dl Z d dlZd dlmZmZmZ defddZdeee ef fddZdeee ef fd	d
Z	d>dee dee dee fddZ
d>dee dee fddZdd ZddddddddZdddddd dd d!Zd"d"d"d"d"d"d#Zi d$d%d&dd'dd(dd)dd*dd+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5ddddd dd6ddddddd7Zh d8Zh d9Zd:d; Zd<d= ZdS )?    N)AnyListUnionchc                 C   s<   d|   kr
dksn d|   krdksn | dkrdS dS )Nu   一u   鿿09@TF )r   r	   r	   b/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/site-packages/funasr/utils/postprocess_utils.py	isChinese   s   4r   wordc                 C   s   g }| D ]%}| dd}| dd}| dd}| dd}| dd}|| qt|dkr2dS |D ]}t|du r? dS q4d	S )
N  </s><s><unk><OOV>r   FT)replaceappendlenr   r   
word_listsicurr   r	   r	   r
   isAllChinese   s   r   c                 C   s   g }| D ]%}| dd}| dd}| dd}| dd}| dd}|| qt|dkr2dS |D ]}| du rC|d	krC dS | d
u rRt|d
u rR dS q4d
S )Nr   r   r   r   r   r   r   F'T)r   r   r   isalphar   r   r	   r	   r
   
isAllAlpha!   s"   r   words
time_stampreturnc                 C   s  t | }g }g }g }d}g }g }d}	t|D ]}
|
|krqt | |
 dkr| |
 d r|
d |k r| |
d  dkr|
d |k rt | |
d  dkr| |
d  d r||
 |
d7 }
||
 	 |
d7 }
|
|k r| |
 dkr|
d7 }
|
|k rt | |
 dkr| |
 d r|  ||
 |
}nqqqfqt|D ]}
| |
 dkr||	 q||	 |	d7 }	qd}t|D ]}
|
|krq|
|v r3|d ur|||
  d }| |
  }|
d7 }
|
|k r|
|v r|| |
  7 }|
}q| |
 d r|| |
  7 }|
d7 }
|
|k s|| |d ur2||
 t |k r2|||
  d }|||g q|| |
  |d urh||
 t |k rh| |
 dkrh|||
  d }|||
  d }|||g |}q|d urr||fS |S )Nr      utf-8r      T)r   rangeencoder   r   popupper)r   r   Z
words_sizer   Z
abbr_beginZabbr_endZlast_numts_listsZts_numsZts_indexnumbeginZ	abbr_wordendr	   r	   r
   abbr_dispose8   s   "









	*
r-   c                 C   s  g }g }d}g }| D ]}d}t |tr|}n|d}|dv r q
|| q
t|rCt|D ]\}}||dd q.|d urB|}nt|rd}	t|D ]\}}|	rc|d urc|| d }
|| d }d}d|v r|dd}||7 }|d urd	}	|| d }qM||7 }|| |d d}|d urd}	|| d }||
|g |}
qMd	}d}	d
}
d
}t|D ]\}}|	r|d ur|| d }
|| d }d}t|r|du r|  || d	}|d urd}	||
|g |}
qd|v r|dd}||7 }d	}|d urd	}	|| d }qt|r:||7 }|| |d d}d}|d ur9d}	|| d }||
|g |}
q|| q|d urjt	||\}}g }|D ]}|dkr\|| qPd
| }|||fS t	|}g }|D ]}|dkr~|| qrd
| }||fS )Nr   r#   r   r   r   r   r   Tr   r"   z@@Fr!   )
isinstancestrdecoder   r   	enumerater   r   r'   r-   joinstrip)r   r   middle_listsr   	word_itemr)   r   r   r   Zts_flagr+   r,   Zalpha_blankreal_word_listssentencer	   r	   r
   sentence_postprocess   s   
















r9   c           	      C   sh  g }g }d}| D ]}d}t |tr|}n|d}|dv rq|| qt|D ]>\}}d}d|v rC|dkrCd}|dd}||7 }q(d|v rb|dkrb|| |d d}|dd}||7 }q(||7 }q(|d urp|| g }|D ]6}|dkr|dkr|dd}n |d	kr|d	d
}n|dkr|dd}n
|dkr|dd}|| qtd|}||fS )Nr   r#   r.   u   ▁r   r   r   Izi'mzI'mzi'vezI'vezi'llzI'll)r/   r0   r1   r   r2   r   r3   )	r   r5   r   r6   r   r   r   r7   r8   r	   r	   r
   "sentence_postprocess_sentencepiece   sR   









r;      😊   😔   😡r      😰   🤢   😮)	<|HAPPY|><|SAD|>	<|ANGRY|><|NEUTRAL|><|FEARFUL|><|DISGUSTED|><|SURPRISED|>   🎼   👏   😀   😭   🤧)<|BGM|>
<|Speech|><|Applause|><|Laughter|><|Cry|>
<|Sneeze|>
<|Breath|>	<|Cough|><|lang|>)<|zh|><|en|><|yue|><|ja|><|ko|><|nospeech|><|nospeech|><|Event_UNK|>   ❓rW   rX   rY   rZ   r[   r\   rB   rC   rD   rE   rN   rO   rP   rQ   rF   rG      😷)rH   rR   z<|EMO_UNKNOWN|>rS   rT   rU   z<|Sing|>z<|Speech_Noise|>z<|withitn|>z	<|woitn|>z<|GBG|>z<|Event_UNK|>>   r?   rA   r=   r@   r>   r<   >   rM   rI   r_   rJ   rL   rK   c                 C   s   i }t D ]}| |||< | |d} qd}tD ]}|| || kr$|}qtD ]}|| dkr5t| |  } q'| t|  } ttD ]}| d| |} | |d |} qA|  S )Nr   rE   r   r   )	
emoji_dictcountr   emo_dict
event_dictemo_setunion	event_setr4   )sZ	sptk_dictZsptkZemoeemojir	   r	   r
   format_str_v2{  s$   rj   c                 C   s  dd }dd }|  dd} tD ]}|  |d} qdd	 | dD }d
|d  }||}tdt|D ]M}t|| dkr?q4||| |krY||| d krY|| dd  ||< ||| }||| d krw||| ||krw|d d }|||   7 }q4| dd
}| S )Nc                 S      | d t v r
| d S d S )Nr!   )rd   rg   r	   r	   r
   get_emo     z/rich_transcription_postprocess.<locals>.get_emoc                 S   rk   )Nr   )rf   rl   r	   r	   r
   	get_event  rn   z1rich_transcription_postprocess.<locals>.get_eventr]   r^   rV   c                 S   s   g | ]	}t |d qS )r   )rj   r4   ).0Zs_ir	   r	   r
   
<listcomp>  s    z2rich_transcription_postprocess.<locals>.<listcomp>r   r   r"   r!   zThe.)r   	lang_dictsplitr%   r   r4   lstrip)rg   rm   ro   langZs_listZnew_sZcur_ent_eventr   r	   r	   r
   rich_transcription_postprocess  s&    $rv   )N)stringloggingtypingr   r   r   r0   r   r   r   r-   r9   r;   rb   rc   rr   r`   rd   rf   rj   rv   r	   r	   r	   r
   <module>   s   $Xn5		
 
