§
    @Äjz3  ã                   ó†  — d dl mZmZmZmZmZ d dlZd dlmZ ddgZ	eee
         ej        eeej                          ef         Zde_        dedee
         fd	„Zdedej        fd
„Zdedeeej                          fd„Zdedefd„Zdedefd„Zdee         deeej                          fd„Zdeeej                          de
dej        deeej                          fd„Zdedefd„Zdee         dej        de
deej        ej        ej        f         fd„Zdedee         ddfd„Z G d„ dej        j        ¦  «        ZdS )é    )ÚCallableÚDictÚListÚOptionalÚTupleN)ÚRNNTÚ
HypothesisÚRNNTBeamSearchz™Hypothesis generated by RNN-T beam search decoder,
    represented as tuple of (tokens, prediction network output, prediction network state, score).
    ÚhypoÚreturnc                 ó   — | d         S ©Nr   © ©r   s    úOC:\Projects\Historical\venv\Lib\site-packages\torchaudio/models/rnnt_decoder.pyÚ_get_hypo_tokensr      ó   € Ø�Œ7€Nó    c                 ó   — | d         S ©Né   r   r   s    r   Ú_get_hypo_predictor_outr      r   r   c                 ó   — | d         S )Né   r   r   s    r   Ú_get_hypo_stater      r   r   c                 ó   — | d         S )Né   r   r   s    r   Ú_get_hypo_scorer      r   r   c                 ó,   — t          | d         ¦  «        S r   )Ústrr   s    r   Ú_get_hypo_keyr!       s   € Ýˆt�AŒw‰<Œ<Ðr   Úhyposc           	      óx  ‡‡— g }t          t          t          | d         ¦  «        ¦  «        ¦  «        D ]…Šg }t          t          t          | d         ¦  «        ‰         ¦  «        ¦  «        D ]6Š|                     t	          j        ˆˆfd„| D ¦   «         ¦  «        ¦  «         Œ7|                     |¦  «         Œ†|S )Nr   c                 óF   •— g | ]}t          |¦  «        ‰         ‰         ‘ŒS r   )r   )Ú.0r   ÚiÚjs     €€r   ú
