o
    wi<                     @   s  d dl mZ d dlmZmZ d dlZd dlZd dlZd dl	m
Z
 G dd dZeG dd dZejd	d
dee fddZejd	d
dee fddZejd	d
dd Zejd	d
dd Zejd	d
dd Zejd	d
dd Zejd	d
dd ZdS )    )	dataclass)OptionalTypeN)ASRModelc                   @   s   e Zd ZedddZdS )RNNTTestHelperNc                 C   s  t |s
t |}d|v r| }|jsd|_t |}|d u r2|jd g|jd  }t |}n|}|d u rEdd |D }t |}n|}d|v rW| }| }| }| ||||}t |}	|	  d|v rpt j	  |j
d ur~|j
j  }
nd }
|j  |
fS )NcudaT   r   c                 S   s   g | ]}t |qS  )len).0lr	   r	   [/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/tests/collections/asr/conftest.py
<listcomp>.   s    z0RNNTTestHelper.wrap_and_call.<locals>.<listcomp>)torch	is_tensorFloatTensorr   requires_grad
LongTensorshapesumbackwardsynchronizegraddatacpunumpy)fnactslabelsdeviceinput_lengthstarget_lengthslengthslabel_lengthscostscostr   r	   r	   r   wrap_and_call   s8   





zRNNTTestHelper.wrap_and_call)NN)__name__
__module____qualname__staticmethodr&   r	   r	   r	   r   r      s    r   c                   @   s   e Zd ZU eed< eed< ejed< ejed< ejed< ejed< dZeej ed< dZ	eej ed	< e
dddZe
dddZe
dddZe
edfded
d fddZe
edfded
d fddZdS )RnntLossSampleData
vocab_sizeblank_idlogitstargetsr    r!   Nexpected_costexpected_gradsreturnc                 C   s   t g dg dg dgg dg dg dggg}t ddgg}dg}t g d	g d
g dgg dg dg dggg}tddt|tjt|tdgtdgt|tjt|dS )N)皙?333333?r3   r3   r3   )r3   r3   r4   r3   r3   )r3   r3   皙?g?r3   )r3   r3   r5   r3   r3   )gffffff?r3   r5   r3   r3   r      g.ޏ@)gg6fٿ)\?r7   r7   )g^ʎǿ =	;Z?g lAǿr8   r8   )g^HԉԿ0S?gR4?g(?r9   )d`?gd`˿r:   r:   r:   )'a.?r;   g #޿r;   r;   )ge)US?g"?r<   r<      r   r,   r-   r.   r/   r    r!   r0   r1   )	nparrayasarrayr+   r   
from_numpytofloat32tensorclsactivationsr   r0   r1   r	   r	   r   get_sample_smallT   s<   

