ó
    ûÞ jÜ  ã                  ó¦   • S SK Jr  S SKrS SKrS SKJrJrJrJrJ	r	  S SK
Jr  SSKJr  SSKJrJr  SSKJrJr  \(       a  S SKJr  S	r " S
 S5      rg)é    )ÚannotationsN)ÚAnyÚUnionÚCallableÚAsyncGeneratorÚcast)ÚTYPE_CHECKINGé   )Ú_legacy_response)ÚnumpyÚsounddevice)ÚStreamedBinaryAPIResponseÚAsyncStreamedBinaryAPIResponseiÀ]  c                  ó\   • \ rS rSr S S	S jjr    S
S jr    SS jr    SS jrSrg)ÚLocalAudioPlayeré   Nc                óH   • SU l         [        R                  U l        Xl        g )Né   )ÚchannelsÚnpÚfloat32ÚdtypeÚshould_stop)Úselfr   s     Ú[/var/www/html/gaurav/venv/lib/python3.13/site-packages/openai/helpers/local_audio_player.pyÚ__init__ÚLocalAudioPlayer.__init__   s   € ð ˆŒÜ—Z‘ZˆŒ
Ø&Õó    c              ƒ  ó  #   • / n[        U[        R                  5      (       d  [        U[        5      (       a1  UR	                  SS9 H  nU(       d  M  UR                  U5        M     O4UR	                  SS9  S h  v•N nU(       d  M  UR                  U5        M%  SR                  U5      n[        R                  " U[        R                  S9R                  [        R                  5      S-  nUR                  SS5      nU$  Nˆ
 Nl7f)Ni   )Ú
