
    Pi                         d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ  G d
 de	          ZdS )z0Base class of espeak backends for the phonemizer    N)Logger)OptionalUnionPattern)BaseBackend)EspeakWrapper)
get_logger)Punctuation)	Separatorc                       e Zd ZdZ	 	 	 ddedeeeef                  dedee	         f fdZ
ed	             Zed
             Zedefd            Zedefd            Zed             Zej        dededededef
d            Z xZS )BaseEspeakBackendzAbstract espeak backend for the phonemizer

    Base class of the concrete backends Espeak and EspeakMbrola. It provides
    facilities to find espeak library and read espeak version.

    NFlanguagepunctuation_markspreserve_punctuationloggerc                     t                                          ||||           t                      | _        | j                            d| j        j                   d S )N)r   r   r   z	loaded %s)super__init__r   _espeakr   debuglibrary_path)selfr   r   r   r   	__class__s        r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/phonemizer/backend/espeak/base.pyr   zBaseEspeakBackend.__init__#   sb     	/!5	 	 	 	 	 %+t|'@AAAAA    c                 .    t          j        |           dS )ab  Sets the espeak backend to use `library`

        If this is not set, the backend uses the default espeak shared library
        from the system installation.

        Parameters
        ----------
        library (str or None) : the path to the espeak shared library to use as
            backend. Set `library` to None to restore the default.

        N)r   set_library)clslibrarys     r   r   zBaseEspeakBackend.set_library1   s     	!'*****r   c                 (    t          j                    S )a  Returns the espeak library used as backend

        The following precedence rule applies for library lookup:

        1. As specified by BaseEspeakBackend.set_library()
        2. Or as specified by the environment variable
           PHONEMIZER_ESPEAK_LIBRARY
        3. Or the default espeak library found on the system

        Raises
        ------
        RuntimeError if the espeak library cannot be found or if the
            environment variable PHONEMIZER_ESPEAK_LIBRARY is set to a
            non-readable file

        )r   r   r   s    r   r   zBaseEspeakBackend.library@   s    $ $&&&r   returnc                 H    	 t                       n# t          $ r Y dS w xY wdS )NFT)r   RuntimeErrorr!   s    r   is_availablezBaseEspeakBackend.is_availableT   s9    	OOOO 	 	 	55	ts    
c                 2    |                                  dk    S )z0Returns True if using espeak-ng, False otherwise)   1   )versionr!   s    r   is_espeak_ngzBaseEspeakBackend.is_espeak_ng\   s     {{}}''r   c                 (    t                      j        S )zEspeak version as a tuple (major, minor, patch)

        Raises
        ------
        RuntimeError if BaseEspeakBackend.is_available() is False or if the
            version cannot be extracted for some reason.

        )r   r)   r!   s    r   r)   zBaseEspeakBackend.versionb   s     &&r   linenum	separatorstripc                     d S )N )r   r,   r-   r.   r/   s        r   _postprocess_linez#BaseEspeakBackend._postprocess_linen   s	     	r   )NFN)__name__
__module____qualname____doc__strr   r   r   boolr   r   classmethodr   r   r%   r*   r)   abcabstractmethodintr   r2   __classcell__)r   s   @r   r   r      s         EI.3,0B B B$,U3<-@$AB'+B "&)B B B B B B + + [+ ' ' ['& T    [ (T ( ( ( [(
 	' 	' [	' 	c  %.7;@C       r   r   )r6   r:   loggingr   typingr   r   r   phonemizer.backend.baser   !phonemizer.backend.espeak.wrapperr   phonemizer.loggerr	   phonemizer.punctuationr
   phonemizer.separatorr   r   r1   r   r   <module>rE      s    7 6 



       + + + + + + + + + + / / / / / / ; ; ; ; ; ; ( ( ( ( ( ( . . . . . . * * * * * *U U U U U U U U U Ur   