o
    i	                     @   s   d dl Z d dlZd dlZd dlZd dlmZ dejdfddZ	dd Z
		dd	ejd
ejdededef
ddZdd Zdd ZG dd dejZdddZedkrld dlZejd Zejd Zejd Zeeee dS dS )    N)
functionalc                 C   sf   |d u r|   }td|d| j}tj| dd}||k }| }|d ur.|||S ||S )Nr      )dim)maxtorcharangetodevice	unsqueezedetachtype)lengthsmaxlendtyper
   
row_vectormatrixmask r   M/home/ubuntu/.local/lib/python3.10/site-packages/funasr/models/scama/utils.pysequence_mask   s   "r   c                 C   s   | j }| j}| j\}}t|ddd |f |df}t|ddd |f |df}| t|||8 } | t|||9 } | tj	S )Nr   r      )
r
   r   shapenptiler   
from_numpyr   r	   float32)inputsmvnr
   r   framer   meamsvarsr   r   r   
apply_cmvn   s   
  r"   皙?      ?r   outputstrainingdropout_ratestoch_layer_coeffc                 C   sB   t j|||dd}||9 }| d}|d}||kr|| 7 }|S )NT)pr&   inplacer   )Fdropoutsize)r   r%   r&   r'   r(   	input_dim
output_dimr   r   r   drop_and_add   s   

r0   c                 C   sb   t | dd!}dd |D }d|vr|d W d    |S W d    |S 1 s*w   Y  |S )Nutf-8encodingc                 S   s   g | ]}|  qS r   )rstrip).0liner   r   r   
<listcomp>4   s    z!proc_tf_vocab.<locals>.<listcomp>z<unk>)openappend)
vocab_pathf
token_listr   r   r   proc_tf_vocab2   s   

r=   c                 C   s   t |}t| dd}t|}W d    n1 sw   Y  ||d< tj|s.t| ttj|dddd}t	||ddd W d    d S 1 sNw   Y  d S )	Nr1   r2   r<   zconfig.yamlw   F)indent	sort_keys)
r=   r8   yaml	safe_loadospathexistsmakedirsjoinyaml_no_alias_safe_dump)config_pathr:   
output_dirr<   r;   configr   r   r   gen_config_for_tfmodel:   s   
"rM   c                   @   s   e Zd Zdd ZdS )NoAliasSafeDumperc                 C   s   dS )NTr   )selfdatar   r   r   ignore_aliasesJ   s   z NoAliasSafeDumper.ignore_aliasesN)__name__
__module____qualname__rQ   r   r   r   r   rN   H   s    rN   c                 K   s   t j| |fdtd|S )z&Safe-dump in yaml with no anchor/aliasT)allow_unicodeDumper)rB   dumprN   )rP   streamkwargsr   r   r   rI   N   s   rI   __main__r   r      )r#   r$   )N)rD   rB   r   numpyr   torch.nnr   r+   r   r   r"   Tensorboolfloatr0   r=   rM   
SafeDumperrN   rI   rR   sysargvrJ   r:   rK   r   r   r   r   <module>   s>    




