
    riN                     8    S r SSKrSSKrSSKJr   " S S5      rg)zAudio playback using ffplay.    N)Optionalc                   `    \ rS rSrSrS\SS4S jrS rS rS	\	SS4S
 jr
\S\4S j5       rSrg)AudioPlayer   Plays raw audio using ffplay.sample_ratereturnNc                     Xl         SU l        g)zInitializes audio player.N)r   _proc)selfr   s     Z/home/kim/smarthome/piper_models/venv/lib/python3.13/site-packages/piper/audio_playback.py__init__AudioPlayer.__init__   s    &15
    c                     [         R                  " SSSSSS[        U R                  5      SSS	/
[         R                  [         R
                  [         R
                  S
9U l        U $ )z,Starts ffplay subprocess and returns player.ffplayz-nodispz	-autoexitz-fs16lez-sample_ratez
-ch_layoutmono-)stdinstdoutstderr)
subprocessPopenstrr   PIPEDEVNULLr   )r   s    r   	__enter__AudioPlayer.__enter__   sd    %%D$$% //%%%%

" r   c                     U R                   (       aZ   U R                   R                  (       a$  U R                   R                  R                  5         U R                   R	                  SS9  gg! [         a     N'f = f)zStops ffplay subprocess.   )timeoutN)r   r   close	Exceptionwait)r   exc_typeexc_valexc_tbs       r   __exit__AudioPlayer.__exit__%   s^    ::::##JJ$$**, JJOOAO&   s   ?A- -
A:9A:audio_bytesc                     U R                   c   eU R                   R                  c   eU R                   R                  R                  U5        U R                   R                  R                  5         g)r   N)r   r   writeflush)r   r+   s     r   playAudioPlayer.play/   sV    zz%%%zz+++

{+

 r   c                  @    [        [        R                  " S5      5      $ )z$Returns true if ffplay is available.r   )boolshutilwhich r   r   is_availableAudioPlayer.is_available7   s     FLL*++r   )r   r   )__name__
__module____qualname____firstlineno____doc__intr   r   r)   bytesr/   staticmethodr2   r6   __static_attributes__r5   r   r   r   r      sP    '6C 6D 6
*'! !$ ! ,$ , ,r   r   )r<   r3   r   typingr   r   r5   r   r   <module>rB      s    "   2, 2,r   