o
    }oi{3                     @   s   d dl mZmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZmZ d dlmZ dd	 Zd
d ZeG dd dejZeG dd deZG dd dejZdS )    )	dataclassfield)AnyCallableListOptional)MISSING)classification_models_config)AudioToMFCCPreprocessorConfig&CropOrPadSpectrogramAugmentationConfigSpectrogramAugmentationConfig)"ConvASRDecoderClassificationConfigConvASREncoderConfigJasperEncoderConfig)modelPTc               
   C     t d$i ddddddgddgddgd	d
ddddddddddddddddddddddddt d$i ddddddgddgddgd	d
ddddddddddddddddddddddddt d$i dddddd gddgddgd	d
ddddddddddddddddddddddddt d$i dddddd!gddgddgd	d
ddddddddddddddddddddddddt d$i dddddd"gddgdd#gd	d
ddddddddddddddddddddddddt d$i ddddddgddgddgd	d
ddddddddddddddddddddddddg} | S %Nfilters   repeat   kernel   stridedilationdropout        residualFgroups	separableTheadsresidual_modeaddresidual_densesese_reduction_ratio   se_context_sizese_interpolation_modenearestkernel_size_factor      ?stride_last@                   r   configr4   r4   j/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/asr/models/configs/matchboxnet_config.pymatchboxnet_3x1x64#   0  222222r9   c               
   C   r   r   r5   r6   r4   r4   r8   matchboxnet_3x1x64_vadA   r:   r;   c                   @   s@  e Zd ZU dZeed< dZeed< dZeed< dZ	e
ed< d	Zeed
< dZeed< eZee ed< edd dZejed< edd dZejed< edd dZejed< edd dZeej ed< edd dZeed< edd dZee ed< edd dZee  ed< edd dZ!e"ed< ed d dZ#e$ed!< d"S )#MatchboxNetModelConfigi>  sample_rater   r   r   r   Tr   r,   r+   r   	timestepslabelsc                   C   s   t jd dddS )NTF)manifest_filepathshuffletrim_silenceclf_cfg!EncDecClassificationDatasetConfigr4   r4   r4   r8   <lambda>o   s    zMatchboxNetModelConfig.<lambda>default_factorytrain_dsc                   C      t jd ddS NF)r@   rA   rC   r4   r4   r4   r8   rF   t       validation_dsc                   C   rJ   rK   rC   r4   r4   r4   r8   rF   w   rL   test_dsc                   C   s   t jt  dS )N)sched)	model_cfgOptimConfigSchedConfigr4   r4   r4   r8   rF   |   s    optimc                   C   
   t ddS )Ng?)window_size)r
   r4   r4   r4   r8   rF         
 preprocessorc                	   C   s   t ddddddddS )Nr3   r0         )
freq_masks
time_masks
freq_width
time_width
rect_masks	rect_time	rect_freq)r   r4   r4   r4   r8   rF      s    spec_augmentc                   C   rT   )Nr   )audio_length)r   r4   r4   r4   r8   rF      rV   crop_or_pad_augmentc                   C   rT   )Nrelu)
activation)r   r4   r4   r4   r8   rF      rV   encoderc                   C   s   t  S N)r   r4   r4   r4   r8   rF      s    decoderN)%__name__
__module____qualname__r=   int__annotations__r   r   floatr   boolr+   r>   r   r?   r   strr   rI   rD   rE   rM   rN   rS   r   rP   rQ   rW   r
   ra   r   rc   r   rf   r   rh   r   r4   r4   r4   r8   r<   b   s>   
 r<   c                   @   sD   e Zd ZU dZeed< edd dZee	 ed< dZ
ee ed< dS )	MatchboxNetVADModelConfigr.   r>   c                   C   s   ddgS )N
backgroundspeechr4   r4   r4   r4   r8   rF      s    z"MatchboxNetVADModelConfig.<lambda>rG   r?   Nrc   )ri   rj   rk   r>   rl   rm   r   r?   r   rp   rc   r   r   r4   r4   r4   r8   rq      s   
 rq   c                	       s   e Zd ZddgZd#dedeeg ee f  f fddZ	dee fd	d
