o
    پik	                     @   sD   d dl Z d dlmZ d dlmZ d dlmZmZ G dd deZdS )    N)Modality)"Qwen2AudioForConditionalGeneration)BaseMultimodalProcessorMultimodalSpecialTokensc                       s*   e Zd ZegZ fddZdd Z  ZS )Qwen2AudioMultimodalProcessorc                    s   t  j|||g|R i | d| _td| _| jj}|d| _	|d| _
|d| _t| j| j| j
d|| _| jdtji d S )Nz#<|audio_bos|><|AUDIO|><|audio_eos|>z.<\|audio_bos\|>(?:<\|AUDIO\|>)+<\|audio_eos\|>z<|audio_bos|>z	<|AUDIO|>z<|audio_eos|>)audio_tokenaudio_token_regexaudio_token_idfeature_attention_mask)super__init__AUDIO_TOKENrecompileAUDIO_TOKEN_REGEX
_processor	tokenizerconvert_tokens_to_idsaudio_start_idr	   audio_end_idr   build	mm_tokensATTR_NAME_TO_MODALITYupdater   AUDIO)self	hf_configserver_argsr   argskwargsr   	__class__ _/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/multimodal/processors/qwen_audio.pyr      s"   z&Qwen2AudioMultimodalProcessor.__init__c           
         s   | j ||| jd}|d u rd S | || j\}}}d|v s"J d|d jdd}|d d d }|d d d }	|	|d _|| | j| j| jd	S )
N)prompt
audio_datamultimodal_tokensr
   z4feature_attention_mask not found in processor output)dim      r   )mm_items	input_idsr   r	   r   )	load_mm_datar   process_and_combine_mm_datasumaudio_feature_lenstolistr   r	   r   )
r   r%   
input_textr   base_outputr+   r,   retinput_lengthsoutput_lengthsr"   r"   r#   process_mm_data_async"   s0   


z3Qwen2AudioMultimodalProcessor.process_mm_data_async)__name__
__module____qualname__r   modelsr   r7   __classcell__r"   r"   r    r#   r      s    r   )	r   "sglang.srt.managers.schedule_batchr   sglang.srt.models.qwen2_audior   /sglang.srt.multimodal.processors.base_processorr   r   r   r"   r"   r"   r#   <module>   s
    