
    9iE!                     &   S SK r S SKrS SKJrJrJrJrJrJr  S SK	r
S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJrJr  S S	KJrJr  S S
KJr  \" 5       rS/r\R@                  " \RB                  \RD                  S9 " S S\5      5       r#g)    N)AnyDictListSequenceTupleUnion)	Pipelines)Model)
OutputKeys)Pipeline)	PIPELINES)generate_scp_from_urlupdate_local_model)
FrameworksTasks)
get_loggerAudioQuantizationPipeline)module_namec                      ^  \ rS rSrSr  SS\\\4   S\4U 4S jjjr	   SS\\
\\4   S\S\S	\\\4   4S
 jjrS\S	\\\4   4S jrS	\\\4   4S jrSS\\
\\4   S	\4S jjrS rSrU =r$ )r      a  Audio Quantization Inference Pipeline
use `model` to create a audio quantization pipeline.

Args:
    model (AudioQuantizationPipeline): A model instance, or a model local dir, or a model id in the model hub.
    kwargs (dict, `optional`):
        Extra kwargs passed into the preprocessor's constructor.
Examples:
    >>> from modelscope.pipelines import pipeline
    >>> from modelscope.utils.constant import Tasks
    >>> pipeline_aq = pipeline(
    >>>    task=Tasks.audio_quantization,
    >>>    model='damo/audio_codec-encodec-zh_en-general-16k-nq32ds640-pytorch'
    >>> )
    >>> audio_in='example.wav'
    >>> print(pipeline_aq(audio_in))

modelngpuc                   > [         TU ]  " SSU0UD6  U R                  R                  5       U l        U R                  X15      U l        SSKJn  UR                  " S0 SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU_S	U R                  S	   _S
U R                  S
   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _SU R                  S   _UD6U l
        g)z=use `model` to create an asr pipeline for prediction
        r   r   )codec_inferencemode
