o
    wi>                     @   sJ   d dl Z d dlZd dlZd dlmZ d dlmZmZmZ G dd dZ	dS )    NIpaG2p)GRAPHEME_CASE_LOWERGRAPHEME_CASE_MIXEDGRAPHEME_CASE_UPPERc                   @   sp  e Zd ZejejejedZ	eje	dZ
eje	dZeje	dZdZeeddd d	ded
fddZejdejjdd Zejdejjdd Zejdejjdd Zejdejjdd Zejdejjdd Zejdejjdd Zejdejjdd Zejdejjdd Zejdejjdd Zejdejjd d! Zejdejjd"d# Zejdejjd$d% Z ejdejjd&d' Z!ejdejjd(d) Z"ejdejjd*d+ Z#ejdejjd,d- Z$ejdejjd.d/ Z%ejdejjd0d1 Z&dS )2
TestIpaG2pphoneme_dictztest_dict_de.txtztest_dict_en.txtztest_dict_es.txt#Nc                 C   s   | S )N xr
   r
   c/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/tests/collections/tts/g2p/test_modules.py<lambda>$       zTestIpaG2p.<lambda>F c              	   C   s   t | ||||||dS )N)localeapply_to_oov_word	use_charsphoneme_probabilitygrapheme_casegrapheme_prefixr   )r   r   r   r   r   r   r   r
   r
   r   _create_g2p    s   
zTestIpaG2p._create_g2pCPUc                 C   sF  h d}|   }||jksJ t|jd dksJ t|jd dks%J t|jd dks0J t|jd dks;J t|jd dksFJ t|jd	 dksQJ |jd d
 tdks^J |jd d
 tdkskJ |jd tdtdgkszJ |jd d
 tdksJ |jd d
 tdksJ |jd	 d
 tdksJ d S )N   dhilnoptvwz   ɔ   ə   ɛ   ɝ   ɪ   ɫ   ɹ   ʊ   ʒ   ˈ   ˌHELLO   WORLDLEAD   NVIDIAJONESAIRPORTr   
   həˈɫoʊ   ˈwɝɫd   ˈlɛd   ˈlid   ɛnˈvɪdiə
   ˈdʒoʊnz   ˈɛɹˌpɔɹt)r   symbolslenr   listselfexpected_symbolsg2pr
   r
   r   !test_normalize_dict_with_phonemes4   s   
z,TestIpaG2p.test_normalize_dict_with_phonemesc                    sb   fdddD  h d} jd jd}||jksJ t|jd dks(J t|jd	 dks3J t|jd
 dks>J t|jd dksIJ t|jd dksTJ t|jd dks_J |jd d tdkslJ |jd	 d tdksyJ |jd
 tdtdgksJ |jd d tdksJ |jd d tdksJ |jd d tdksJ d S )Nc                       h | ]	} j  | qS r
   GRAPHEME_PREFIX.0charrC   r
   r   	<setcomp>V       zMTestIpaG2p.test_normalize_dict_with_graphemes_and_phonemes.<locals>.<setcomp>>   ADEHIJLNOPRSTVWr   Tr   r   r0   r1   r2   r3   r4   r5   r6   r7   r   r8   r9   r:   r;   r<   r=   r>   )unionr   rI   r?   r@   r   rA   rB   r
   rM   r   /test_normalize_dict_with_graphemes_and_phonemesR   s*   

