
    h
                     B    d dl mZ d dlZd dlZddlmZ  G d de      Zy)    )CallableN   )AudioInterfacec                   V    e Zd ZdZdZd Zdeegdf   fdZd Z	defd	Z
d
 Zd Zd Zy)DefaultAudioInterfacei  i  c                 L    	 dd l }|| _         y # t        $ r t        d      w xY w)Nr   z6To use DefaultAudioInterface you must install pyaudio.)pyaudioImportError)selfr	   s     n/var/www/html/engine/venv/lib/python3.12/site-packages/elevenlabs/conversational_ai/default_audio_interface.py__init__zDefaultAudioInterface.__init__   s3    	X   	XVWW	Xs    #input_callbackNc           	      X   || _         t        j                         | _        t	        j
                         | _        t	        j                  | j                        | _	        | j                  j                         | _        | j                  j                  | j                  j                  ddd| j                  | j                   d      | _        | j                  j                  | j                  j                  ddd| j$                  d      | _        | j                  j)                          y )N)targetr   i>  T)formatchannelsrateinputstream_callbackframes_per_bufferstart)r   r   r   outputr   r   )r   queueQueueoutput_queue	threadingEventshould_stopThread_output_threadoutput_threadr	   PyAudiopopenpaInt16_in_callbackINPUT_FRAMES_PER_BUFFER	in_streamOUTPUT_FRAMES_PER_BUFFER
out_streamr   )r   r   s     r   r   zDefaultAudioInterface.start   s    , 16$??,&--T5H5HI%%'<<'' --":: % 
 &&++<<''";; & 
 	  "    c                 <   | j                   j                          | j                  j                          | j                  j                          | j                  j                          | j                  j                          | j                  j                          y N)
r   setr!   joinr(   stop_streamcloser*   r#   	terminate)r   s    r   stopzDefaultAudioInterface.stop2   sf    !""$r+   audioc                 :    | j                   j                  |       y r-   )r   putr   r4   s     r   r   zDefaultAudioInterface.output:   s    e$r+   c                 r    	 	 | j                   j                  d      }# t        j                  $ r Y y w xY w)NF)block)r   getr   Empty)r   _s     r   	interruptzDefaultAudioInterface.interrupt=   s>    
	%%)))6 {{ 		s     66c                    | j                   j                         sT	 | j                  j                  d      }| j                  j                  |       | j                   j                         sSy y # t        j                  $ r Y 2w xY w)Ng      ?)timeout)r   is_setr   r:   r*   writer   r;   r7   s     r   r    z$DefaultAudioInterface._output_threadH   sp    ""))+))--d-;%%e, ""))+ ;; s   7A0 0BBc                 l    | j                   r| j                  |       d | j                  j                  fS r-   )r   r	   
paContinue)r   in_dataframe_count	time_infostatuss        r   r&   z"DefaultAudioInterface._in_callbackP   s.    (dll--..r+   )__name__
__module____qualname__r'   r)   r   r   bytesr   r3   r   r=   r    r&    r+   r   r   r      sJ    "##HeWd]$; #>%E %	/r+   r   )typingr   r   r   conversationr   r   rL   r+   r   <module>rO      s       (K/N K/r+   