<listcomp>z _batch_state.<locals>.<listcomp>)   s-   ø€ Ð6eÐ6eÐ6eÐW[µÀtÑ7LÔ7LÈQÔ7OÐPQÔ7RÐ6eÐ6eÐ6er   )ÚrangeÚlenr   ÚappendÚtorchÚcat)r"   ÚstatesÚbatched_state_componentsr&   r'   s      @@r   Ú_batch_stater0   $   sÁ   øø€ Ø')€FÝ•3• u¨Q¤xÑ0Ô0Ñ1Ô1Ñ2Ô2ð 0ð 0ˆØ79Ð Ý•s�?¨5°¬8Ñ4Ô4°QÔ7Ñ8Ô8Ñ9Ô9ð 	hð 	hˆAØ$×+Ò+­E¬IÐ6eÐ6eÐ6eÐ6eÐ6eÐ_dÐ6eÑ6eÔ6eÑ,fÔ,fÑgÔgÐgÐgØ�ŠÐ.Ñ/Ô/Ð/Ð/Ø€Mr   r.   ÚidxÚdevicec                 óN   ‡— t          j        |g|¬¦  «        Šˆfd„| D ¦   «         S )N©r2   c                 ó,   •— g | ]}ˆfd „|D ¦   «         ‘ŒS )c                 ó<   •— g | ]}|                      d ‰¦  «        ‘ŒS )r   )Úindex_select)r%   ÚstateÚ
idx_tensors     €r   r(   z+_slice_state.<locals>.<listcomp>.<listcomp>0   s)   ø€ ÐHÐHÐH°5ˆU×Ò  :Ñ.Ô.ÐHÐHÐHr   r   )r%   Ústate_tupler9   s     €r   r(   z _slice_state.<locals>.<listcomp>0   s.   ø€ ÐcÐcÐcÈ[ÐHÐHÐHÐH¸KÐHÑHÔHÐcÐcÐcr   )r,   Útensor)r.   r1   r2   r9   s      @r   Ú_slice_stater<   .   s4   ø€ Ý”˜s˜e¨FÐ3Ñ3Ô3€JØcÐcÐcÐcÐ\bÐcÑcÔcÐcr   c                 ó`   — t          | ¦  «        t          t          | ¦  «        ¦  «        dz   z  S r   )r   r*   r   r   s    r   Ú_default_hypo_sort_keyr>   3   s+   € Ý˜4Ñ Ô ¥CÕ(8¸Ñ(>Ô(>Ñ$?Ô$?À!Ñ$CÑDÐDr   Únext_token_probsÚ
beam_widthc                 óJ  — t          j        d„ | D ¦   «         ¦  «                             d¦  «        }||d d …d d…f         z   }|                     d¦  «                             |¦  «        \  }}|                     |j        d         d¬¦  «        }||j        d         z  }|||fS )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   ©r   ©r%   Úhs     r   r(   z+_compute_updated_scores.<locals>.<listcomp><   s    € ÐBÐBÐB°q¥°Ñ 2Ô 2ÐBÐBÐBr   r   éÿÿÿÿÚtrunc)Úrounding_mode)r,   r;   Ú	unsqueezeÚreshapeÚtopkÚdivÚshape)	r"   r?   r@   Úhypo_scoresÚnonblank_scoresÚnonblank_nbest_scoresÚnonblank_nbest_idxÚnonblank_nbest_hypo_idxÚnonblank_nbest_tokens	            r   Ú_compute_updated_scoresrT   7   s¹   € õ
 ”,ÐBÐB¸EÐBÑBÔBÑCÔC×MÒMÈaÑPÔP€KØ!Ð$4°Q°Q°Q¸¸¸°VÔ$<Ñ<€OØ0?×0GÒ0GÈÑ0KÔ0K×0PÒ0PÐQ[Ñ0\Ô0\Ñ-ÐÐ-Ø0×4Ò4°_Ô5JÈ1Ô5MÐ]dÐ4ÑeÔeÐØ-°Ô0EÀaÔ0HÑHÐØ Ð"9Ð;OÐOÐOr   Ú	hypo_listc                 ó|   — t          |¦  «        D ]+\  }}t          | ¦  «        t          |¦  «        k    r||=  d S Œ,d S ©N)Ú	enumerater!   )r   rU   r&   Úelems       r   Ú_remove_hyporZ   D   sU   € Ý˜YÑ'Ô'ð ð ‰ˆˆ4Ý˜ÑÔ¥-°Ñ"5Ô"5Ò5Ð5Ø˜!�ØˆEˆEð 6ðð r   c                   ó:  ‡ — e Zd ZdZ	 	 	 d%dedededeee	gef                  d	ed
dfˆ fd„Z
dej        d
ee	         fd„Zdej        dee	         dej        d
ej        fd„Zdee	         dee	         dej        deee	f         d
ee	         f
d„Zdee	         dee	         dej        dededej        d
ee	         fd„Zdee	         dee         dee         dedej        d
ee	         fd„Zdej        deee	                  ded
ee	         fd„Zdej        d ej        ded
ee	         fd!„Zej        j        	 	 d&dej        d ej        ded"eeeej                                   d#eee	                  d
eee	         eeej                          f         fd$„¦   «         Zˆ xZS )'r
   a)  Beam search decoder for RNN-T model.

    See Also:
        * :class:`torchaudio.pipelines.RNNTBundle`: ASR pipeline with pretrained model.

    Args:
        model (RNNT): RNN-T model to use.
        blank (int): index of blank token in vocabulary.
        temperature (float, optional): temperature to apply to joint network output.
            Larger values yield more uniform samples. (Default: 1.0)
        hypo_sort_key (Callable[[Hypothesis], float] or None, optional): callable that computes a score
            for a given hypothesis to rank hypotheses by. If ``None``, defaults to callable that returns
            hypothesis score normalized by token sequence length. (Default: None)
        step_max_tokens (int, optional): maximum number of tokens to emit per input time step. (Default: 100)
    ç      ð?Néd   ÚmodelÚblankÚtemperatureÚhypo_sort_keyÚstep_max_tokensr   c                 ó¬   •— t          ¦   «                              ¦   «          || _        || _        || _        |€t
          | _        n|| _        || _        d S rW   )ÚsuperÚ__init__r^   r_   r`   r>   ra   rb   )Úselfr^   r_   r`   ra   rb   Ú	__class__s         €r   re   zRNNTBeamSearch.__init__\   sX   ø€ õ 	‰Œ×ÒÑÔÐØˆŒ
ØˆŒ
Ø&ˆÔàÐ Ý!7ˆDÔÐà!.ˆDÔà.ˆÔÐÐr   r2   c                 óò   — | j         }d }t          j        dg|¬¦  «        }| j                             t          j        |gg|¬¦  «        ||¦  «        \  }}}|g|d                              ¦   «         |df}|gS )Nr   r4   r   g        )r_   r,   r;   r^   ÚpredictÚdetach)	rf   r2   Útokenr8   Ú
one_tensorÚpred_outÚ_Ú
pred_stateÚ	init_hypos	            r   Ú_init_b_hyposzRNNTBeamSearch._init_b_hyposp   s‰   € Ø”
ˆØˆå”\ 1 #¨fÐ5Ñ5Ô5ˆ
Ø"&¤*×"4Ò"4µU´\ÀEÀ7À)ÐTZÐ5[Ñ5[Ô5[Ð]gÐinÑ"oÔ"oÑˆ�!�ZàˆGØ�QŒK×ÒÑ Ô ØØð	
ˆ	ð ˆ{Ðr   Úenc_outr"   c                 ór  — t          j        dg|¬¦  «        }t          j        d„ |D ¦   «         d¬¦  «        }| j                             |||t          j        dgt          |¦  «        z  |¬¦  «        ¦  «        \  }}}t           j        j                             || j	        z  d¬¦  «        }|d d …ddf         S )Nr   r4   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )r   rD   s     r   r(   z8RNNTBeamSearch._gen_next_token_probs.<locals>.<listcomp>‚   s!   € Ð$OÐ$OÐ$OÀAÕ%<¸QÑ%?Ô%?Ð$OÐ$OÐ$Or   r   )Údimr   )
r,   r;   Ústackr^   Újoinr*   ÚnnÚ
functionalÚlog_softmaxr`   )rf   rr   r"   r2   rl   Úpredictor_outÚ
joined_outrn   s           r   Ú_gen_next_token_probsz$RNNTBeamSearch._gen_next_token_probs~   s¿   € õ ”\ 1 #¨fÐ5Ñ5Ô5ˆ
ÝœÐ$OÐ$OÈÐ$OÑ$OÔ$OÐUVÐWÑWÔWˆØœ:Ÿ?š?ØØØÝŒL˜!˜�s 5™zœzÑ)°&Ð9Ñ9Ô9ñ	
ô 
Ñˆ
�A�qõ ”XÔ(×4Ò4°ZÀ$ÔBRÑ5RÐXYÐ4ÑZÔZˆ
Ø˜!˜!˜!˜Q ˜'Ô"Ð"r   Úb_hyposÚa_hyposr?   Úkey_to_b_hypoc                 óÂ  ‡— t          t          |¦  «        ¦  «        D �] }||         }t          |¦  «        ||df         z   }t          |¦  «        |v rg|t          |¦  «                 }t	          |‰¦  «         t          t          j        t          |¦  «        ¦  «                             |¦  «        ¦  «        }	nt          |¦  «        }	t          |¦  «        t          |¦  «        t          |¦  «        |	f}‰                     |¦  «         ||t          |¦  «        <   �Œt          j        d„ ‰D ¦   «         ¦  «                             ¦   «         \  }
}ˆfd„|D ¦   «         S )NrF   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   rC   )r%   r   s     r   r(   z/RNNTBeamSearch._gen_b_hypos.<locals>.<listcomp>¤   s    € Ð%PÐ%PÐ%PÀ¥o°dÑ&;Ô&;Ð%PÐ%PÐ%Pr   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   ©r%   r1   r~   s     €r   r(   z/RNNTBeamSearch._gen_b_hypos.<locals>.<listcomp>¥   s   ø€ Ð3Ð3Ð3 �˜”Ð3Ð3Ð3r   )r)   r*   r   r!   rZ   Úfloatr,   r;   Ú	logaddexpr   r   r   r+   Úsort)rf   r~   r   r?   r€   r&   Úh_aÚappend_blank_scoreÚh_bÚscorern   Ú
sorted_idxs    `          r   Ú_gen_b_hyposzRNNTBeamSearch._gen_b_hyposŒ   sW  ø€ õ •s˜7‘|”|Ñ$Ô$ð 	4ñ 	4ˆAØ˜!”*ˆCÝ!0°Ñ!5Ô!5Ð8HÈÈBÈÔ8OÑ!OÐÝ˜SÑ!Ô! ]Ð2Ð2Ø#¥M°#Ñ$6Ô$6Ô7�Ý˜S 'Ñ*Ô*Ð*Ý�eœl­?¸3Ñ+?Ô+?Ñ@Ô@×JÒJÐK]Ñ^Ô^Ñ_Ô_��åÐ0Ñ1Ô1�å  Ñ%Ô%Ý'¨Ñ,Ô,Ý Ñ$Ô$Øð	ˆCð �NŠN˜3ÑÔÐØ03ˆM�-¨Ñ,Ô,Ñ-Ñ-ÝœÐ%PÐ%PÈÐ%PÑ%PÔ%PÑQÔQ×VÒVÑXÔX‰ˆˆ:Ø3Ð3Ð3Ð3¨
Ð3Ñ3Ô3Ð3r   Útr@   c                 ó   — t          |||¦  «        \  }}}	t          |¦  «        |k     rt          d¦  «         }
nt          ||          ¦  «        }
g }g }g }t	          |¦  «        D ]Š}t          ||         ¦  «        }||
k    rmt          ||         ¦  «        }|                     ||         ¦  «         |                     t          |	|         ¦  «        ¦  «         |                     |¦  «         Œ‹|r|                      |||||¦  «        }ng }|S )NÚinf)rT   r*   r…   r   r)   Úintr+   Ú_gen_new_hypos)rf   r   r~   r?   rŽ   r@   r2   rP   rR   rS   Úb_nbest_scoreÚ
base_hyposÚ
new_tokensÚ
new_scoresr&   r‹   Ú
a_hypo_idxÚ	new_hyposs                     r   Ú_gen_a_hyposzRNNTBeamSearch._gen_a_hypos§   s1  € õ $ GÐ-=¸zÑJÔJñ		
Ø!Ø#Ø õ ˆw‰<Œ<˜*Ò$Ð$Ý" 5™\œ\˜MˆMˆMå+¨G°Z°KÔ,@ÑAÔAˆMà')ˆ
Ø "ˆ
Ø"$ˆ
Ý�zÑ"Ô"ð 	)ð 	)ˆAÝÐ/°Ô2Ñ3Ô3ˆEØ�}Ò$Ð$Ý Ð!8¸Ô!;Ñ<Ô<�
Ø×!Ò! '¨*Ô"5Ñ6Ô6Ð6Ø×!Ò!¥#Ð&:¸1Ô&=Ñ">Ô">Ñ?Ô?Ð?Ø×!Ò! %Ñ(Ô(Ð(øàð 	-Ø×+Ò+¨J¸
ÀJÐPQÐSYÑZÔZˆIˆIà*,ˆIàÐr   r”   ÚtokensÚscoresc           
      óÚ  — t          j        d„ |D ¦   «         |¬¦  «        }t          |¦  «        }| j                             |t          j        dgt          |¦  «        z  |¬¦  «        |¦  «        \  }}	}
g }t          |¦  «        D ]d\  }}t          |¦  «        ||         gz   }|                     |||          	                    ¦   «         t          |
||¦  «        ||         f¦  «         Œe|S )Nc                 ó   — g | ]}|g‘ŒS r   r   )r%   rk   s     r   r(   z1RNNTBeamSearch._gen_new_hypos.<locals>.<listcomp>Õ   s   € Ð"?Ð"?Ð"?¨u E 7Ð"?Ð"?Ð"?r   r4   r   )r,   r;   r0   r^   ri   r*   rX   r   r+   rj   r<   )rf   r”   rš   r›   rŽ   r2   Ú
tgt_tokensr.   rm   rn   Úpred_statesr˜   r&   rˆ   r•   s                  r   r’   zRNNTBeamSearch._gen_new_hyposÍ   sþ   € õ ”\Ð"?Ð"?¸Ð"?Ñ"?Ô"?ÈÐOÑOÔOˆ
Ý˜jÑ)Ô)ˆØ#'¤:×#5Ò#5ØÝŒL˜!˜�s :™œÑ.°vÐ>Ñ>Ô>Øñ$
ô $
Ñ ˆ�!�[ð
 ')ˆ	Ý 
Ñ+Ô+ð 	rð 	r‰FˆAˆsÝ)¨#Ñ.Ô.°&¸´)°Ñ<ˆJØ×Ò˜j¨(°1¬+×*<Ò*<Ñ*>Ô*>ÅÈ[ÐZ[Ð]cÑ@dÔ@dÐflÐmnÔfoÐpÑqÔqÐqÐqØÐr   r   c           	      óŠ  ‡ ‡— |j         d         }|j        }g }|€‰                      |¦  «        n|Št          |¦  «        D �] }‰}t          j                             t          t                   g ¦  «        Ši }d}	|r�‰  	                    |d d …||dz   …f         ||¦  «        }
|
 
                    ¦   «         }
‰                      ‰||
|¦  «        Š|	‰ j        k    rn#‰                      |‰|
|||¦  «        }|r|	dz  }	|°�t	          j        ˆ fd„‰D ¦   «         ¦  «                             |¦  «        \  }}ˆfd„|D ¦   «         Š�Œ‰S )Nr   r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )ra   )r%   Úhyprf   s     €r   r(   z*RNNTBeamSearch._search.<locals>.<listcomp>  s'   ø€ Ð)UÐ)UÐ)UÀc¨$×*<Ò*<¸SÑ*AÔ*AÐ)UÐ)UÐ)Ur   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   r„   s     €r   r(   z*RNNTBeamSearch._search.<locals>.<listcomp>  s   ø€ Ð:Ð:Ð:¨�w˜s”|Ð:Ð:Ð:r   )rM   r2   rq   r)   r,   ÚjitÚannotater   r	   r}   Úcpur�   rb   r™   r;   rK   )rf   rr   r   r@   Ún_time_stepsr2   r   rŽ   r€   Úsymbols_current_tr?   rn   rŒ   r~   s   `            @r   Ú_searchzRNNTBeamSearch._searchâ   s’  øø€ ð ”} QÔ'ˆØ”ˆà$&ˆØ04°�$×$Ò$ VÑ,Ô,Ð,À$ˆÝ�|Ñ$Ô$ð 	;ñ 	;ˆAØˆGÝ”i×(Ò(­­jÔ)9¸2Ñ>Ô>ˆGØ35ˆMØ !Ðàð +Ø#'×#=Ò#=¸gÀaÀaÀaÈÈQÐQRÉUÈÀlÔ>SÐU\Ð^dÑ#eÔ#eÐ Ø#3×#7Ò#7Ñ#9Ô#9Ð Ø×+Ò+¨G°WÐ>NÐP]Ñ^Ô^�à$¨Ô(<Ò<Ð<Øà×+Ò+ØØØ$ØØØñô �ð ð +Ø%¨Ñ*Ð%ð# ð +õ& "œLÐ)UÐ)UÐ)UÐ)UÈWÐ)UÑ)UÔ)UÑVÔV×[Ò[Ð\fÑgÔg‰MˆAˆzØ:Ð:Ð:Ð:¨zÐ:Ñ:Ô:ˆG‰Gàˆr   ÚinputÚlengthc                 ó
  — |                      ¦   «         dk    r8|                      ¦   «         dk    r|j        d         dk    st          d¦  «        ‚|                      ¦   «         dk    r|                     d¦  «        }|j        dk    r|j        dk    rt          d¦  «        ‚|                      ¦   «         dk    r|                     d¦  «        }| j                             ||¦  «        \  }}|                      |d	|¦  «        S )
