
    Pi                        d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 d Zd Zd Zd	 Zej                             ej                     p ej        d
           d          d             Zd Zej                            dd          d             Zej                            dej        v d          d             Zej                            dej        v d          d             Zej                            dej        v d          d             Zej                             ej                     d          ej                            dg d          d                         Zej                             ej                     d          d             Zej                             ej                     d          d             ZdS )zTest of the espeak backend    N)EspeakBackend)EspeakWrapper)	Separatordefault_separatorc                  0   t          d          } d}t          j        t                    5 }|                     |t
          d           d d d            n# 1 swxY w Y   dt          |          v sJ |                     |gt
          d          dgk    sJ d S )Nen-ushello worldTz input text to phonemize() is str   həloʊ wɜːld)r   pytestraisesRuntimeError	phonemizer   str)backendtexterrs      d/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/test/test_espeak.pytest_bad_textr      s    G$$GD	|	$	$ 9$ 148889 9 9 9 9 9 9 9 9 9 9 9 9 9 9-S9999	!4) )->,?@ @ @ @ @ @s   AAAc                  x    t          d          } g d}|                     |t          d          }|g dk    sJ d S )Nr   )r	   goodbyez
third linezyet anotherT)r
   u	   ɡʊdbaɪu   θɜːd laɪnu   jɛt ɐnʌðɚr   r   r   )r   r   outs      r   test_englishr   (   sP    G$$GBBBD


D"3T
:
:CUUUUUUUUU    c                      t          dd          } |                     dgt          d          dgk    sJ t          dd          } |                     dgt          d          dgk    sJ d S )Nr   F)with_stressr	   Tr
   u   həlˈoʊ wˈɜːldr   r   s    r   test_stressr   /   s    G777G	*D2 26G5HI I I I G666G	*D2 26K5LM M M M M Mr   c                      t          d          } dg}t          dd d          }dg}|                     ||d          }||k    sJ d S )Nfr-frzbonjour le mondez;eword  )wordsyllablephoneu2   b ɔ̃ ʒ u ʁ ;eword l ə ;eword m ɔ̃ d ;eword F)r   r   r   r   r   sepexpectedr   s        r   test_frenchr(   9   s[    G$$GD
T
=
=
=CDEH


D#u
-
-C(??????r   arzArabic is not supported)reasonc                      t          d          } dg}t                      }t          j                    dk    rdg}ndg}|                     ||d          }||k    sJ d S )Nr)   u   السلام عليكم)   1      u   ʔassalaːm ʕliːkm u   ʔassalaam ʕaliijkum F)r   r   versionr   r%   s        r   test_arabicr0   B   sr     D!!G%&D
++C *,,+,,-


D#u
-
-C(??????r   c                      dg} t          d          }t          d          }|                    | |d          }dg}||k    sJ |                    | |d          }d	g}||k    sJ d S )
NzThe lion and the tiger ran_r$   r   T	separatorstripu0   ð_ə l_aɪə_n æ_n_d ð_ə t_aɪ_ɡ_ɚ ɹ_æ_nFu7   ð_ə_ l_aɪə_n_ æ_n_d_ ð_ə_ t_aɪ_ɡ_ɚ_ ɹ_æ_n_ r   r   r   )r   r&   r   outputr'   s        r   test_phone_separator_simpler9   X   s    ()D
#


CG$$Gts$??FBCHvts%@@FIJHvr   ztext, expected))zthe hello but theu   ð_ə h_ə_l_oʊ b_ʌ_t ð_ə)zHe was hungry but tired.u-   h_iː w_ʌ_z h_ʌ_ŋ_ɡ_ɹ_i b_ʌ_t t_aɪɚ_dc                     t          d          }t          d          }|                    | g|d          d         }||k    sJ d S )Nr2   r3   r   Tr4   r   r7   )r   r'   r&   r   r8   s        r   test_phone_separatorr;   f   sY     #


