o
    qmiF                  	   @   sv   d dl Z d dlZd dlZd dlZddlmZ dedefddZ		dd
edededdfddZ	d
ededdfddZ
dS )    N   )TextToSpeechResponselib_namereturnc                 C   s   t | }|d u rdS dS )NFT)shutilwhich)r   lib r	   A/home/ubuntu/.local/lib/python3.10/site-packages/sarvamai/play.pyis_installed   s   
r   FTaudionotebook
use_ffmpegc                 C   s  d}t | jD ]%\}}t|}|dkr|}q|d}|dkr,|d }|||d  7 }qt| jdkrst|d }	|d d |	dd |dd   }|d}|dkrst|| d }
|d |d  |
dd ||d d   }|}|rz
dd	lm}m	} W n t
y   d
}t|w |||ddd d S |rtdsd}t|g d}tj|tjtjtjd}|j|d\}}|  d S zdd l}dd l}dd l}W n t
y   d}t|w |j|||  |  d S )N    r      data   r      little)Audiodisplayz5`pip install ipython` required when `notebook=False` i"V  T)rateautoplayffplayzffplay from ffmpeg not found, necessary to play audio. On mac you can install it with 'brew install ffmpeg'. On linux and windows you can install it from https://ffmpeg.org/)r   z	-autoexit-z-nodisp)argsstdoutstdinstderr)inputzE`pip install sounddevice soundfile` required when `use_ffmpeg=False` )	enumerateaudiosbase64	b64decodefindlento_bytesIPython.displayr   r   ModuleNotFoundError
ValueErrorr   
subprocessPopenPIPEcommunicatepolliosounddevice	soundfileplayreadBytesIOwait)r   r   r   combined_audio_dataiaudio_chunk
chunk_datadata_posaudio_data_start
total_size	data_sizeaf_bytesr   r   messager   procouterrr/   sdsfr	   r	   r
   r2      sz   






r2   filenamec                 C   s0  t | jtrd}t| jD ]%\}}t|}|dkr|}q|d}|dkr2|d }|||d  7 }qt| jdkryt|d }|d d |dd |dd   }|d}|dkryt|| d }	|d |d  |	dd ||d d   }t	|d	}
|

| W d    d S 1 sw   Y  d S d S )
Nr   r   r   r   r   r   r   r   wb)
isinstancer!   listr    r"   r#   r$   r%   r&   openwrite)r   rE   r6   r7   r8   r9   r:   r;   r<   r=   fr	   r	   r
   savec   s@   






"rL   )FT)r"   r   r*   wavetypes.text_to_speech_responser   strboolr   r2   rL   r	   r	   r	   r
   <module>   s"    
T