o
    hx	                     @   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 r#d dl	m
Z
 G dd	 d	eZdS )
    N   )SpeechT5ForTextToSpeechSpeechT5HifiGanSpeechT5Processor)is_datasets_available   )PipelineTool)load_datasetc                       sZ   e Zd ZdZdZdZeZeZ	e
ZdgZdgZ fddZdd	d
Zdd Zdd Z  ZS )TextToSpeechToolzmicrosoft/speecht5_ttszThis is a tool that reads an English text out loud. It takes an input named `text` which should contain the text to read (in English) and returns a waveform object containing the sound.text_readertextaudioc                    s   | j d u rd| _ t   d S )Nzmicrosoft/speecht5_hifigan)post_processorsupersetup)self	__class__ W/var/www/html/ai/venv/lib/python3.10/site-packages/transformers/tools/text_to_speech.pyr   *   s   
zTextToSpeechTool.setupNc                 C   sX   | j |ddd}|d u r%t stdtddd}t|d d	 d
}|d |dS )NptT)r   return_tensors
truncationzADatasets needs to be installed if not passing speaker embeddings.zMatthijs/cmu-arctic-xvectors
validation)spliti  xvectorr   	input_ids)r   speaker_embeddings)pre_processorr   ImportErrorr	   torchtensor	unsqueeze)r   r   r   inputsembeddings_datasetr   r   r   encode/   s   zTextToSpeechTool.encodec                 C   s>   t   | jjdi |W  d    S 1 sw   Y  d S )Nr   )r    no_gradmodelgenerate_speech)r   r#   r   r   r   forward;      
$zTextToSpeechTool.forwardc                 C   s>   t   | |  W  d    S 1 sw   Y  d S N)r    r&   r   cpudetach)r   outputsr   r   r   decode?   r*   zTextToSpeechTool.decoder+   )__name__
__module____qualname__default_checkpointdescriptionnamer   pre_processor_classr   model_classr   post_processor_classr#   r.   r   r%   r)   r/   __classcell__r   r   r   r   r
      s    
r
   )r    models.speecht5r   r   r   utilsr   baser   datasetsr	   r
   r   r   r   r   <module>   s   