Z
defddZdefddZdefddZd$defddZdefddZdefddZdd Zd ejf fd!d"Z  ZS )%&EncDecClassificationModelConfigBuilderr9   r;   Nnameencoder_cfg_funcc                    s   |t jvrtdt j || _d|v r)|d u rt}tddt| ddt d}n(d|v rH|d u r3t}t	dd	t
d
dddt| ddt d}n	td| jj tt | | || _d S )Nz`name` must be one of : 
r;   r   Trd   )jasperre   )r   r   rf   rh   r9   FrY   2   x   )r^   r`   r_   )r   r   ra   rf   rh   z!Invalid config name submitted to )rt   VALID_CONFIGS
ValueErrorru   r;   rq   r   r   r9   r<   r   	__class__ri   super__init__rP   )selfru   rv   rP   r|   r4   r8   r~      s2   
	
z/EncDecClassificationModelConfigBuilder.__init__r?   c                 C      || j _d S rg   )rP   r?   )r   r?   r4   r4   r8   
set_labels      z1EncDecClassificationModelConfigBuilder.set_labelsr   c                 C   r   rg   )rP   r   )r   r   r4   r4   r8   set_separable   r   z4EncDecClassificationModelConfigBuilder.set_separabler   c                 C   r   rg   )rP   r   )r   r   r4   r4   r8   
set_repeat   r   z1EncDecClassificationModelConfigBuilder.set_repeatr=   c                 C   r   rg   )rP   r=   )r   r=   r4   r4   r8   set_sample_rate   r   z6EncDecClassificationModelConfigBuilder.set_sample_rater   r   c                 C   r   rg   )rP   r   )r   r   r4   r4   r8   set_dropout   r   z2EncDecClassificationModelConfigBuilder.set_dropoutr>   c                 C   r   rg   )rP   r>   )r   r>   r4   r4   r8   set_timesteps   r   z4EncDecClassificationModelConfigBuilder.set_timestepsis_regression_taskc                 C   r   rg   )rP   r   )r   r   r4   r4   r8   set_is_regression_task   r   z=EncDecClassificationModelConfigBuilder.set_is_regression_taskc                 C   s0  | j j| j j_| j j| j j_| j j| j j_| j j| j j_t| j j| j j_| j j	| j _	| j j	| j j
_	| j j	| j j_	| j j	| j j_	| j j	| j j_	| j j
j| j j_| j jjd j| j j_| j jd urg| j j| j j_| j jjd d D ]}| j j|_qp| j jjdd D ]}| j j|_q| j jjD ]}| j j|_qd S )Nr!   r   )rP   r?   rI   rM   rN   rh   
vocabularylennum_classesr=   rW   featuresrf   feat_inrw   r   rc   r>   rb   r   r   r   )r   layerr4   r4   r8   _finalize_cfg   s*   z4EncDecClassificationModelConfigBuilder._finalize_cfgreturnc                    s
   t   S rg   )r}   build)r   r   r4   r8   r     s   
z,EncDecClassificationModelConfigBuilder.build)r9   N)r   )ri   rj   rk   rz   rp   r   r   r   r   r~   r   ro   r   rl   r   r   rn   r   r   r   r   rD   EncDecClassificationConfigr   __classcell__r4   r4   r   r8   rt      s    (#%rt   N)dataclassesr   r   typingr   r   r   r   	omegaconfr   #nemo.collections.asr.models.configsr	   rD   0nemo.collections.asr.modules.audio_preprocessingr
   r   r   %nemo.collections.asr.modules.conv_asrr   r   r   nemo.core.configr   rP   r9   r;   r   r<   rq   ModelConfigBuilderrt   r4   r4   r4   r8   <module>   s   !-