o
    ߥi*                     @   sX   d dl Z d dlZd dlZd dlmZ dd Zdd Zdd ZG dd	 d	ej	e j
d
ZdS )    Nc                 C   s`   t d| | }|d u rd S | | d  } t d| }|d u r"d S | | d  | d fS )Nz^\s*z^\s*(-?\d+\.?\d*e?-?\d*?)r   )rematchendgroups)instrtokenfirst_tokenlr r
   a/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/audio/aec/layers/layer_base.pyexpect_token_number
   s   r   c                 C   sx   |  dd}|  d|}g }| |d | dD ]}tj|tjdd}|jdkr.|| q| |d d  t|fS )N[r   ]   
 )dtypesep)findsplitnp
fromstringfloat32sizeappendarray)r   pos2pos3matstttmp_matr
   r
   r   expect_kaldi_matrix   s   

r!   c                 C   s<   t jt jt jdd t| }|dd}|dd}d| S )z}
    function that transform as str numpy mat to standard kaldi str matrix
    :param np_mat: numpy mat
    :return: str
    T)	threshold	linewidthsuppressr    r   z[ %s ]
)r   set_printoptionsinfnanstrreplace)np_matout_strr
   r
   r   to_kaldi_matrix    s
   r-   c                       s*   e Zd Z fddZejdd Z  ZS )	LayerBasec                    s   t t|   d S N)superr.   __init__self	__class__r
   r   r1   /   s   zLayerBase.__init__c                 C   s   d S r/   r
   r2   r
   r
   r   to_kaldi_nnet2   s   zLayerBase.to_kaldi_nnet)__name__
__module____qualname__r1   abcabstractmethodr6   __classcell__r
   r
   r4   r   r.   -   s    r.   )	metaclass)r:   r   numpyr   torch.nnnnr   r!   r-   ModuleABCMetar.   r
   r
   r
   r   <module>   s   