
    HJj                     t    d dl Z d dlZd dlZ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 ddlmZ  G d d      Zy)    N)EspeakWrapper   )DEFAULT_VOCABMAX_PHONEME_LENGTHEspeakConfig)logc                   N    e Zd Zd	dedz  defdZedefd       Zd Z	d
defdZ
y)	TokenizerNespeak_configvocabc                 P   |xs t         | _        |s
t               }|j                  st	        j
                         |_        |j                  st	        j                         |_        t        j                  d      rt        j                  d      |_        	 t        j                  j                  |j                         t1        j2                  |j                         t1        j4                  |j                         y # t        $ r}t        j                  d|        t        j                   d       dt#        j"                          dt#        j$                          dt&        j(                   }t        j*                  j-                  d      xs t        j*                  j-                  d      |_        |j                  st/        |      	 t        j                  j                  |j                         n!# t        $ r}t/        | d	|       d }~ww xY wY d }~ad }~ww xY w)
NPHONEMIZER_ESPEAK_LIBRARYz&Failed to load espeak shared library: z-Falling back to system wide espeak-ng librarya  Failed to load espeak-ng from fallback. Please install espeak-ng system wide.
	See https://github.com/espeak-ng/espeak-ng/blob/master/docs/guide.md
	Note: you can specify shared library path using PHONEMIZER_ESPEAK_LIBRARY environment variable.
Environment:
	z (z) | z	espeak-ngespeakz: )r   r   r   	data_pathespeakng_loaderget_data_pathlib_pathget_library_pathosgetenvctypescdllLoadLibrary	Exceptionr   errorwarningplatformreleasesysversionutilfind_libraryRuntimeErrorr   set_data_pathset_library)selfr   r   e
error_infos        _/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/kokoro_onnx/tokenizer.py__init__zTokenizer.__init__   s   +m
(NM&&&5&C&C&EM#%%%4%E%E%GM" 9901%'YY/J%KM"	9KK##M$:$:;, 	##M$;$;<!!-"8"89-  	9II>qcBCKKGH# $,#4#4#6"7r(:J:J:L9MTRUR]R]Q^`  &,[[%=%=& &4))(3 " !))":..9''(>(>? 9"aS:,#7889 @#	9s=   )C> >
H%CH )G98H 9	HHHH  H%returnc                 "    | j                         S N)strip)texts    r)   normalize_textzTokenizer.normalize_text8   s    zz|    c                     t        |      t        kD  rt        dt         d      t        | j                  j
                  |      D cg c]  }||	 c}S c c}w )Nz$text is too long, must be less than z	 phonemes)lenr   
ValueErrormapr   get)r&   phonemesis      r)   tokenizezTokenizer.tokenize<   sY    x=--67I6J)T  tzz~~x8J8aAM8JJJs   AAc                      |rt         j                  |      }t        j                  ||dd      }dj	                  t         fd|            }|j                         S )z0
        lang can be 'en-us' or 'en-gb'
        T)preserve_punctuationwith_stress c                      | j                   v S r-   )r   )pr&   s    r)   <lambda>z%Tokenizer.phonemize.<locals>.<lambda>M   s    AOr1   )r
   r0   
phonemizer	phonemizejoinfilterr.   )r&   r/   langnormr7   s   `    r)   rB   zTokenizer.phonemizeC   sV     ++D1D''$Tt
 776";XFG~~r1   )NN)zen-usT)__name__
__module____qualname__r   dictr*   staticmethodstrr0   r9   rB    r1   r)   r
   r
      sH    ':lT&9 ': ':R   K #  r1   r
   )r   r   r   r   r   rA   !phonemizer.backend.espeak.wrapperr   configr   r   r   r   r
   rM   r1   r)   <module>rP      s/     	  
   ; C C @  @ r1   