o
    }oi.N                     @   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 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)asr_models_config)'AudioToMelSpectrogramPreprocessorConfigSpectrogramAugmentationConfig)ConvASRDecoderConfigConvASREncoderConfigJasperEncoderConfig)modelPTc                  C   s  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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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   '      3   ?   K   W       r   configr4   r4   h/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/asr/models/configs/quartznet_config.pyqn_15x5   s  222222222222222222Jr9   c                  C   s:  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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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 ).Nr   r   r   r   r      r   r   r   r   g?r   Fr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Ti     r.      i     g333333?i      i     g?r3   r4   r5   r6   r4   r4   r8   jasper_10x5_drl   s  22222222222226r@   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< 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d< edd dZe ed< dS )JasperModelConfigi>  sample_rater   r   r   r   Fr   labelsc                   C   s   t jd dddS )NT)manifest_filepathshuffletrim_silencectc_cfgASRDatasetConfigr4   r4   r4   r8   <lambda>       zJasperModelConfig.<lambda>)default_factorytrain_dsc                   C      t jd ddS NF)rD   rE   rG   r4   r4   r4   r8   rJ          validation_dsc                   C   rN   rO   rG   r4   r4   r4   r8   rJ      rP   test_dsc                   C   s   t jt  dS )N)sched)	model_cfgOptimConfigSchedConfigr4   r4   r4   r8   rJ      rK   optimc                   C      t  S N)r
   r4   r4   r4   r8   rJ          preprocessorc                   C   rX   rY   )r   r4   r4   r4   r8   rJ      rZ   spec_augmentc                   C   s
   t ddS )Nrelu)
activation)r   r4   r4   r4   r8   rJ      s   
 encoderc                   C   rX   rY   )r   r4   r4   r4   r8   rJ      rZ   decoderN)!__name__
__module____qualname__rB   int__annotations__r   r   floatr   boolr   rC   r   strr   rM   rH   rI   rQ   rR   rW   r   rT   rU   r[   r
   r\   r   r_   r   r`   r   r4   r4   r4   r8   rA      s4   
 rA   c                   @   s   e Zd ZU dZeed< dS )QuartzNetModelConfigTr   N)ra   rb   rc   r   rg   re   r4   r4   r4   r8   ri      s   
 ri   c                	       s   e Zd Zg d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d Zdejf fddZ  ZS )"EncDecCTCModelConfigBuilder)quartznet_15x5quartznet_15x5_zhjasper_10x5drrk   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ddt| dd	t d
}n(d|v rN|d u r9t	}t
ddtddddt| dd	t d
}n	td| jj tt | | || _d|v rn| jdd d S d S )Nz`name` must be one of : 
rk   r,   T2   x   )
rect_masks	rect_freq	rect_timer]   )jasperr^   )r   r   r\   r_   r`   jasper_10x5Fz!Invalid config name submitted to zh)	normalize)rj   VALID_CONFIGS
ValueErrorrn   r9   ri   r   r   r   r@   rA   	__class__ra   super__init__rT   set_dataset_normalize)selfrn   ro   rT   r{   r4   r8   r}      s:   
	z$EncDecCTCModelConfigBuilder.__init__rC   c                 C      || j _d S rY   )rT   rC   )r   rC   r4   r4   r8   
set_labels      z&EncDecCTCModelConfigBuilder.set_labelsr   c                 C   r   rY   )rT   r   )r   r   r4   r4   r8   set_separable   r   z)EncDecCTCModelConfigBuilder.set_separabler   c                 C   r   rY   )rT   r   )r   r   r4   r4   r8   
set_repeat   r   z&EncDecCTCModelConfigBuilder.set_repeatrB   c                 C   r   rY   )rT   rB   )r   rB   r4   r4   r8   set_sample_rate  r   z+EncDecCTCModelConfigBuilder.set_sample_rater   r   c                 C   r   rY   )rT   r   )r   r   r4   r4   r8   set_dropout  r   z'EncDecCTCModelConfigBuilder.set_dropoutrx   c                 C   s"   || j j_|| j j_|| j j_d S rY   )rT   rM   rx   rQ   rR   )r   rx   r4   r4   r8   r~   	  s   

z1EncDecCTCModelConfigBuilder.set_dataset_normalizec                 C   s  | 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jd d D ]}| j j|_qc| j jjdd D ]}| j j|_qt| j jjD ]}| j j|_qd S )Nr   r   )rT   rC   rM   rQ   rR   r`   
vocabularylennum_classesrB   r[   featuresr_   feat_inru   r   r   r   r   )r   layerr4   r4   r8   _finalize_cfg  s&   z)EncDecCTCModelConfigBuilder._finalize_cfgreturnc                    s
   t   S rY   )r|   build)r   r   r4   r8   r   ;  s   
z!EncDecCTCModelConfigBuilder.build)rk   N)r   )ra   rb   rc   ry   rh   r   r   r   r   r}   r   rg   r   rd   r   r   rf   r   r~   r   rH   EncDecCTCConfigr   __classcell__r4   r4   r   r8   rj      s    ('!rj   N)dataclassesr   r   typingr   r   r   r   	omegaconfr   #nemo.collections.asr.models.configsr	   rH   0nemo.collections.asr.modules.audio_preprocessingr
   r   %nemo.collections.asr.modules.conv_asrr   r   r   nemo.core.configr   rT   r9   r@   r   rA   ri   ModelConfigBuilderrj   r4   r4   r4   r8   <module>   s   N;#