o
    mi                     @   s   d Z ddlZG dd dZdS )z.Voice struct from Espeak API exposed to Python    Nc                   @   s   e Zd ZdZddededefddZedd	 Zed
d Zedd Z	dddZ
dd ZG dd dejZdd ZedefddZdS )EspeakVoicez=A helper class to expose voice structures within C and Python namelanguage
identifierc                 C   s   || _ || _|| _d S N)_name	_language_identifier)selfr   r   r    r   Y/home/kim/smarthome/.venv/lib/python3.10/site-packages/phonemizer/backend/espeak/voice.py__init__   s   
zEspeakVoice.__init__c                 C      | j S )z
Voice name)r   r   r   r   r   r         zEspeakVoice.namec                 C   r   )zLanguage code)r	   r   r   r   r   r   #   r   zEspeakVoice.languagec                 C   r   )z+Path to the voice file wrt espeak data path)r
   r   r   r   r   r   (   r   zEspeakVoice.identifierotherc                 C   s$   | j |j ko| j|jko| j|jkS r   r   r   r   )r   r   r   r   r   __eq__-   s
   

zEspeakVoice.__eq__c                 C   s   t | j| j| jfS r   )hashr   r   r   r   r   r   r   __hash__3   s   zEspeakVoice.__hash__c                   @   s,   e Zd ZdZdejfdejfdejfgZdS )zEspeakVoice.VoiceStructa  A helper class to fetch voices information from the espeak library.

        The espeak_VOICE struct is defined in speak_lib.h from the espeak code.
        Here we use only name (voice name), languages (language code) and
        identifier (voice file) information.

        r   	languagesr   N)__name__
__module____qualname____doc__ctypesc_char_pZ_fields_r   r   r   r   VoiceStruct6   s    r   c                 C   sF   |  | jr| jdnd| jr| jdnd| jr | jdS dS )z:Converts the Voice instance to  an espeak ctypes structureutf8N)r   r   encoder   r   r   r   r   r   	to_ctypesC   s   zEspeakVoice.to_ctypesstructc                 C   s4   | |j pd |jpd dd |jpd dS )z>Returns a Voice instance built from an espeak ctypes structure       0   Nr   )r   decoder   r   )clsr"   r   r   r   from_ctypesJ   s
   zEspeakVoice.from_ctypesN)r   r   r   )r   r   )r   r   r   r   strr   propertyr   r   r   r   r   r   Z	Structurer   r!   classmethodr(   r   r   r   r   r      s    



r   )r   r   r   r   r   r   r   <module>   s   