a
    bgn                     @  s   d dl mZ d dl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 erhd dlmZ d	d
ddZdddddZeddddG dd deZdS )    )annotationsN)TYPE_CHECKINGAnyOptional)
deprecated)CallbackManagerForToolRun)BaseTool)get_client_infotexttospeechr   )returnc               
   C  sD   zddl m}  W n. ty> } ztd|W Y d }~n
d }~0 0 | S )Nr   r
   z`Cannot import google.cloud.texttospeech, please install `pip install google-cloud-texttospeech`.)google.cloudr   ImportError)r   e r   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/tools/google_cloud/texttospeech.py!_import_google_cloud_texttospeech   s    r   ztexttospeech.AudioEncodingzOptional[str])encodingr   c              
   C  s<   t  }|jjd|jjd|jjd|jjd|jjdi}|| S )Nz.wavz.mp3z.ogg)r   AudioEncodingZLINEAR16MP3ZOGG_OPUSZMULAWZALAWget)r   r   ZENCODING_FILE_EXTENSION_MAPr   r   r   _encoding_file_extension_map   s    r   z0.0.33z1.0z+langchain_google_community.TextToSpeechTool)ZsinceZremovalZalternative_importc                      sd   e Zd ZU dZdZded< dZded< ded< dd	d
 fddZddddddddddZ  Z	S )GoogleCloudTextToSpeechToolzTool that queries the Google Cloud Text to Speech API.

    In order to set this up, follow instructions at:
    https://cloud.google.com/text-to-speech/docs/before-you-begin
    Zgoogle_cloud_texttospeechstrnamezA wrapper around Google Cloud Text-to-Speech. Useful for when you need to synthesize audio from text. It supports multiple languages, including English, German, Polish, Spanish, Italian, French, Portuguese, and Hindi. descriptionr   _clientNone)kwargsr   c                   s0   t  }t jf i | |jtddd| _dS )zInitializes private fields.ztext-to-speech)module)Zclient_infoN)r   super__init__ZTextToSpeechClientr	   r   )selfr   r   	__class__r   r   r!   >   s
    z$GoogleCloudTextToSpeechTool.__init__en-USNz&Optional[texttospeech.SsmlVoiceGender]z$Optional[texttospeech.AudioEncoding]z#Optional[CallbackManagerForToolRun])
input_textlanguage_codessml_genderaudio_encodingrun_managerr   c           
      C  s   t  }|p|jj}|p|jj}| jj|j|d|j||d|j	|dd}t
|}tjd|dd}	|	|j W d   n1 s0    Y  |	jS )	zUse the tool.)text)r'   r(   )r)   )inputZvoiceZaudio_configbxF)modesuffixdeleteN)r   ZSsmlVoiceGenderZNEUTRALr   r   r   Zsynthesize_speechZSynthesisInputZVoiceSelectionParamsZAudioConfigr   tempfileNamedTemporaryFilewriteZaudio_contentr   )
r"   r&   r'   r(   r)   r*   r   responser/   fr   r   r   _runH   s    	

*z GoogleCloudTextToSpeechTool._run)r%   NNN)
__name__
__module____qualname____doc__r   __annotations__r   r!   r6   __classcell__r   r   r#   r   r   (   s   

    r   )
__future__r   r1   typingr   r   r   Zlangchain_core._api.deprecationr   Zlangchain_core.callbacksr   Zlangchain_core.toolsr   Z&langchain_community.utilities.vertexair	   r   r   r   r   r   r   r   r   r   <module>   s    