Ë
    $Æ%hÜ  ã                  óœ   — d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ ddl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 G d
„ d«      Zy)é    )ÚannotationsN)ÚAnyÚUnionÚCallableÚAsyncGeneratorÚcast)ÚTYPE_CHECKINGé   )Ú_legacy_response)ÚnumpyÚsounddevice)ÚStreamedBinaryAPIResponseÚAsyncStreamedBinaryAPIResponseiÀ]  c                  óJ   — e Zd Z	 d	 dd„Z	 	 	 	 dd„Z	 	 	 	 d	d„Z	 	 	 	 d
d„Zy)ÚLocalAudioPlayerNc                óJ   — d| _         t        j                  | _        || _        y )Né   )ÚchannelsÚnpÚfloat32ÚdtypeÚshould_stop)Úselfr   s     ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/openai/helpers/local_audio_player.pyÚ__init__zLocalAudioPlayer.__init__   s   € ð ˆŒÜ—Z‘ZˆŒ
Ø&ˆÕó    c              ƒ  óö  K  — g }t        |t        j                  «      st        |t        «      r,|j	                  d¬«      D ]  }|sŒ|j                  |«       Œ n0|j	                  d¬«      2 3 d {  –—† }|sŒ|j                  |«       Œdj                  |«      }t        j                  |t        j                  ¬«      j                  t        j                  «      dz  }|j                  dd«      }|S 7 Œƒ6 Œn­w)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_bufferz(LocalAudioPlayer._tts_response_to_buffer   sà   è ø€ ð !ˆÜ�hÔ 0× KÑ KÔLÔPZØÔ/ôQ
ð "×,Ñ,¸Ð,Ó=ò )�ÚØ—M‘M %Õ(ñ)ð  (×2Ñ2¸dÐ2ÓC÷ )ð )�eÚØ—M‘M %Õ(à—h‘h˜vÓ&ˆÜ—=‘= ´B·H±HÔ=×DÑDÄRÇZÁZÓPÐSZÑZˆØ×#Ñ# B¨Ó*ˆØˆð)øÐCús7   ‚AC9Á&C9Á-C7Á1C5Á2C7Á5C9Á9A<C9Ã5C7Ã7C9c              ƒ  ó4  ‡ ‡‡‡‡K  — t        |t        j                  «      r¹|j                  t        j                  k(  rZ‰ j                  t        j
                  k(  r=|j                  t        j
                  «      dz  j                  d‰ j                  «      Šn[|j                  t        j
                  k(  rt        d|«      Šn1t        d|j                  › �«      ‚‰ j                  |«      ƒ d {  –—† Št        j                  «       Št        j                  «       ŠdŠ	 	 	 	 	 	 	 	 d	ˆˆˆˆˆ fd„}t        j                   t"        |‰j                  ‰j$                  d   ¬«      }|5  ‰j'                  «       ƒ d {  –—†  d d d «       y 7 Œ˜7 Œ# 1 sw Y   y xY w­w)
Nr   r    únpt.NDArray[np.float32]zUnsupported dtype: r   c                ó  •— t        ‰«      ‰z
  }|dk(  s%t        ‰
j                  «      r;‰
j                  «       r+‰	j                  ‰j                  «       t
        j                  ‚||k\  r|n|}‰‰‰|z    | d | d| |d  ‰|z  Šy )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   Úcallbackz'LocalAudioPlayer.play.<locals>.callbackN   s‹   ø€ ô ˜MÓ*¨SÑ0ˆIØ˜AŠ~¤(¨4×+;Ñ+;Ô"<À×AQÑAQÔASØ×)Ñ)¨%¯)©)Ô4Ü—o‘oÐ%Ø*3°{Ò*B™;È	ˆLØ%2°3¸¸|Ñ9KÐ%LˆG�M�\Ð"Ø%&ˆG�L�MÐ"Ø�<Ñ‰Cr   r   )Ú
sampleraterC   r   r   ©r9   r1   r:   Úintr;   r   r<   r   )r!   r   Úndarrayr   r'   r   r(   r)   r   r   Ú
ValueErrorr/   ÚasyncioÚget_event_loopÚEventr7   ÚOutputStreamÚSAMPLE_RATEÚshapeÚwait)r   ÚinputrC   Ústreamr?   r@   rA   rB   s   `   @@@@r   ÚplayzLocalAudioPlayer.play5   s[  üè ø€ ô �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ä×%Ñ%Ó'ˆÜ—‘“ˆØˆð	 Ø,ð	 àð	 ð ð	 ð ÷		 ñ 	 ô" —‘Ü"ØØ×%Ñ%Ø"×(Ñ(¨Ñ+ô	
ˆð ñ 	Ø—*‘*“,×Ð÷	ð 	ð; Føð< ø÷	ð 	üs=   ‡C(FÃ/FÃ0A6FÅ&FÅ:F
Å;FÅ?
FÆ
FÆFÆFc              ƒ  óÞ  ‡ ‡‡‡‡‡‡	K  — t        j                  «       Š	t        j                  «       Št        j                  d¬«      Šˆˆˆ	fd„}	 	 	 	 	 	 	 	 dˆˆˆˆˆ	ˆ fd„}d ŠdŠt        j
                   |«       «      }t        j                  t        ‰ j                  ‰ j                  |¬«      5  ‰j                  «       ƒ d {  –—†  d d d «       |ƒ d {  –—†  y 7 Œ# 1 sw Y   ŒxY w7 Œ­w)Né2   )Úmaxsizec               “  óÒ   •K  — ‰2 3 d {  –—† } | € n&‰j                  d ‰j                  | «      ƒ d {  –—†  Œ3‰j                  d ‰j                  d «      ƒ d {  –—†  y 7 ŒT7 Œ-6 Œ,7 Œ­w©N)Úrun_in_executorÚput)ÚbufferÚbuffer_queueÚbuffer_streamrB   s    €€€r   Úbuffer_producerz5LocalAudioPlayer.play_stream.<locals>.buffer_producerp   sv   øè ø€ Ø -÷ Kð 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                ó\  •— d}||k  �r‰	�‰t        ‰	«      k\  r¸	 ‰j                  d¬«      Š	‰	€+‰j                  ‰
j                  «       t        j
                  ‚dŠ‰	j                  t        j                  k(  rY‰j                  t        j                  k(  r<‰	j                  t        j                  «      dz  j                  d‰j                  «      Š	t        ‰	«      ‰z
  }t        ||z
  |«      }‰	‰‰|z    | |||z    ‰|z  Š||z  }||k  r�Œy y # t        j                  $ r d| |d  Y y w xY w)Nr   gš™™™™™¹?)Útimeoutr   r    )r3   Úgetr5   r6   r7   r8   r   r   r'   r   r(   r)   r   ÚqueueÚEmptyÚmin)r9   r:   r;   r<   Úframes_writtenÚremaining_framesÚframes_to_writeÚ
buffer_posr[   Úcurrent_bufferr@   rB   r   s          €€€€€€r   rC   z.LocalAudioPlayer.play_stream.<locals>.callbackw   s<  ø€ ð ˆ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°NÑ&BÐDTÓ"U�ØM[Ø ¨oÑ!=ðN�˜¨¸/Ñ)IÐJð ˜oÑ-�
Ø /Ñ1�ð- ! ;Ö.øô !Ÿ;™;ò Ø34˜  Ð0Ùðús   ›B7D ÄD+Ä*D+r   )rD   r   r   rC   rE   )rI   rJ   rK   ra   ÚQueueÚcreate_taskr7   rL   rM   r   r   rO   )
r   r\   r]   rC   Úproducer_taskrg   r[   rh   r@   rB   s
   ``   @@@@@r   Úplay_streamzLocalAudioPlayer.play_streamh   sã   þè ø€ ô ×%Ñ%Ó'ˆÜ—‘“ˆÜaf×alÑalÐuwÔaxˆö	Eð	2Ø,ð	2àð	2ð ð	2ð ÷		2ò 	2ðB ˆØˆ
ä×+Ñ+©OÓ,=Ó>ˆä�_‰_Ü"Ø—]‘]Ø—*‘*Øô	
ñ 	ð —*‘*“,×Ð÷	ð ×Ñð ø÷	ð 	úð 	ús<   ‰B(C-Â1CÃCÃCÃ
C-ÃC+ÃC-ÃCÃC(Ã$C-rW   )r   zUnion[Callable[[], bool], None])r*   zmUnion[_legacy_response.HttpxBinaryResponseContent, AsyncStreamedBinaryAPIResponse, StreamedBinaryAPIResponse]Úreturnr1   )rP   z�Union[npt.NDArray[np.int16], npt.NDArray[np.float32], _legacy_response.HttpxBinaryResponseContent, AsyncStreamedBinaryAPIResponse, StreamedBinaryAPIResponse]rm   ÚNone)r\   zQAsyncGenerator[Union[npt.NDArray[np.float32], npt.NDArray[np.int16], None], None]rm   rn   )Ú__name__Ú
__module__Ú__qualname__r   r/   rR   rl   © r   r   r   r      s^   „ ð 8<ð'à4ó'ðð
ðð 
!óð21ð
ð1ð 
ó1ðf=àhð=ð 
ô=r   r   )Ú
__future__r   ra   rI   Útypingr   r   r   r   r   Útyping_extensionsr	   Ú r   Ú_extrasr   r   r   r7   Ú	_responser   r   Únumpy.typingÚnptrM   r   rr   r   r   ú<module>r{      s7   ðå "ã Û ß =Õ =Ý +å ß 4ß QáÝà€÷Rò Rr   