a  Performs beam search for the given input sequence.

        T: number of frames;
        D: feature dimension of each frame.

        Args:
            input (torch.Tensor): sequence of input frames, with shape (T, D) or (1, T, D).
            length (torch.Tensor): number of valid frames in input
                sequence, with shape () or (1,).
            beam_width (int): beam size to use during search.

        Returns:
            List[Hypothesis]: top-``beam_width`` hypotheses found by beam search.
        r   r   r   r   ú*input must be of shape (T, D) or (1, T, D)r   ©r   ú"length must be of shape () or (1,)N)ru   rM   Ú
ValueErrorrI   r^   Ú
transcriber©   )rf   rª   r«   r@   rr   rn   s         r   ÚforwardzRNNTBeamSearch.forward  së   € ð �9Š9‰;Œ;˜!ÒÐ U§Y¢Y¡[¤[°AÒ%5Ð%5¸%¼+Àa¼.ÈAÒ:MÐ:MÝÐIÑJÔJÐJØ�9Š9‰;Œ;˜!ÒÐØ—O’O AÑ&Ô&ˆEàŒ<˜2ÒÐ &¤,°$Ò"6Ð"6ÝÐAÑBÔBÐBØ�:Š:‰<Œ<˜1ÒÐØ×%Ò% aÑ(Ô(ˆFà”Z×*Ò*¨5°&Ñ9Ô9‰
ˆ�Ø�|Š|˜G T¨:Ñ6Ô6Ð6r   r8   Ú
hypothesisc                 ó  — |                      ¦   «         dk    r8|                      ¦   «         dk    r|j        d         dk    st          d¦  «        ‚|                      ¦   «         dk    r|                     d¦  «        }|j        dk    r|j        dk    rt          d¦  «        ‚|                      ¦   «         dk    r|                     d¦  «        }| j                             |||¦  «        \  }}}|                      |||¦  «        |fS )	a™  Performs beam search for the given input sequence in streaming mode.

        T: number of frames;
        D: feature dimension of each frame.

        Args:
            input (torch.Tensor): sequence of input frames, with shape (T, D) or (1, T, D).
            length (torch.Tensor): number of valid frames in input
                sequence, with shape () or (1,).
            beam_width (int): beam size to use during search.
            state (List[List[torch.Tensor]] or None, optional): list of lists of tensors
                representing transcription network internal state generated in preceding
                invocation. (Default: ``None``)
            hypothesis (List[Hypothesis] or None): hypotheses from preceding invocation to seed
                search with. (Default: ``None``)

        Returns:
            (List[Hypothesis], List[List[torch.Tensor]]):
                List[Hypothesis]
                    top-``beam_width`` hypotheses found by beam search.
                List[List[torch.Tensor]]
                    list of lists of tensors representing transcription network
                    internal state generated in current invocation.
        r   r   r   r   r­   r   r®   r¯   )ru   rM   r°   rI   r^   Útranscribe_streamingr©   )rf   rª   r«   r@   r8   r³   rr   rn   s           r   ÚinferzRNNTBeamSearch.infer'  sö   € ðB �9Š9‰;Œ;˜!ÒÐ U§Y¢Y¡[¤[°AÒ%5Ð%5¸%¼+Àa¼.ÈAÒ:MÐ:MÝÐIÑJÔJÐJØ�9Š9‰;Œ;˜!ÒÐØ—O’O AÑ&Ô&ˆEàŒ<˜2ÒÐ &¤,°$Ò"6Ð"6ÝÐAÑBÔBÐBØ�:Š:‰<Œ<˜1ÒÐØ×%Ò% aÑ(Ô(ˆFà œJ×;Ò;¸EÀ6È5ÑQÔQÑˆ��EØ�|Š|˜G Z°Ñ<Ô<¸eÐCÐCr   )r\   Nr]   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r‘   r…   r   r   r	   re   r,   r2   r   rq   ÚTensorr}   r   r    r�   r™   r’   r©   r²   r¤   Úexportr   r¶   Ú__classcell__)rg   s   @r   r
   r
   K   ss  ø€ € € € € ðð ð( !ØAEØ"ð/ð /àð/ð ð/ð ð	/ð
   ¨*¨°uÐ)<Ô =Ô>ð/ð ð/ð 