CG$$GvDAA!DFXr   PHONEMIZER_ESPEAK_LIBRARYzcannot modify environmentc                  L   t          j                    } 	 t          j        d            | t          j                    k    sJ t                      j        }t          j        |           t                       t          j        d            d S # t          j        d            w xY w)N)r   libraryset_libraryr   library_pathr   )espeakr>   s     r   test_path_goodrB   s   s     "$$F(!$'''.000000//.!'*** 	!$'''''!$''''s   A"B B#c                  l   	 t          j        d          } t          j        |            t	          j        t                    5  t          d           d d d            n# 1 swxY w Y   t	          j        t                    5  t          j                     d d d            n# 1 swxY w Y   t          j        t                     t	          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        d            d S # t          j        d            w xY w)Npythonr   )	shutilwhichr   r?   r   r   r   r/   __file__)binarys    r   test_path_badrI      s   (h''!&)))]<(( 	# 	#'"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#]<(( 	$ 	$!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	!(+++]<(( 	# 	#'"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 	!$'''''!$''''sx   AD AD A##D &A#'D B#D #B''D *B'+5D  C<0D <D  D D D D3c                     	 t          j        d          t          j        d<   t	          j        t                    5  t          d                              dg           d d d            n# 1 swxY w Y   t	          j        t                    5  t          j	                     d d d            n# 1 swxY w Y   t          t          j        d<   t	          j        t                    5  t          j	                     d d d            n# 1 swxY w Y   	 t          j        d= d S # t          $ r Y d S w xY w# 	 t          j        d= w # t          $ r Y w w xY wxY w)NrD   r<   r   hello)rE   rF   osenvironr   r   r   r   r   r/   rG   KeyError r   r   test_path_venvrP      s
   L"" 	
./]<(( 	8 	8'"",,gY777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]<(( 	$ 	$!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 3;
./]<(( 	$ 	$!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$	
6777 	 	 	DD		
677 	 	 	D	s   :D4 $A, D4 ,A00D4 3A04D4 B0$D4 0B44D4 7B480D4 (D<D4 DD4 DD4 D# #
D10D14E6EE
EEEEz"tie only compatible with espeak-ngztie, expected))Fu   dʒ_æ_k_i_ tʃ_æ_n_ )Tu   d͡ʒæki t͡ʃæn )8u   d8ʒæki t8ʃæn c                     t          d|          }|                    dgt          dd                    d         |k    sJ |rd	 | j        D             }d
|v sJ d S d S )Nr   tiezJackie Chanr!   r2   )r"   r$   )r5   r   c                     g | ]
}|d          S )   rO   ).0msgs     r   
<listcomp>z#test_tie_simple.<locals>.<listcomp>   s    ;;;sCF;;;r   z>cannot use ties AND phone separation, ignoring phone separator)r   r   r   record_tuples)caplogrT   r'   r   messagess        r   test_tie_simpler]      s     G---G	C000  2 22358@A A A A  ;;f&:;;;L     r   c                      t          dd          } |                     dg          dgk    sJ |                     dg          dgk    sJ |                     dg          d	gk    sJ d S )
Nr    TrS   bonjouru   bɔ̃ʒuʁ ztu aimes le footballu&   ty ɛm lə (͡e͡n)fʊtbɔːl(͡f͡r) zbonjour appleu#   bɔ̃ʒuʁ (͡e͡n)apə͡l(͡f͡r) )r   r   r   s    r   test_tie_utf8r`      s     G...G i[))m_<<<< 	 " "&N%OP P P P 	 DEF F F F F Fr   c                      t          j        t                    5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr   abcrS   )r   r   r   r   rO   r   r   test_tie_badrc      s     
|	$	$ * *g5))))* * * * * * * * * * * * * * * * * *s   9= =)__doc__rL   rE   r   phonemizer.backendr   !phonemizer.backend.espeak.wrapperr   phonemizer.separatorr   r   r   r   r   r(   markskipifis_espeak_ngis_supported_languager0   r9   parametrizer;   rM   rB   rI   rP   r]   r`   rc   rO   r   r   <module>rm      s;   !  
 
			   , , , , , , ; ; ; ; ; ; = = = = = = = =@ @ @V V VM M M   &M&((( 	6 0M/555$  & & & &   TU U U U 2:-&  ( (( (( ((  2:-&  ( (( (( ((( 2:-&  ( ( ( (( ""$$$/  1 1  $ $ $% %

 
% %1 1
 ""$$$/  1 1F F1 1F  ""$$$/  1 1* *1 1* * *r   