U
    4Af	                     @   sZ   d dl Z ddlmZmZmZ ddlmZ ddlmZ e rFd dl	m
Z
 G dd	 d	eZdS )
    N   )SpeechT5ForTextToSpeechSpeechT5HifiGanSpeechT5Processor)is_datasets_available   )PipelineTool)load_datasetc                       s`   e Zd ZdZdZdZeZeZ	e
ZddddiZdZ fdd	ZdddZdd Zdd Z  ZS )TextToSpeechToolzmicrosoft/speecht5_ttszfThis is a tool that reads an English text out loud. It returns a waveform object containing the sound.Ztext_to_speechtextz&The text to read out loud (in English))typedescriptionaudioc                    s   | j d krd| _ t   d S )Nzmicrosoft/speecht5_hifigan)post_processorsupersetup)self	__class__ F/tmp/pip-unpacked-wheel-zw5xktn0/transformers/agents/text_to_speech.pyr   *   s    
zTextToSpeechTool.setupNc                 C   sZ   | j |ddd}|d krLt s&tdtdddd}t|d d	 d
}|d |dS )NptT)r   Zreturn_tensorsZ
truncationzADatasets needs to be installed if not passing speaker embeddings.zMatthijs/cmu-arctic-xvectorsZ
validation)splitZtrust_remote_codei  Zxvectorr   	input_ids)r   speaker_embeddings)Zpre_processorr   ImportErrorr	   torchZtensorZ	unsqueeze)r   r   r   inputsZembeddings_datasetr   r   r   encode/   s      zTextToSpeechTool.encodec              
   C   s.   t   | jjf |W  5 Q R  S Q R X d S N)r   no_gradmodelZgenerate_speech)r   r   r   r   r   forward=   s    
zTextToSpeechTool.forwardc              
   C   s2   t    | |  W  5 Q R  S Q R X d S r   )r   r    r   cpudetach)r   outputsr   r   r   decodeA   s    
zTextToSpeechTool.decode)N)__name__
__module____qualname__Zdefault_checkpointr   namer   Zpre_processor_classr   Zmodel_classr   Zpost_processor_classr   output_typer   r   r"   r&   __classcell__r   r   r   r   r
      s   
r
   )r   Zmodels.speecht5r   r   r   utilsr   Ztoolsr   Zdatasetsr	   r
   r   r   r   r   <module>   s   