o
    
۾i
                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
mZ d dlmZ ddlmZ zd dlZW n eyC   edZY nw zd dlZW n eyW   ed	ZY nw G d
d deeejef  ZG dd dee	j ZdS )    N)BytesIO)Path)PlaceholderModuletensor2base64   )MediaIOlibrosa	soundfilec                       s   e Zd Zd fddZdedeejef fddZ	de
de
deejef fd	d
Zdedeejef fddZdddeejef de
de
fddZ  ZS )AudioMediaIOreturnNc                    s   t    || _d S N)super__init__kwargs)selfr   	__class__ O/home/ubuntu/.local/lib/python3.10/site-packages/vllm/multimodal/media/audio.pyr      s   

zAudioMediaIO.__init__datac                 C   s   t jt|d dS N)sr)r	   loadr   )r   r   r   r   r   
load_bytes&   s   zAudioMediaIO.load_bytes
media_typec                 C   s   |  t|S r   )r   base64	b64decoder   r   r   r   r   r   load_base64)   s   zAudioMediaIO.load_base64filepathc                 C   s   t j|d dS r   )r	   r   )r   r    r   r   r   	load_file0      zAudioMediaIO.load_fileWAV)audio_formatmediar$   c                C   sX   |\}}t  }tj||||d | }W d    n1 sw   Y  t|dS )N)formatzutf-8)r   r
   writegetvaluer   	b64encodedecode)r   r%   r$   audior   bufferr   r   r   r   encode_base643   s   
zAudioMediaIO.encode_base64r   N)__name__
__module____qualname__r   bytestuplenptNDArrayfloatr   strr   r   r!   intr-   __classcell__r   r   r   r   r      s&    

r   c                       sr   e Zd Zd fddZdedejfddZdededejfd	d
Z	de
dejfddZdejdefddZ  ZS )AudioEmbeddingMediaIOr   Nc                    s   t    d S r   )r   r   )r   r   r   r   r   C   r"   zAudioEmbeddingMediaIO.__init__r   c                 C   sL   t |}tj  tj|dd}| W  d    S 1 sw   Y  d S NT)weights_only)r   torchsparsecheck_sparse_tensor_invariantsr   to_dense)r   r   r,   tensorr   r   r   r   F   s
   $z AudioEmbeddingMediaIO.load_bytesr   c                 C   s   |  tj|ddS )NT)validate)r   pybase64r   r   r   r   r   r   N   s   z!AudioEmbeddingMediaIO.load_base64r    c                 C   sD   t j  t j|dd}| W  d    S 1 sw   Y  d S r;   )r=   r>   r?   r   r@   )r   r    rA   r   r   r   r!   Q   s   $zAudioEmbeddingMediaIO.load_filer%   c                 C   s   t |S r   r   )r   r%   r   r   r   r-   X   s   z#AudioEmbeddingMediaIO.encode_base64r.   )r/   r0   r1   r   r2   r=   Tensorr   r7   r   r   r!   r-   r9   r   r   r   r   r:   B   s    r:   )r   ior   pathlibr   numpy.typingtypingr4   rC   r=   vllm.utils.import_utilsr   vllm.utils.serial_utilsr   baser   r	   ImportErrorr
   r3   r5   r6   r   rD   r:   r   r   r   r   <module>   s*   '