
    9i                         S SK r S SKJrJrJrJ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	/r\R$                  " \R&                  \R(                  S
9 " S S	\5      5       rg)    N)AnyDictListUnion)Preprocessors)Model)Fields   )Preprocessor)PREPROCESSORS
WavToLists)module_namec                       \ rS rSrSrS rS\S\\\	   \	\
4   S\\	\4   4S jrS\\	\4   S\\\	   \	\
4   S\\	\4   4S jrS	\\	\4   S\\	\4   4S
 jrS	\\	\4   S\\	\4   4S jrSrg)r      z'generate audio lists file from wav
    c                     g )N )selfs    \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/preprocessors/kws.py__init__WavToLists.__init__   s        modelaudio_inreturnc                 f    Xl         U R                  U R                   R                  5       U5      nU$ )aW  Call functions to load model and wav.

Args:
    model (Model): model should be provided
    audio_in (Union[List[str], str, bytes]):
        audio_in[0] is positive wav path, audio_in[1] is negative wav path;
        audio_in (str) is positive wav path;
        audio_in (bytes) is audio pcm data;
Returns:
    Dict[str, Any]: the kws result
)r   forward)r   r   r   outs       r   __call__WavToLists.__call__   s+     
ll4::--/:
r   c                    [        US   5      S:  d   S5       e[        R                  R                  US   5      (       d   S5       eUR	                  5       nSS KnUR                  R                  U5      nUS;   d   SU S35       eXSS'   US	:X  a  X#S
'   O
US:X  a  X#S'   US;   a  US   US
'   US;   a  US   US'   U R                  U5      nU R                  U5      nU$ )Nconfig_pathr   z&preprocess model[config_path] is emptyzmodel config.yaml is absent)wavpcmpos_testsetsneg_testsetsrocz	kws_type z$ is invalid, please check audio datakws_typer"   pos_wav_pathr#   pos_datar$   r&   r%   r&   r
   neg_wav_path)
lenospathexistscopykws_util.commoncommontype_checkingread_configgenerate_wav_lists)r   r   r   inputskws_utilr'   r   s          r   r   WavToLists.forward,   s+   - "$%& 	P'O	P &ww~~- " " 	A#@	A " ??00: 
 
 	Fxj DE	F 
 &zu%->"!):..%-a[F>"..%-a[F>"v&%%c*
r   r7   c                    [         R                  R                  US   5      (       d   S5       e[        US   SS9n[        R
                  " U5      nUR                  5         US   US'   [         R                  R                  US   US   5      US'   US   US'   [         R                  R                  US   US   5      US	'   US
   US
'   U$ )z:read and parse config.yaml to get all model files
        r!   z%model config yaml file does not existzutf-8)encodingcfg_filemodel_workspacecfg_file_pathkeyword_grammarkeyword_grammar_pathsample_rate)r.   r/   r0   openyaml	full_loadclosejoin)r   r7   config_fileroots       r   r5   WavToLists.read_configJ   s     ww~~=!# # 	L$K	L # 6-07C~~k*!*-z"$'',,v6G/H/3J/?#A$():$; !)+$%t,='>*@%& $] 3}r   c                    SSK nUS   S:X  a&  / nUS   nUR                  U5        X1S'   SUS'   SUS	'   US   S
:X  a  S/US'   SUS'   SUS	'   US   S;   aE  / nUS   nUR                  R                  X55      nX1S'   [	        U5      nXaS'   US::  a  XaS	'   OSUS	'   US   S;   aF  / nUS   nUR                  R                  X55      nX1S'   [	        U5      nXaS'   US::  a  XaS'   U$ SUS'   U$ )zassemble wav lists
        r   Nr'   r"   r(   pos_wav_listr
   pos_wav_countpos_num_threadr#   pcm_datar*      r+   r,   neg_wav_listneg_wav_countneg_num_thread)r2   appendr3   recursion_dir_all_wavr-   )r   r7   r8   wav_listwave_scp_contentwav_dir
list_counts          r   r6   WavToLists.generate_wav_lists_   sV    	*&H$*>$:OO,-%->"&'F?#'(F#$*&&0\F>"&'F?#'(F#$*!88H^,G<<XOH%->"!(mJ&0?#S +5'(+.'(*!88H^,G<<XOH%->"!(mJ&0?#S +5'(  ,/'(r   )r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r   strbytesr   r   r   r   r5   r6   __static_attributes__r   r   r   r   r      s    e uT#Y5:6; 0< @DS#X$T#s(^ S	3 56;?S><$sCx. T#s(^ *0c3h 0DcN 0r   )r.   typingr   r   r   r   rC   modelscope.metainfor   modelscope.models.baser   modelscope.utils.constantr	   baser   builderr   __all__register_moduleaudiowav_to_listsr   r   r   r   <module>rl      sa    
 ) )  - ( ,  ". 
LLm88:| |:|r   