chunk_sizer   )r   ç    Àÿß@éÿÿÿÿr   )Ú
isinstancer   ÚHttpxBinaryResponseContentr   Ú
iter_bytesÚappendÚjoinr   Ú
frombufferÚint16Úastyper   Úreshape)r   ÚresponseÚchunksÚchunkÚaudio_bytesÚaudio_nps         r   Ú_tts_response_to_bufferÚ(LocalAudioPlayer._tts_response_to_buffer   sá   é € ð !ˆÜ�hÔ 0× KÑ K×LÑLÔPZØÔ/÷Q
ñ Q
ð "×,Ñ,¸Ð,Ó=�ß�5Ø—M‘M %Ö(ò >ð  (×2Ñ2¸dÐ2ÑC÷ )�eß�5Ø—M‘M %Ö(à—h‘h˜vÓ&ˆÜ—=’= ´B·H±HÑ=×DÑDÄRÇZÁZÓPÐSZÑZˆØ×#Ñ# B¨Ó*ˆØˆñ)ÑCùs7   ‚AD
Á%D
Á9DÁ=DÁ>DÂD
ÂA;D
ÄDÄD
c              ƒ  óR  ^ ^^^^#   • [        U[        R                  5      (       a¼  UR                  [        R                  :X  a[  T R                  [        R
                  :X  a=  UR                  [        R
                  5      S-  R                  ST R                  5      mO\UR                  [        R
                  :X  a  [        SU5      mO1[        SUR                   35      eT R                  U5      I S h  v•N m[        R                  " 5       m[        R                  " 5       mSm        S	UUUUU 4S jjn[        R                   " ["        UTR                  TR$                  S   S9nU   TR'                  5       I S h  v•N   S S S 5        g  Nš N! , (       d  f       g = f7f)
Nr!   r"   únpt.NDArray[np.float32]zUnsupported dtype: r   c                ó  >• [        T5      T-
  nUS:X  d/  [        T
R                  5      (       a@  T
R                  5       (       a+  T	R                  TR                  5        [
        R                  eXA:¼  a  UOUnTTTU-    U S U& SXS & TU-  mg )Nr   )ÚlenÚcallabler   Úcall_soon_threadsafeÚsetÚsdÚCallbackStop)ÚoutdataÚframe_countÚ
_time_infoÚ_statusÚ	remainderÚvalid_framesÚaudio_contentÚeventÚidxÚloopr   s         €€€€€r   ÚcallbackÚ'LocalAudioPlayer.play.<locals>.callbackN   s�   ø€ ô ˜MÓ*¨SÑ0ˆIØ˜A‹~¤(¨4×+;Ñ+;×"<Ñ"<À×AQÑAQ×ASÑASØ×)Ñ)¨%¯)©)Ô4Ü—o‘oÐ%Ø*3Ó*B™;È	ˆLØ%2°3¸¸|Ñ9KÐ%LˆG�M�\Ð"Ø%&ˆG�MÐ"Ø�<Ñ‰Cr   r   )Ú
sampleraterF   r   r   ©r<   r4   r=   Úintr>   r   r?   r   )r#   r   Úndarrayr   r)   r   r*   r+   r   r   Ú
ValueErrorr1   ÚasyncioÚget_event_loopÚEventr:   ÚOutputStreamÚSAMPLE_RATEÚshapeÚwait)r   ÚinputrF   ÚstreamrB   rC   rD   rE   s   `   @@@@r   ÚplayÚLocalAudioPlayer.play5   sP  üé € ô �eœRŸZ™Z×(Ñ(Ø�{‰{œbŸh™hÓ&¨4¯:©:¼¿¹Ó+CØ!&§¡¬b¯j©jÓ!9¸GÑ!C× LÑ LÈRÐQU×Q^ÑQ^Ó _‘Ø—‘¤§
¡
Ó*Ü $Ð%>ÀÓ F‘ä Ð#6°u·{±{°mÐ!DÓEÐEà"&×">Ñ">¸uÓ"E×EˆMä×%Ò%Ó'ˆÜ—’“ˆØˆð	 Ø,ð	 àð	 ð ð	 ð ÷		 ó 	 ô" —’Ü"ØØ×%Ñ%Ø"×(Ñ(¨Ñ+ñ	
ˆò Ø—*‘*“,×Ð÷ ˆVñ; Fñ< ÷ �Vüs=   ‡C0F'Ã7FÃ8A8F'Å0FÆFÆFÆ	
F'ÆFÆ
F$Æ F'c              ƒ  óì  ^ ^^^^^^	#   • [         R                  " 5       m	[         R                  " 5       m[        R                  " SS9mUUU	4S jn        SUUUUU	U 4S jjnS mSm[         R
                  " U" 5       5      n[        R                  " [        T R                  T R                  US9   TR                  5       I S h  v•N   S S S 5        UI S h  v•N   g  N! , (       d  f       N= f N7f)Né2   )Úmaxsizec               “  óÖ   >#   • T  S h  v•N n U c    O'TR                  S TR                  U 5      I S h  v•N   M5  TR                  S TR                  S 5      I S h  v•N   g  NV N.
 N, N7f©N)Úrun_in_executorÚput)ÚbufferÚbuffer_queueÚbuffer_streamrE   s    €€€r   Úbuffer_producerÚ5LocalAudioPlayer.play_stream.<locals>.buffer_producerp   sl   øé € Ù -÷ K�fØ‘>ÙØ×*Ñ*¨4°×1AÑ1AÀ6ÓJ×JÒJØ×&Ñ& t¨\×-=Ñ-=¸tÓD×DÑDñ	Kñ Kñ !.ñ EùsG   ƒA)†A%ŠA!‹A%Ž&A)´A#µ&A)ÁA'ÁA)Á!A%Á#A)Á%A)Á'A)c                óZ  >• SnXA:  Ga  T	b  T[        T	5      :¼  a¸   TR                  SS9m	T	c+  TR                  T
R                  5        [        R
                  eSmT	R                  [        R                  :X  aZ  TR                  [        R                  :X  a<  T	R                  [        R                  5      S-  R                  STR                  5      m	[        T	5      T-
  n[        X-
  U5      nT	TTU-    XXF-   & TU-  mXF-  nXA:  a  GM  g g ! [        R                   a    SXS &  g f = f)Nr   gš™™™™™¹?)Útimeoutr!   r"   )r6   Úgetr8   r9   r:   r;   r   r   r)   r   r*   r+   r   ÚqueueÚEmptyÚmin)r<   r=   r>   r?   Úframes_writtenÚremaining_framesÚframes_to_writeÚ
buffer_posr`   Úcurrent_bufferrC   rE   r   s          €€€€€€r   rF   Ú.LocalAudioPlayer.play_stream.<locals>.callbackw   s1  ø€ ð ˆNØ Ô.Ø!Ñ)¨Z¼3¸~Ó;NÓ-NðØ)5×)9Ñ)9À#Ð)9Ð)F˜Ø)Ñ1Ø ×5Ñ5°e·i±iÔ@Ü"$§/¡/Ð1Ø%&˜
à)×/Ñ/´2·8±8Ó;ÀÇ
Á
ÌbÏjÉjÓ@XØ.<×.CÑ.CÄBÇJÁJÓ.OÐRYÑ.Y×-bÑ-bÐceÐgk×gtÑgtÓ-u˜Nô $' ~Ó#6¸Ñ#CÐ Ü"% kÑ&BÐDTÓ"U�ØM[Ø ¨oÑ!=ðN�¨Ñ)IÐJð ˜oÑ-�
ØÑ1�ð- !×.Ð.øô !Ÿ;™;ó Ø34˜ Ð0Ùðús   �B7D ÄD*Ä)D*r   )rH   r   r   rF   rI   )rM   rN   rO   rg   ÚQueueÚcreate_taskr:   rP   rQ   r   r   rS   )
r   ra   rb   rF   Úproducer_taskrm   r`   rn   rC   rE   s
   ``   @@@@@r   Úplay_streamÚLocalAudioPlayer.play_streamh   sÜ   þé € ô ×%Ò%Ó'ˆÜ—’“ˆÜaf×alÒalÐuwÑaxˆ÷	Eð	2Ø,ð	2àð	2ð ð	2ð ÷		2ô 	2ðB ˆØˆ
ä×+Ò+©OÓ,=Ó>ˆä�_Š_Ü"Ø—]‘]Ø—*‘*Øó	
ð —*‘*“,×Ð÷
ð ×Ññ ÷
õ 
úñ 	ùs<   ‰B*C4Â3C!ÃCÃC!ÃC4ÃC2ÃC4ÃC!Ã!
C/Ã+C4)r   r   r   r\   )r   zUnion[Callable[[], bool], None])r,   zmUnion[_legacy_response.HttpxBinaryResponseContent, AsyncStreamedBinaryAPIResponse, StreamedBinaryAPIResponse]Úreturnr4   )rT   z�Union[npt.NDArray[np.int16], npt.NDArray[np.float32], _legacy_response.HttpxBinaryResponseContent, AsyncStreamedBinaryAPIResponse, StreamedBinaryAPIResponse]ru   ÚNone)ra   zQAsyncGenerator[Union[npt.NDArray[np.float32], npt.NDArray[np.int16], None], None]ru   rv   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r1   rV   rs   Ú__static_attributes__© r   r   r   r      s^   † ð 8<ð'à4õ'ðð
ðð 
!ôð21ð
ð1ð 
ô1ðf=àhð=ð 
÷=r   r   )Ú
__future__r   rg   rM   Útypingr   r   r   r   r   Útyping_extensionsr	   Ú r   Ú_extrasr   r   r   r:   Ú	_responser   r   Únumpy.typingÚnptrQ   r   r|   r   r   Ú<module>r…      s7   ðå "ã Û ß =Õ =Ý +å ß 4ß QæÝà€÷Rò Rr   