ð/ð /ð /ð /ð /ð /ð( E¤Lð °T¸*Ô5Eð ð ð ð ð#Ø”|ð#Ø,0°Ô,<ð#ØFKÄlð#à	Œð#ð #ð #ð #ð4à�jÔ!ð4ð �jÔ!ð4ð  œ,ð	4ð
 ˜C ˜OÔ,ð4ð 
ˆjÔ	ð4ð 4ð 4ð 4ð6$à�jÔ!ð$ð �jÔ!ð$ð  œ,ð	$ð
 ð$ð ð$ð ”ð$ð 
ˆjÔ	ð$ð $ð $ð $ðLà˜Ô$ðð �S”	ðð �U”ð	ð
 ðð ”ðð 
ˆjÔ	ðð ð ð ð*'à”ð'ð �t˜JÔ'Ô(ð'ð ð	'ð
 
ˆjÔ	ð'ð 'ð 'ð 'ðR7˜Uœ\ð 7°5´<ð 7ÈSð 7ÐUYÐZdÔUeð 7ð 7ð 7ð 7ð8 „YÔð 59Ø15ð+Dð +DàŒ|ð+Dð ”ð+Dð ð	+Dð
 ˜˜T %¤,Ô/Ô0Ô1ð+Dð ˜T *Ô-Ô.ð+Dð 
ˆt�JÔ  d¨5¬<Ô&8Ô!9Ð9Ô	:ð+Dð +Dð +Dñ Ôð+Dð +Dð +Dð +Dð +Dr   )Útypingr   r   r   r   r   r,   Útorchaudio.modelsr   Ú__all__r‘   r»   r…   r	   rº   r   r   r   r   r    r!   r0   r2   r<   r>   rT   rZ   rx   ÚModuler
   r   r   r   ú<module>rÂ      sÈ  ðØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à €€€Ø "Ð "Ð "Ð "Ð "Ð "ð Ð)Ð
*€ð �4˜”9˜eœl¨D°°e´lÔ1CÔ,DÀeÐKÔL€
ð€
Ô ð
˜:ð ¨$¨s¬)ð ð ð ð ð *ð °´ð ð ð ð ð˜*ð ¨¨d°5´<Ô.@Ô)Að ð ð ð ð˜*ð ¨ð ð ð ð ð˜
ð  sð ð ð ð ð˜˜ZÔ(ð ¨T°$°u´|Ô2DÔ-Eð ð ð ð ðd˜˜d 5¤<Ô0Ô1ð d¸ð dÀUÄ\ð dÐVZÐ[_Ð`eÔ`lÔ[mÔVnð dð dð dð dð
E ð E°ð Eð Eð Eð Eð
PØ�
Ôð
Pà”lð
Pð ð
Pð ˆ5Œ<˜œ u¤|Ð3Ô4ð	
Pð 
Pð 
Pð 
Pð�zð ¨d°:Ô.>ð À4ð ð ð ð ðHDð HDð HDð HDð HD�U”X”_ñ HDô HDð HDð HDð HDr   