o
    ߥi                     @   sd   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
 eje
ejdG dd deZd	S )
    )Dict)Metrics)Metric)METRICS
MetricKeys)default_group)	group_keymodule_namec                   @   sL   e Zd ZdZdd ZdedefddZdd	 ZdddZdd Z	dd Z
dS )AudioNoiseMetriczK
    The metric computation class for acoustic noise suppression task.
    c                 C   s   g | _ g | _g | _g | _d S Nlossamp_loss
phase_losssisnrself r   Y/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/metrics/audio_noise_metric.py__init__   s   
zAudioNoiseMetric.__init__outputsinputsc                 C   s\   | j |d j  | j|d j  | j|d j  | j|d j  d S )Nr   r   r   r   )r   appenddatacpur   r   r   )r   r   r   r   r   r   add   s   zAudioNoiseMetric.addc                 C   s   t | jt| j }t | jt| j }t | jt| j }t | jt| j }|| | | }d| d|  tj| iS )N
total_loss	avg_sisnr)	sumr   lenr   r   r   itemr   AVERAGE_LOSS)r   avg_lossr   avg_amp	avg_phaser   r   r   r   evaluate   s   

zAudioNoiseMetric.evaluateotherc                 C   s<   | j |j  | j|j | j|j | j|j d S r   )r   extendr   r   r   )r   r&   r   r   r   merge,   s   zAudioNoiseMetric.mergec                 C   s   | j | j| j| jfS r   r   r   r   r   r   __getstate__2   s   zAudioNoiseMetric.__getstate__c                 C   s   |\| _ | _| _| _d S r   r   )r   stater   r   r   __setstate__5   s   zAudioNoiseMetric.__setstate__N)r&   r
   )__name__
__module____qualname____doc__r   r   r   r%   r(   r)   r+   r   r   r   r   r
      s    
r
   N)typingr   modelscope.metainfor   modelscope.metrics.baser   modelscope.metrics.builderr   r   modelscope.utils.registryr   register_moduleaudio_noise_metricr
   r   r   r   r   <module>   s   