
    vj                         d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZ d Zd Zi Zi Z G d dej                  Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    N)BytesIO)TASK_OUTPUTS
OutputKeys)TASK_INPUTS	InputTypec                     t          j        |           }t          |                    d                    |                    d          d}|S )Nimagetextr	   r
   )jsonloadsdecode_base64_to_imageget)data	data_jsoninputss      n/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/modelscope/utils/service_utils.pyExampleDecoderr      sN     
4  I
 (	g(>(>??f%% F M    c                 |    | d         }| d         }t          |          |d} t          j        | t                    S )Nr	   r
   r   cls)encode_array_to_img_base64r   dumpsNumpyEncoder)r   r	   r
   s      r   ExampleEncoderr      s@    
 ME<D/66EED:d----r   c                       e Zd Zd ZdS )r   c                 B   t          |t          j                  r|                                S t          |t          j                  rt          |          S t          |t          j                  rt          |          S t          j	        
                    | |          S N)
isinstancenpndarraytolistfloatingfloatintegerintr   JSONEncoderdefault)selfobjs     r   r)   zNumpyEncoder.default5   s|    c2:&& 	 ::<<c2;'' 	::c2:&& 	s88O''c222r   N)__name__
__module____qualname__r)    r   r   r   r   3   s#        
3 
3 
3 
3 
3r   r   c                     |                      dd          } t          j        |           d         }|dk    rdS t          j        |          }||                    d          r
|dd          }|S )Nz	audio/wavzaudio/x-wavr   z
audio/flacflac.   )replace	mimetypes
guess_typeguess_extension
startswith)encodingtp	extensions      r   get_extensionr<   B   sx    ];;H		h	'	'	*B	\v)"--I!5!5c!:!:abbM	r   c                     t          j        |           d         }|*|                    dd                              dd          }|S )Nr   zx-wavwavzx-flacr1   )r5   r6   r4   )filenamemimetypes     r   get_mimetyperA   M   sG    #H--a0H##GU33;;HfMMOr   c                     t          |           }|                     d          d         }t          j        |          |fS )N,r3   )r<   splitbase64	b64decode)r9   r;   r   s      r   decode_base64_to_binaryrG   T   s;    h''I>>#q!DD!!9,,r   c                     ddl m} |                     d          d         }|                    d          d         }|                    t	          t          j        |                              S )Nr   Image;r3   rC   )PILrJ   rD   openr   rE   rF   )r9   rJ   contentimage_encodeds       r   r   r   Z   se    nnS!!!$GMM#&&q)M::gf.}==>>???r   c                 `   ddl m} t                      5 }|                    |                     t
          j                            }|                    |d           |                                }d d d            n# 1 swxY w Y   t          t          j        |          d          }d|z   S )Nr   rI   PNGutf-8zdata:image/png;base64,)rL   rJ   r   	fromarrayastyper!   uint8savegetvaluestrrE   	b64encode)image_arrayrJ   output_bytes	pil_image
bytes_data
base64_strs         r   r   r   a   s    	 -lOOK$6$6rx$@$@AA	|U+++!**,,
- - - - - - - - - - - - - - - V%j117;;J#j00s   AA>>BBc                     ddl m} t                      5 } ||d|            t          t	          j        |                                          d          }d d d            n# 1 swxY w Y   d|z   S )Nr   )writei>  rR   zdata:audio/pcm;base64,)scipy.io.wavfiler`   r   rX   rE   rY   rW   )r]   r`   out_mem_filer^   s       r   encode_pcm_to_base64rc   k   s    &&&&&&	 MllE:...),*?*?*A*ABBGLL
M M M M M M M M M M M M M M M $j00s   AA##A'*A'c                     t          j        t          j        |           j                  }t          |d          }t          |           }d||ndz   dz   |z   S )NrR   data: ;base64,)rE   rY   requestsr   rN   rX   rA   )urlencoded_stringr^   r@   s       r   encode_url_to_base64rk   s   s^    %hl3&7&7&?@@N^W--JC  H8#7xxR@:M r   c                     t          | d          5 }t          j        |                                          }t	          |d          }t          |           }d||ndz   dz   |z   cd d d            S # 1 swxY w Y   d S )NrbrR   re   rf   rg   )rM   rE   rY   readrX   rA   )ffilerj   r^   r@   s        r   encode_file_to_base64rq   {   s    	a +$)$))++6611
??x';88D)*	+ + + + + + + + + + + + + + + + + +s   AA22A69A6c                     	 t          j        |            t          |           S # t           j        j        t           j        j        f$ r t          |           cY S w xY wr   )rh   r   rk   
exceptionsMissingSchemaInvalidSchemarq   )paths    r   encode_url_or_file_to_base64rw      sh    +T#D)))--/ + + +$T*****+s   "% 4AAc                    t                               |           t          |          |          S |                    d          }t          |          }t	          |t
                    r|d         }|t          j        k    rt          |          S |t          j	        k    rt          |          d         S |t          j        k    r|S t	          |t                    ri }t          j        |          }|                                D ]|\  }}|t          j        k    rt          ||                   ||<   .|t          j	        k    rt          ||                   d         ||<   ]|t          j        k    r||         ||<   y|c S |S )NrR   r   )CustomDecoderr   decoder   r    listr   IMAGEr   AUDIOrG   TEXTdictr   r   items)taskr   
input_data
input_typekeyvals         r   service_data_decoderr      sj   *T"4(((W%%JT"J*d## #]
Y_$$%j111	y	&	&&z22155	y~	%	%	J	%	% 
z$"((** 	 	HCio%%"8c"C"C
3	''"9$s)"D"DQ"G
3	&&"&s)
3r   c                    t                               |           t          |          |          S t          |          }|}|D ]}|t          j        k    r8t          |t          j                 dd d df                   |t          j        <   J|t          j        k    r,t          |t          j                           |t          j        <   t          t          j
        |t                    d          }|S )N.r   utf8)r9   )CustomEncoderr   r   r   
OUTPUT_IMGr   
OUTPUT_PCMrc   bytesr   r   r   )r   r   output_keysresult
output_keys        r   service_data_encoderr      s    *T"4(((t$KF! - -
...,FZ*+C2I6-8 -8F:()):000,@Z*+-- --F:()4:f,777&IIIFMr   )rE   r5   ior   r   numpyr!   rh   modelscope.outputsr   r   modelscope.pipeline_inputsr   r   r   r   r   ry   r(   r   r<   rA   rG   r   r   rc   rk   rq   rw   r   r   r/   r   r   <module>r      s                    7 7 7 7 7 7 7 7 = = = = = = = =
   . . .
3 3 3 3 34# 3 3 3    - - -@ @ @1 1 11 1 1  + + ++ + +  :    r   