output_dir
batch_sizedtyper   seednum_workers	log_levelkey_fileconfig_file
model_file	model_tagallow_variable_data_keys	streamingsampling_rate	bit_width	use_scale
param_dictN )super__init__r   forward	model_cfgget_cmdcmdfuncodec.binr   inference_modelscopefunasr_infer_modelscope)selfr   r   kwargsr   	__class__s        v/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/audio/audio_quantization_pipeline.pyr.   "AudioQuantizationPipeline.__init__/   s    	/u//++-<<.0'6'K'K (
&!(
xx-(
 xx-(
 ((7#	(

 (
 &!(
 /(
 hh{+(
 XXj)(
 /(
 xx-(
 hh{+(
 &*XX.H%I(
 hh{+(
 ((?3(
  hh{+!(
" hh{+#(
$ xx-'(
$    audio_inr   r+   returnc                     [        U5      S:X  a  [        S5      eXl        Ub  X R                  S'   X0R                  S'   U R	                  U R                  5      nU R                  U5      nU$ )Nr   zThe input should not be null.r   r+   )len
ValueErrorr<   r2   r/   postprocess)r6   r<   r   r+   outputresults         r9   __call__"AudioQuantizationPipeline.__call__P   sf     x=A<==$M!%/HH\"!+dmm,!!&)r;   inputsc                 F   0 n[        [        U5      5       H  n[        U5      S:X  ae  US:X  a_  US   S   nUR                  5       R                  5       S   nUS-  R	                  [
        R                  5      nXR[        R                  '   Mw  X   S   X!U   S   '   M     U$ )zPostprocessing
           r   valuei   key)	ranger?   cpunumpyastypenpint16r   
OUTPUT_WAV)r6   rF   rsti	recon_wav
output_wavs         r9   rA   %AudioQuantizationPipeline.postprocess`   s     s6{#A6{aAF"1Ig.	&]]_224Q7
(E2::288D
-7J))* )/	'(:1Ie$% $ 
r;   c                    U R                   S   S   n[        R                  R                  U R                   S   U R                   S   S   5      n[        R                  R                  U R                   S   U R                   S   S   5      n[	        U R                   S   UU5        0 SU_SS _SS_S	S
_SS_SS_SS_SS_SS _SU_SU_SS _SS_SS_SS_SS_SS_SS 0En/ SQnU H  nXR                   S   ;   d  M  U R                   S   U   c  M,  [        Xh   [        5      (       aJ  [        U R                   S   U   [        5      (       a%  Xh   R                  U R                   S   U   5        M  U R                   S   U   Xh'   M     U Hh  nX;   d  M
  UR                  U5      bJ  [        Xh   [        5      (       a-  [        X   [        5      (       a  Xh   R                  X   5        OX   Xh'   X	 Mj     U$ )Nmodel_configr   model_workspacer$   r#   r   r   rH   r   float32r   r   r   r    r!   ERRORr"   r%   r&   Tr'   Fr(   i>  r)   i@  r*   r+   )r   r   r   r!   r&   r'   r    r(   r)   r*   r+   )	r0   ospathjoinr   
isinstancedictupdateget)	r6   
extra_args
model_pathr   _model_path_model_configr2   user_args_dict	user_argss	            r9   r1   !AudioQuantizationPipeline.get_cmdo   sy   ~~n-f5ggllNN,-NN>*<8: NN,-NN>*=9; 	4>>.9:%	'
D
$
 !
 Y	

 A
 A
 1
 
 
 +
 =
 
 '
 
 U
  !
" #
$ $%
(
 (I^^N;;~6yAMcnd33
~6yA49I 9IN))~6yAC &*^^N%CI%NCN ( (I&>>),8!#.$77J&14=9 =9--j.CD)3)>) ( 
r;   c                    [        U[        5      (       a  [        R                  SU S35        O%[        R                  S[        U5      SS  S35        Su  p#[        U[        5      (       aJ  [	        UR                  S5      5      S:X  a  [        UR                  S5      5      /nOx[        U5      u  pEUnOh[        U[        5      (       a  USS	4nOMS
SK	nS
SK
n[        XR                  5      (       a  UnO([        XR                  5      (       a  UnO[        S5      eX R                  S'   X0R                  S'   U R                  U R                  5      nU$ )zDecoding
        zAudio Quantization Processing: z ...Nd   )NN,   speechbytesr   zUnsupported data type.name_and_type
raw_inputs)r_   strloggerinfor?   splittupler   ro   torchrM   Tensorndarray	TypeErrorr2   run_inference)	r6   r<   data_cmdrq   	audio_scp_rw   rO   rC   s	            r9   r/   !AudioQuantizationPipeline.forward   s(    h$$KK9(4HIKK1#h-2E1FdKM  *h$$8>>#&'1,!(.."567  5X>	&
%(( (G4H (LL11%
Hjj11%
 899$,!!+##DHH-r;   c                     U R                   [        R                  :X  a   U R                  US   US   US   US   S9nU$ [	        S5      e)Nrp   rq   r   r+   )data_path_and_name_and_typerq   output_dir_v2r+   zmodel type is mismatching)	frameworkr   rw   r5   r@   )r6   r2   	sv_results      r9   r{   'AudioQuantizationPipeline.run_inference   s_    >>Z---44,/,@|,!,/|,	 5 .I  899r;   )r<   r2   r5   r0   )NrH   )NNN)N)__name__
__module____qualname____firstlineno____doc__r   r
   rr   intr.   rv   r   r`   r   rD   listrA   r1   r/   r{   __static_attributes____classcell__)r8   s   @r9   r   r      s    ( -1
eSj)

 
D 59#'$( S1  " .2#s(^ $ 4S> Cc3h CJ%eS#o 6 %$ %N
 
r;   )$r\   shutiltypingr   r   r   r   r   r   rM   rO   yamlmodelscope.metainfor	   modelscope.modelsr
   modelscope.outputsr   modelscope.pipelines.baser   modelscope.pipelines.builderr   "modelscope.utils.audio.audio_utilsr   r   modelscope.utils.constantr   r   modelscope.utils.loggerr   rs   __all__register_moduleaudio_quantizationaudio_quantization_inferencer   r,   r;   r9   <module>r      s|    	  : :   ) # ) . 2D 7 .	&
' 	668J J8Jr;   