z#RnntLossSampleData.get_sample_smallc                 C   s  t g dg dg dg dgg dg dg dg dgg d	g d
g dg dgg dg dg dg dgg dg dg dg dggg}t g dg}dg}t g dg dg dg dgg dg dg dg dgg dg d g d!g d"gg d#g d$g d%g d&gg d'g d(g d)g d*ggg}td+d,t|tjt|td-gtd+gt|tjt|d.S )/N)              ?      @)rJ          @rL   )rK   rK   rL   )rM   rL   rM   )rJ   rJ   rK   )rJ   rK   rK   )rK   rJ   rK   )rM   rM   rJ   )rJ   rM         @)rJ   rL   rN   )rK   rM   rN   )rM         @rO   )rJ   rL   rO   )rJ   rO   rO   )rK   rL   rO   )rM   rN   rL   )rM   rM   rK   )rM   rL   rK   )rL   rM   rK   )rO   rO   rJ   )r   r   r   g   `:(@)g   w.g   ;?g    $)g   `gMf?g   @.|?g    )g   V?g   &V?g    
f)g   ,>g    ?>g   "9־)g   ,ȿg   ?g    a)g    J?g   a?g   \)g   ??g   ;i?g   @z)    6A?rP   g   6Q)g   g   羙?g    h)g   T_?g    @?g    1d)g   f?g   ࣡?g    "V)g   @?g    G?g   /J)g   hg   ?g    )g    Zg?g     j{g    8zo?)g   w?g   ?g   md)g   is(?g   ັn?g   xp)g   |ҿg   @ ?g   `?)g    fk?g   s˿g   5?)g   UTտg   /?g    ?)   ੵ?rQ   g   ੵr=   r6      r>   r?   r@   r+   r   rB   rC   rD   rE   rF   r	   r	   r   get_sample_small_blank_last|   sd   $

z.RnntLossSampleData.get_sample_small_blank_lastc                 C   s  g dg dg dgg dg dg dgg dg dg d	gg d
g dg dggg dg dg dgg dg dg dgg dg dg dgg dg dg dggg}ddg}g dg dg dgg dg dg d gg d!g d"g d#gg d$g d%g d&ggg d'g d(g d)gg d*g d+g d,gg d-g d.g d/gg d0g d1g d2ggg}t |}t d3d4gd3d3gg}t |}td5d6t|tjt|td7d7gtd4d4gt|tjt|d8S )9N)g :?g!!ir3?g֮2?)g4{n?g`8?g82b!?)g(+0?g+"?g.4?)giڈd?ghu?gLچ?)g'F?gg7?gUa&M?)gL?ga&Q?gNxE\?)gxbu?gTw?gL?)gxU?gSY?gÏ?)gR[v&?g|0?gHyÚ?)gL'r[?gϦqܟ?g<.qy?)g	))?g0?v?g #}g?)g8	?gb޹?g#,?)gZ%n-?g9 ~j?gGB}?)g!?g%f}X?g`2!<?)g2W Z?g֮?ga?)gMH?gn9?g?)gp>*H?g`Gή?g8i?)gq%3?gIś4?g@ t ?)g+?gu\l?gs'Ә?)gsA9?gS$r?g|?)gQ?gfmK?gO<?)g^ ?g
|KO?gޗ?)gH?gIr~<O?gzIc?)g녷%?g@<VA"?gO?gDvc@gQ?@)gF@ǿgܤg-L?)go ?ʿg6?8?g;P?)g}s¿g[ZoA?gnϠ_c?)gIl tgδg$$(÷?)g]ÿg2^?gkl>)g_0\Ͽgib?gE?)gtg@&g% 0?)g%_)gj#?gVsĿ)gh#`߿gZe_?gt?)gAi!܋?ggfZv?)g1 (*?gm?gJƿ)g6Xg˜Jง?g)?)gf VֿgvfVgi &Y?)g3@ϸg.G*?gh>E?)g Bg/uQ?g,+ \?)gÿgV`g"u@=?)g@ _Yſg~
gr A\?)g_5ƿg`T?g8?)g?r?g#H^Fga_Y)?)gaκg~2@!㻿g=,X?)gK.@׿gQO ?g`H?)gȋT?g" Wgh?݄?)gJAP?gzοgqZн?)g7q(gwKW?gM@?r   r6   r=   r      r>   rS   )rG   rH   r0   r1   r   r	   r	   r   get_sample_medium   s   /
.
z$RnntLossSampleData.get_sample_mediumr   blank_firstc                 C   s   d}|rdn|d }d}d}|rt ddg}nt ddg}t|d|}tjd||d |gd|d}	tj|g|d}
tj|g|d}t|||	||
|d	S )
NrU   r   r   r6   r=   Tr   r   r   r,   r-   r.   r/   r    r!   )	r?   rA   r   rB   	unsqueezerC   randrE   r+   )rG   rW   r   r,   r-   
num_framestext_lentextr/   r.   r    r!   r	   r	   r   get_sample_small_random+  s&   z*RnntLossSampleData.get_sample_small_randomc                 C   s   d}|rdn|d }d}d}|rdnd}|r|n|d }d}	t jd}
|
j|||	|fd}t||}tj|	||d |gd|d	}tj||d
 ||d
 g|d	 }tj||d |d |d g|d}t
||||||dS )N    r   r      rU   i  )sizeTrX   r6   rY   r=   
   rZ   )r?   randomRandomStaterandintr   rB   rC   r\   rE   longr+   )rG   rW   r   r,   r-   r]   r^   
min_symbol
max_symbol
batch_sizersr_   r/   r.   r    r!   r	   r	   r   !get_sample_medium_random_var_sizeC  s*   ""z4RnntLossSampleData.get_sample_medium_random_var_size)r2   r+   )r'   r(   r)   int__annotations__r   Tensorr0   r   r1   classmethodrI   rT   rV   r   boolr`   rm   r	   r	   r	   r   r+   G   s&   
 



'>o"r+   session)scoper2   c                   C      t S N)r   r	   r	   r	   r   rnnt_test_helper^     rw   c                   C   ru   rv   )r+   r	   r	   r	   r   rnn_loss_sample_datac  rx   ry   c                   C   
   t dS )N%stt_en_fastconformer_transducer_larger   from_pretrainedr	   r	   r	   r   fast_conformer_transducer_modelh     
r~   c                   C   rz   )Nstt_en_fastconformer_ctc_larger|   r	   r	   r	   r   fast_conformer_ctc_modelm  r   r   c                   C   rz   )Nzparakeet-tdt_ctc-110mr|   r	   r	   r	   r   fast_conformer_hybrid_modelr  r   r   c                   C   rz   )NzA/home/TestData/asr/canary/models/canary-1b-flash_HF_20250318.nemor   restore_fromr	   r	   r	   r   canary_1b_flashw  r   r   c                   C   rz   )Nz;/home/TestData/asr/canary/models/canary-1b-v2_20250809.nemor   r	   r	   r	   r   canary_1b_v2|  r   r   )dataclassesr   typingr   r   r   r?   pytestr   nemo.collections.asr.modelsr   r   r+   fixturerw   ry   r~   r   r   r   r   r	   r	   r	   r   <module>   s2   .  










