
    zvh                        d dl mZ d dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZ d dlmZmZ ddlmZmZ ddlmZmZ erd dlmZ dZ ed	ej8                  
      Z G d de
e         Zy)    )annotationsN)AnyTypeUnionGenericTypeVarCallableoverload)TYPE_CHECKINGLiteral   )	FileTypesFileContent)numpysounddevicei]  DType)boundc                      e Zd Zdej                  ddf	 	 	 	 	 	 	 d	dZd
dZedd       Zedd       Zeddd       ZdddZy)
Microphone   Nc                j    || _         || _        || _        g | _        || _        t        |      | _        y N)channelsdtypeshould_recordbuffer_chunkstimeoutcallablehas_record_function)selfr   r   r   r   s        Q/var/www/html/luna/venv/lib/python3.12/site-packages/openai/helpers/microphone.py__init__zMicrophone.__init__   s6     !
*#+M#:     c                   t        j                         }t        j                  |d      5 }|j	                  | j
                         |j                  t        j                  | j                        j                         |j                  t               |j                  |j                                d d d        |j                  d       d|dfS # 1 sw Y   xY w)Nwr   z	audio.wavz	audio/wav)ioBytesIOwaveopensetnchannelsr   setsampwidthnpr   itemsizesetframerateSAMPLE_RATEwriteframestobytesseek)r    
audio_databufferwav_files       r!   _ndarray_to_wavzMicrophone._ndarray_to_wav%   s     jjlYYvs# 	7x!!$--0!!"((4::"6"?"?@!!+.  !3!3!56		7
 	AV[11	7 	7s   BCCc                   K   y wr    r    return_ndarrays     r!   recordzMicrophone.record/   s	     QT   c                   K   y wr   r8   r9   s     r!   r;   zMicrophone.record2   s	     ILr<   c                   K   y wr   r8   r9   s     r!   r;   zMicrophone.record5   s	     EHr<   c                \   K   t        j                         t        j                         g  _        t	        j
                         	 	 	 	 	 	 	 	 d fd}t        j                  | j                  t         j                        }|5  j                          d {    d d d        t         j                        dkD  r!t        j                   j                  d      n t        j                  g  j                        }|r|S  j!                  |      S 7 {# 1 sw Y   zxY ww)Nc                   t        j                         
z
  }	j                  |	j                  kD  nd}|r+j                  j                         t
        j                  t        	j                        r	j                         nd}|s+j                  j                         t
        j                  	j                  j                  | j                                y )NFT)timeperf_counterr   call_soon_threadsafesetsdCallbackStopr   r   r   appendcopy)indata_frame_count
_time_info_statusexecution_timereached_recording_timeoutshould_be_recordingeventloopr    
start_times          r!   callbackz#Microphone.record.<locals>.callback>   s     "..0:=NIMIa(Egl%())%))4oo%:B4CUCU:V$"4"4"6\`&))%))4oo%%%fkkm4r#   )rS   r   
samplerater   r   )axis)r   )rI   npt.NDArray[DType]rJ   intrK   r   rL   r   )asyncioget_event_loopEventr   rA   rB   rE   InputStreamr   r/   r   waitlenr,   concatenatearrayr6   )r    r:   rS   streamconcatenated_chunksrP   rQ   rR   s   `    @@@r!   r;   zMicrophone.record8   s    %%'79&&(
	5&	5	5 	5 		5 	5& **"]]	
  	**,	 4%%&* NN4--A6"DJJ/ 	 &&''(;<< 	 	s1   BD,D "D#D 'A7D,D  D)%D,)r   rW   r   zType[DType]r   zUnion[Callable[[], bool], None]r   zUnion[float, None])r3   rV   returnr   )r:   zLiteral[True]rb   rV   )r:   zLiteral[False]rb   r   ).)r:   Nonerb   r   )F)r:   zUnion[bool, None]rb   z$Union[npt.NDArray[DType], FileTypes])	__name__
__module____qualname__r,   int16r"   r6   r
   r;   r8   r#   r!   r   r      su     XX9=&*;; ; 7	;
 $;2 T TL LH H,=r#   r   )
__future__r   r&   rA   r(   rX   typingr   r   r   r   r   r	   r
   typing_extensionsr   r   _typesr   r   _extrasr   r,   r   rE   numpy.typingnptr/   genericr   r   r8   r#   r!   <module>rp      sS    " 	    I I I 4 + 4rzz*N= N=r#   