o
    ¡¿¯iº  ã                   @   sp   d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
Z
eG dd„ dƒƒZeG dd„ deƒƒZG d	d
„ d
ƒZdS )z$Transducer decoder interface module.é    )Ú	dataclass)ÚAnyÚDictÚListÚOptionalÚTupleÚUnionNc                   @   st   e Zd ZU dZeed< ee ed< ee	e
jee
j f eee
j  e
jf ed< dZeeeef ee f ed< dS )Ú
Hypothesisz?Default hypothesis definition for Transducer search algorithms.ÚscoreÚyseqÚ	dec_stateNÚlm_state)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚfloatÚ__annotations__r   Úintr   r   ÚtorchÚTensorr   r   r   Ústrr   © r   r   ú\/home/ubuntu/.local/lib/python3.10/site-packages/espnet/nets/transducer_decoder_interface.pyr	   	   s   
 þÿ$r	   c                   @   s2   e Zd ZU dZdZeej ed< dZ	ejed< dS )ÚExtendedHypothesisz<Extended hypothesis definition for NSC beam search and mAES.NÚdec_outÚ	lm_scores)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   sü  e Zd ZdZdedeeeje	ej f e
e	ej  f fdd„Zdedeeef deejeeeje	ej f e
e	ej  f ejf fdd	„Zd
ee
e e
e f deeeje	ej f e
e	ej  f deeef dedeejeeeje	ej f e
e	ej  f ejf f
dd„Zdeeeje	ej f e
ej f dedeeeje	ej f e
e	ej  f fdd„Zdeeeje	ej f e
e	ej  f de
eeeje	ej f e
e	ej  f  de
e
e  deeeje	ej f e
e	ej  f fdd„ZdS )ÚTransducerDecoderInterfacez(Decoder interface for Transducer models.Ú
batch_sizeÚreturnc                 C   ó   t dƒ‚)z›Initialize decoder states.

        Args:
            batch_size: Batch size.

        Returns:
            state: Initial decoder hidden states.

        z"init_state(...) is not implemented©ÚNotImplementedError)Úselfr   r   r   r   Ú
init_state"   s   z%TransducerDecoderInterface.init_stateÚhypÚcachec                 C   r    )a8  One-step forward hypothesis.

        Args:
            hyp: Hypothesis.
            cache: Pairs of (dec_out, dec_state) for each token sequence. (key)

        Returns:
            dec_out: Decoder output sequence.
            new_state: Decoder hidden states.
            lm_tokens: Label ID for LM.

        zscore(...) is not implementedr!   )r#   r%   r&   r   r   r   r
   3   s   z TransducerDecoderInterface.scoreÚhypsÚ
dec_statesÚuse_lmc                 C   r    )a·  One-step forward hypotheses.

        Args:
            hyps: Hypotheses.
            dec_states: Decoder hidden states.
            cache: Pairs of (dec_out, dec_states) for each label sequence. (key)
            use_lm: Whether to compute label ID sequences for LM.

        Returns:
            dec_out: Decoder output sequences.
            dec_states: Decoder hidden states.
            lm_labels: Label ID sequences for LM.

        z#batch_score(...) is not implementedr!   )r#   r'   r(   r&   r)   r   r   r   Úbatch_scoreL   s   z&TransducerDecoderInterface.batch_scoreÚbatch_statesÚidxc                 C   r    )zîGet specified ID state from decoder hidden states.

        Args:
            batch_states: Decoder hidden states.
            idx: State ID to extract.

        Returns:
            state_idx: Decoder hidden state for given ID.

        z$select_state(...) is not implementedr!   )r#   r+   r,   r   r   r   Úselect_statek   s   z'TransducerDecoderInterface.select_stateÚstatesÚ
new_statesÚl_tokensc                 C   r    )a  Create decoder hidden states.

        Args:
            batch_states: Batch of decoder states
            l_states: List of decoder states
            l_tokens: List of token sequences for input batch

        Returns:
            batch_states: Batch of decoder states

        z+create_batch_states(...) is not implementedr!   )r#   r.   r/   r0   r   r   r   Úcreate_batch_states€   s   z.TransducerDecoderInterface.create_batch_statesN)r   r   r   r   r   r   r   r   r   r   r   r$   r	   r   r   r   r
   r   Úboolr*   r-   r1   r   r   r   r   r      s’    þ ÿ
ýþ
ý ÿüÿ
üþ ÿý
úù ÿüÿ
øÿþû ÿ
ú ÿþÿÿÿû
õ ÿôr   )r   Údataclassesr   Útypingr   r   r   r   r   r   r   r	   r   r   r   r   r   r   Ú<module>   s     