o
    *jQ                     @   sp   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 e ZejejdG dd	 d	eZd
S )    )Trainers)EpochBasedTrainer)TRAINERS)TrainerStages)	to_device)
get_logger)module_namec                       s0   e Zd ZdZ fddZdd Zdd Z  ZS )
ANSTrainerzs
    A trainer is used for acoustic noise suppression.
    Override train_loop() to use dataset just one time.
    c                    s   t  j|i | d S N)super__init__)selfargskwargs	__class__ f/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/trainers/audio/ans_trainer.pyr      s   zANSTrainer.__init__c                 C   s   |  tj d| _i }| j  t|}t| j| jD ]W}|  tj	 d| _
|D ]<\}}t|| j}|| _|  j
d7  _
|  tj | j| j|fi | |  tj | `|  jd7  _| j
| jkrd nq(|  tj |  jd7  _q|  tj dS )zE
        Update epoch by step number, based on super method.
        r      N)Zinvoke_hookr   Z
before_run_epochmodeltrain	enumeraterangeZ_max_epochsZbefore_train_epochZ_inner_iterr   Zdevice
data_batchZbefore_train_iterZ
train_stepZafter_train_iterZ_iterZiters_per_epochZafter_train_epochZ	after_run)r   Zdata_loaderr   Z
enumerated_ir   r   r   r   
train_loop   s.   
zANSTrainer.train_loopc                 C   s   d S r
   r   )r   r   Zinputsr   r   r   prediction_step3   s   zANSTrainer.prediction_step)__name__
__module____qualname____doc__r   r   r   __classcell__r   r   r   r   r	      s
    r	   N)Zmodelscope.metainfor   Zmodelscope.trainersr   Zmodelscope.trainers.builderr   Zmodelscope.utils.constantr   Zmodelscope.utils.data_utilsr   Zmodelscope.utils.loggerr   loggerZregister_moduleZspeech_frcrn_ans_cirm_16kr	   r   r   r   r   <module>   s   