o
    *jl                     @   s   d dl Z d dlmZmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ e ZdgZejejejdG dd deZdS )    N)AnyDictListUnion)	Pipelines)Model)Pipeline)	PIPELINES)
WavToLists)extract_pcm_from_wavload_bytes_from_url)Tasks)
get_loggerKeyWordSpottingKwsbpPipeline)module_namec                       s   e Zd ZdZ		ddeeef def fddZdee	e ee
f deeef fd	d
Zdeeef deeef fddZdeeef deeef fddZdeeef deeef fddZ  ZS )r   z.KWS Pipeline - key word spotting decoding
    Nmodelpreprocessorc                    s   t  jd||d| dS )zOuse `model` and `preprocessor` to create a kws pipeline for prediction
        )r   r   N )super__init__)selfr   r   kwargs	__class__r   n/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/pipelines/audio/kws_kwsbp_pipeline.pyr      s   z%KeyWordSpottingKwsbpPipeline.__init__audio_inreturnc                 K   s   d|  v r#|d | _t| jtr"g }i }| j|d< || || _nd | _| jd u r/t | _t|tr;t|\}}nt|trFt	|\}}| j
| j
d |}| 
|}| |}|S )Nkeywordskeyword)keysr   
isinstancestrappendr   r
   r   bytesr   forwardr   postprocess)r   r   r   Z	word_listwordZaudio_fsoutputrstr   r   r   __call__$   s(   







z%KeyWordSpottingKwsbpPipeline.__call__inputsc                 C   s$   t d|d  d | |}|S )zDecoding
        zDecoding with kws_typez	 mode ...)loggerinforun_with_kwsbp)r   r*   outr   r   r   r$   A   s   
z$KeyWordSpottingKwsbpPipeline.forwardc                 C   sZ   ddl }d}d}d|v r|d }d|v r|d }|jj|d ||d}d|vr+g |d< |S )u  process the kws results

        Args:
          inputs['pos_kws_list'] or inputs['neg_kws_list']:
          result_dict format example:
            [{
              'confidence': 0.9903678297996521,
              'filename': 'data/test/audios/kws_xiaoyunxiaoyun.wav',
              'keyword': '小云小云',
              'offset': 5.760000228881836,  # second
              'rtf_time': 66,               # millisecond
              'threshold': 0,
              'wav_time': 9.1329375         # second
            }]
        r   Npos_kws_listneg_kws_listr+   )r+   Zpos_listZneg_listkws_list)kws_util.commoncommonZparsing_kws_result)r   r*   kws_utilr1   r0   Zrst_dictr   r   r   r%   L   s   z(KeyWordSpottingKwsbpPipeline.postprocessc           	      C   sf  dd l }dd l}| }|d |d |d dd dd|j| jd}|d d	kr:|d
 |d< t|d
 |d< d|d< |d dkrKtj	|d d|d< |d dv r|d |d< |d |d< |d |d< t
|dr||d |d |d tt|d t|d |d |d |d |d |d 
}n ||d |d |d tt|d t|d |d |d }t|}|d |d< |d dv r1|d |d< |d |d< |d |d< t
|dr||d |d |d tt|d t|d |d |d |d |d |d 
}n ||d |d |d tt|d t|d |d |d }t|}|d |d < |S )!Nr   Zmodel_workspaceZcfg_file_pathsample_rate T)sys_dircfg_filer6   Zkeyword_custompcm_datapcm_data_len	list_flagcustomized_keywordsr+   pcmZpos_datar:   r;   Fr<   roczkeywords_roc.jsonZkeyword_grammar_path)Zwavr>   Zpos_testsetsr?   Zpos_wav_listZwave_scpZpos_num_threadZ
num_threadinference_newr8   r9   r=   r2   r0   )Zneg_testsetsr?   Zneg_wav_listZneg_num_threadr1   )kwsbpr3   ZKwsbpEnginer4   Zgenerate_customized_keywordsr   lenospathjoinhasattrr@   r!   jsondumpsZ	inferenceloads)	r   r*   rA   r5   Zkws_inferencecmdresultZ
pos_resultZ
neg_resultr   r   r   r.   o   s   
	
	
z+KeyWordSpottingKwsbpPipeline.run_with_kwsbp)NN)__name__
__module____qualname____doc__r   r   r!   r
   r   r   r#   r   r   r)   r$   r%   r.   __classcell__r   r   r   r   r      s    


""*#)rC   typingr   r   r   r   rG   Zmodelscope.metainfor   Zmodelscope.modelsr   Zmodelscope.pipelines.baser   Zmodelscope.pipelines.builderr	   Zmodelscope.preprocessorsr
   Z"modelscope.utils.audio.audio_utilsr   r   Zmodelscope.utils.constantr   Zmodelscope.utils.loggerr   r,   __all__Zregister_moduleZkeyword_spottingZ	kws_kwsbpr   r   r   r   r   <module>   s"   