z:TestIpaG2p.test_normalize_dict_with_graphemes_and_phonemesc                    s   j d jd} fdddD h d}t|jd dks!J t|jd	 d
ks,J t|jd d
ks7J |j|dd t|jd d
ksIJ |jd d tdksVJ d	|jvs]J d|jvsdJ |jd d tdksqJ |jd d tdks~J |jd d tdksJ  j d jd}|j|dd d|jvsJ d	|jvsJ d|jvsJ |jd d tdksJ |jd d tdksJ |jd d tdksJ d S )NTr_   c                    rG   r
   rH   rJ   rM   r
   r   rN      rO   z2TestIpaG2p.test_replace_symbols.<locals>.<setcomp>>   rP   rQ   rR   rS   rT   rV   rW   rX   rY   rZ   r[   r\   r]   r^   >   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r3   r4   r6   r1   r5   )r?   keep_alternater   r:   r0   r8   r2   r9   r7   r>   F)r   rI   r`   r@   r   replace_symbolsrA   )rC   rE   fixed_symbolsr
   rM   r   test_replace_symbols}   s6   

zTestIpaG2p.test_replace_symbolsc                 C   s2   d}dd dD }|   }||}||ksJ d S )NHello world.c                 S      g | ]}|qS r
   r
   rJ   r
   r
   r   
<listcomp>       z0TestIpaG2p.test_forward_call.<locals>.<listcomp>   həˈɫoʊ ˈwɝɫd.r   rC   
input_textexpected_outputrE   phonemesr
   r
   r   test_forward_call   s
   zTestIpaG2p.test_forward_callc                 C   sj   d}dd dD }dgdgddgd	gd
}|   }| j |d}||}||}||ks-J ||ks3J d S )Nrf   c                 S   rg   r
   r
   rJ   r
   r
   r   rh      ri   zNTestIpaG2p.test_forward_call_with_file_or_object_dict_type.<locals>.<listcomp>rj   r8   r9   r:   r;   r<   )r0   r2   r3   r5   )r   rk   )rC   rm   rn   r   g2p_fileg2p_dictphonemes_filephonemes_dictr
   r
   r   /test_forward_call_with_file_or_object_dict_type   s   z:TestIpaG2p.test_forward_call_with_file_or_object_dict_typec                 C   s@   d}t ddg t d dg }|  }||}||ksJ d S )NHello Kitty!r8    KITTY!rA   r   rl   r
   r
   r   test_forward_call_with_oov_word   s
   z*TestIpaG2p.test_forward_call_with_oov_wordc                 C   sB   d}t ddg t d }| jdd d}||}||ksJ d S )Nrv   r8   rw   ztest!c                 S   s   dS )Ntestr
   r   r
   r
   r   r      r   z<TestIpaG2p.test_forward_call_with_oov_func.<locals>.<lambda>)r   rz   rl   r
   r
   r   test_forward_call_with_oov_func   s
   z*TestIpaG2p.test_forward_call_with_oov_funcc                    F   d} fdd|  D } jddt jd}||}||ks!J d S )Nrf   c                    "   g | ]}|d vr j | n|qS z .rH   rJ   rM   r
   r   rh         " zMTestIpaG2p.test_forward_call_with_uppercase_grapheme_only.<locals>.<listcomp>T        r   r   r   r   )upperr   r   rI   rl   r
   rM   r   .test_forward_call_with_uppercase_grapheme_only      z9TestIpaG2p.test_forward_call_with_uppercase_grapheme_onlyc                    r~   )Nrf   c                    r   r   rH   rJ   rM   r
   r   rh      r   zMTestIpaG2p.test_forward_call_with_lowercase_grapheme_only.<locals>.<listcomp>Tr   r   )lowerr   r   rI   rl   r
   rM   r   .test_forward_call_with_lowercase_grapheme_only   r   z9TestIpaG2p.test_forward_call_with_lowercase_grapheme_onlyc                    sB   d} fdd|D } j ddt jd}||}||ksJ d S )Nrf   c                    r   r   rH   rJ   rM   r
   r   rh   
  r   zNTestIpaG2p.test_forward_call_with_mixed_case_grapheme_only.<locals>.<listcomp>Tr   r   )r   r   rI   rl   r
   rM   r   /test_forward_call_with_mixed_case_grapheme_only  s   z:TestIpaG2p.test_forward_call_with_mixed_case_grapheme_onlyc                 C   4   d}g d}| j ddtd}||}||ksJ d S Nrf   )r   r&   r.   r*   r   r,   rw   r.   r#   r(   r*   r   .Tg      ?)r   r   r   )r   r   rl   r
   r
   r   >test_forward_call_with_uppercase_grapheme_and_get_phoneme_only  
   zITestIpaG2p.test_forward_call_with_uppercase_grapheme_and_get_phoneme_onlyc                 C   r   r   )r   r   rl   r
   r
   r   >test_forward_call_with_lowercase_grapheme_and_get_phoneme_only  r   zITestIpaG2p.test_forward_call_with_lowercase_grapheme_and_get_phoneme_onlyc                 C   r   r   )r   r   rl   r
   r
   r   ?test_forward_call_with_mixed_case_grapheme_and_get_phoneme_only)  r   zJTestIpaG2p.test_forward_call_with_mixed_case_grapheme_and_get_phoneme_onlyc              
   C   sR   d}ddddddd| j  d	| j  d
dg
}| j| j d}||}||ks'J d S )NzHello |wo rld|.r   r&   r.   r*   r   r,   rw   worldr   )r   )rI   r   rl   r
   r
   r   )test_forward_call_with_escaped_characters3  s   

z4TestIpaG2p.test_forward_call_with_escaped_charactersc                 C   s@   t jtdd | jdd W d    d S 1 sw   Y  d S )NzUnsupported locale)matchzen-USA)r   )pytestraises
ValueErrorr   rM   r
   r
   r   #test_instantiate_unsupported_localeH  s   "z.TestIpaG2p.test_instantiate_unsupported_localec                    s   dt dd }tddg td dg  fddt d	d
D  dg dg td } jd jdt jd d}||}||ksDJ d S )Nu   Hallo „welt“ Weg NFDu   Abendröte! wegu   hˈaloː „vˈɛlt“rw   u   vˈeːkc                       g | ]	} j  | qS r
   rH   rJ   rM   r
   r   rh   W      z6TestIpaG2p.test_forward_call_de_de.<locals>.<listcomp>NFCu   Abendrötery   u   vˈɛkTzde-DE)r   r   r   r   r   r   )unicodedata	normalizerA   r   PHONEME_DICT_PATH_DEr   rI   rl   r
   rM   r   test_forward_call_de_deN  s6   
	z"TestIpaG2p.test_forward_call_de_dec                    s   d} j dtd}dd dD } j dt jd d}dd d	D d
g  fdddD  dg } j dt jd d}dd d	D d
g  fdddD  dg }t|||g|||gD ]\}}	||}
|
|	ksiJ q[d S )Nz7Hello NVIDIA'S airport's Jones's airports worlds Kitty!zen-US)r   r   c                 S   rg   r
   r
   rJ   r
   r
   r   rh   n  ri   z6TestIpaG2p.test_forward_call_en_us.<locals>.<listcomp>uW   həˈɫoʊ ɛnˈvɪdiəz ˈɛɹˌpɔɹts ˈdʒoʊnzɪz ˈɛɹˌpɔɹts ˈwɝɫdz KITTY!)r   r   r   r   c                 S   rg   r
   r
   rJ   r
   r
   r   rh   w  ri   uP   həˈɫoʊ ɛnˈvɪdiəz ˈɛɹˌpɔɹts ˈdʒoʊnzɪz ˈɛɹˌpɔɹts ˈwɝɫdzrw   c                    r   r
   rH   rJ   rM   r
   r   rh   y  r   kittyry   c                 S   rg   r
   r
   rJ   r
   r
   r   rh     ri   c                    r   r
   rH   rJ   rM   r
   r   rh     r   )r   r   r   rI   r   zip)rC   rm   	g2p_upperexpected_output_upper	g2p_lowerexpected_output_lower	g2p_mixedexpected_output_mixedrE   rn   ro   r
   rM   r   test_forward_call_en_ush  sJ   z"TestIpaG2p.test_forward_call_en_usc                 C   s:   d}dd dD }| j | jdd}||}||ksJ d S )Nu   ¿Hola mundo, amigo?c                 S   rg   r
   r
   rJ   r
   r
   r   rh     ri   z6TestIpaG2p.test_forward_call_es_es.<locals>.<listcomp>u   ¿ˈola mˈundo, AMIGO?zes-ES)r   r   )r   PHONEME_DICT_PATH_ESrl   r
   r
   r   test_forward_call_es_es  s
   z"TestIpaG2p.test_forward_call_es_es)'__name__
__module____qualname__ospathjoindirnameabspath__file__PHONEME_DICT_DIRr   PHONEME_DICT_PATH_ENr   rI   staticmethodr   r   r   markrun_only_onunitrF   ra   re   rp   ru   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r      s    


)
;













&r   )
r   r   r   (nemo.collections.tts.g2p.models.i18n_ipar   nemo.collections.tts.g2p.utilsr   r   r   r   r
   r
   r
   r   <module>   s   