o
    i                     @   sD   d dl Z d dlZd dlZd dlZG dd deZG dd deZdS )    Nc                   @   s6   e Zd Z							dddZdd	 Zdd
dZdS )CMVNTFmatN#B;c	                 C   sF  || _ || _|| _|| _t|trt|}	n;|dkr"d t|i}	n/|dkr.d t	|i}	n#|dkr=d| _
tt|}	n|dkrJd| _
t|}	ntd||d uri | _tj|ddd	}
|
D ]}| d d
\}}|| j|< qcW d    n1 sw   Y  n>|d uri | _tj|ddd	#}
|
D ]}| d d
\}}| D ]}|| j|< qqW d    n1 sw   Y  nd | _i | _i | _|	 D ]S\}}t|dksJ |j|d }t|st|ttfs| d }|dd df | }|d
d df | ||  }tt||}| | j|< d
| | j|< qd S )Nr   npyarkThdf5zNot supporting filetype={}rzutf-8)encoding      )r   r   r   ) 
stats_file
norm_means	norm_varsreverse
isinstancedictkaldiioload_matnploadaccept_uttidload_arkh5pyFile
ValueErrorformatutt2spkioopenrstripsplitbiasscaleitemslenshapeisscalarintfloatflattenmaximumsqrt)selfstatsr   r   filetyper   spk2uttr   	std_floor
stats_dictflineuttspkuttscountmeanvarstd r<   I/home/ubuntu/.local/lib/python3.10/site-packages/espnet/transform/cmvn.py__init__	   sf   

zCMVN.__init__c                 C   s    dj | jj| j| j| j| jdS )Nzb{name}(stats_file={stats_file}, norm_means={norm_means}, norm_vars={norm_vars}, reverse={reverse}))namer   r   r   r   )r   	__class____name__r   r   r   r   r-   r<   r<   r=   __repr__T   s   zCMVN.__repr__c                 C   s   | j d ur| j | }n|}| js*| jrt|| j| }| jr(t|| j| }|S | jr6t	|| j| }| jrBt
|| j| }|S N)r   r   r   r   addr"   r   multiplyr#   dividesubtract)r-   xuttidr6   r<   r<   r=   __call__a   s   
zCMVN.__call__)TFr   NNFr   rD   rA   
__module____qualname__r>   rC   rK   r<   r<   r<   r=   r      s    
Kr   c                   @   s(   e Zd ZdddZdd Zdd	d
ZdS )UtteranceCMVNTFr   c                 C   s   || _ || _|| _d S rD   )r   r   r1   )r-   r   r   r1   r<   r<   r=   r>   w   s   
zUtteranceCMVN.__init__c                 C   s   dj | jj| j| jdS )Nz6{name}(norm_means={norm_means}, norm_vars={norm_vars}))r?   r   r   )r   r@   rA   r   r   rB   r<   r<   r=   rC   |   s
   zUtteranceCMVN.__repr__Nc                 C   sn   |d j dd}|jdd}| jrt||}| jr5||jd  |d  }tt|| j	}t
||}|S )Nr   r   )axis)sumr9   r   r   rH   r   r&   r+   r,   r1   rG   )r-   rI   rJ   square_sumsr9   r:   r;   r<   r<   r=   rK      s   zUtteranceCMVN.__call__)TFr   rD   rL   r<   r<   r<   r=   rO   v   s    
rO   )r   r   r   numpyr   objectr   rO   r<   r<   r<   r=   <module>   s    n