o
    
i$                  	   @   s  U d dl Z d dlmZmZmZmZmZ d dlmZ d dl	m
Z
mZmZmZ i ddgddgd	d
gddgddgddgdddgddgddgddgddgddgddgd d!gd"d#d$gd%d&gd'd(gd)gd*gd+gd,gd-Zeeeeed.f  f ed/< e Zd0gd1gd2gd3gd4gd5Zeeeeed.f  f ed6< e Zd7gd8gd9d:gd;gd<Zeeeeed.f  f ed=< e Zi d>d?gd@dAgdBdCgdDdEgdFdGgdHdIgdJdKgdLdMgdNdOgdPdQgdRdSgdTdUgdVdWgdXdYgdZd[gd\d]gd^d_gi d`dagdbdcgdddegdfdggdhdigdjdkgdldmgdndogdpdqgdrdsgdtdugdvdwgdxdygdzdygd{d|gd}d~gddgddgiZeeeeed.f  f ed< e ZdPddgiZeeeeed.f  f ed< dPddgiZeeeeed.f  f ed< ddddddZdedefddZdedee fddZdedee fddZdedee fddZ dedee fddZ!deeed.f  dedeeed.f ddf fddZ"dedeeed.f  fddZ#dS )    N)Dict	GeneratorListOptionalTuple)
OrderedSet)	to_finalsto_initials	to_normalto_tone3b)pc)u   ʦʰch)u   ꭧʰd)tf)r   g)kh)x)r   j)u   ʨr   )u   kʰl)r   m)r   n)r   r   )u   pʰq)u   ʨʰr)u   ɻ)u   ʐs)r   sh)u   ʂ)u   tʰ)u   ɕ)u   ʦ)u   ꭧ)r   r   zzh.INITIAL_MAPPING)r   m0)r      ŋ0)r"   )n0)r#   )hmhngr   r   ngSYLLABIC_CONSONANT_MAPPINGS)r      ɔ0)   ɛ0)u   ɚ0)u   aɚ̯0)r)   )io   êeroINTERJECTION_MAPPINGSa)a0ai)   ai̯0an)r1   r   ang)r1      ŋao)   au̯0e)u   ɤ0ei)   ei̯0en)   ə0r   eng)r=   r6   i)i0ia)r   r1   ian)r   r*   r   iang)r   r1   r6   iao)r   r8   ie)r   e0in)r@   r   iou)r      ou̯0ing)r@   r6   iong)r      ʊ0r6   ong)rL   r6   ou)rI   u)u0uei)wr;   ua)rR   r1   uai)rR   r3   uan)rR   r1   r   uen)rR   r=   r   uang)rR   r1   r6   ueng)rR   r=   r6   uo)rR   o0r.      ü)y0u   üe)   ɥrF   u   üan)r]   r*   r   u   ün)r\   r   FINAL_MAPPING)u   ɻ̩0)u   ʐ̩0FINAL_MAPPING_AFTER_ZH_CH_SH_R)u   ɹ̩0)u   z̩0FINAL_MAPPING_AFTER_Z_C_Su   ˥u   ˧˥u   ˧˩˧u   ˥˩ )               pinyinreturnc              
   C   s~   t | ddd}t|dkrtd|d }zt|}W n ty0 } z	td| d|d }~ww |tvr=td| d|S )NT)neutral_tone_with_fivev_to_ur   z.Parameter 'pinyin': Tone couldn't be detected!zParameter 'pinyin': Tone '' couldn't be detected!)r   len
ValueErrorintTONE_MAPPING)rg   pinyin_tone3tone_nr_strtone_nrerror ru   H/home/ubuntu/.local/lib/python3.10/site-packages/misaki/transcription.pyget_tone   s   rw   normal_pinyinc                 C      | t v r| S d S N)SYLLABIC_CONSONANTSrx   ru   ru   rv   get_syllabic_consonant      r}   c                 C   ry   rz   )INTERJECTIONSr|   ru   ru   rv   get_interjection   r~   r   c                 C   sL   | t v rd S | tv rd S t| dd}|dkrd S |tvr$td| d|S )NT)strictra   z$Parameter 'normal_pinyin': Initial 'rl   )r{   r   r	   r!   rn   )rx   pinyin_initialru   ru   rv   get_initials   s   
r   c                 C   sR   | t v rd S | tv rd S t| ddd}|dkrtd|tvr'td| d|S )NT)r   rj   ra   z6Parameter 'normal_pinyin': Final couldn't be detected!z"Parameter 'normal_pinyin': Final 'rl   )r{   r   r   rn   r^   )rx   pinyin_finalru   ru   rv   
get_finals   s   r   variantstonec                 #   s&    t |   fdd| D E d H  d S )Nc                 3   s&    | ]}t  fd d|D V  qdS )c                 3   s    | ]	}| d  V  qdS )0N)replace).0phonemetone_iparu   rv   	<genexpr>   s    z'apply_tone.<locals>.<genexpr>.<genexpr>N)tuple)r   variantr   ru   rv   r      s
    
zapply_tone.<locals>.<genexpr>)rp   )r   r   ru   r   rv   
apply_tone   s
   
r   c                 C   s  t | }t| }t|}|d urt| }tt||}|S t|}|d ur2t| }tt||}|S g }	t|}
t	|}|d usBJ |
d urOt
|
 }|	| |
dv r\|tv r\t| }n|
dv ri|tv rit| }nt| }tt||}|	| t|	dksJ tdd tj|	 D }|S )N>   r   r   r   r    >   r   r   r   rb   c                 s   s     | ]}t tj|V  qd S rz   )r   	itertoolschainfrom_iterable)r   combinationru   ru   rv   r     s
    
z pinyin_to_ipa.<locals>.<genexpr>)rw   r
   r   r/   r   r   r}   r(   r   r   r!   appendr_   r`   r^   listrm   r   product)rg   rs   pinyin_normalinterjectioninterjection_ipa_mappinginterjection_ipasyllabic_consonantsyllabic_consonant_ipa_mappingsyllabic_consonant_ipapartsr   r   initial_phonemesfinal_phonemesall_syllable_combinationsru   ru   rv   pinyin_to_ipa   s>   



r   )$r   typingr   r   r   r   r   ordered_setr   pypinyin.contrib.tone_convertr   r	   r
   r   r!   str__annotations__keysINITIALSr(   r{   r/   r   r^   FINALSr_   r`   rp   ro   rw   r}   r   r   r   r   r   ru   ru   ru   rv   <module>   s&  
	
$""		
 "%*+,-"0 	 	4"