o
    ¡¿¯i  ã                   @   sN   d Z ddlmZmZ ddlmZmZmZmZ ddl	Z	G dd„ de	j
jeƒZdS )z2Abstract decoder definition for Transducer models.é    )ÚABCÚabstractmethod)ÚAnyÚListÚOptionalÚTupleNc                   @   sB  e Zd ZdZedejdejfdd„ƒZedejdee	 de
eeje
ej f  deeje
eeje
ej f  f fd	d
„ƒZedee deeje
eeje
ej f  f fdd„ƒZedejddfdd„ƒZede	de
eeje
ej f  fdd„ƒZe		dde
eeje
ej f  de	de
eeje
ej f  fdd„ƒZdS )Ú
AbsDecoderzAbstract decoder module.ÚlabelsÚreturnc                 C   ó   t ‚)zµEncode source label sequences.

        Args:
            labels: Label ID sequences. (B, L)

        Returns:
            dec_out: Decoder output sequences. (B, T, D_dec)

        ©ÚNotImplementedError)Úselfr	   © r   ú^/home/ubuntu/.local/lib/python3.10/site-packages/espnet2/asr_transducer/decoder/abs_decoder.pyÚforward   s   zAbsDecoder.forwardÚlabelÚlabel_sequenceÚ	dec_statec                 C   r   )aá  One-step forward hypothesis.

        Args:
            label: Previous label. (1, 1)
            label_sequence: Current label sequence.
            dec_state: Previous decoder hidden states.
                         ((N, 1, D_dec), (N, 1, D_dec) or None) or None

        Returns:
            dec_out: Decoder output sequence. (1, D_dec) or (1, D_emb)
            dec_state: Decoder hidden states.
                         ((N, 1, D_dec), (N, 1, D_dec) or None) or None

        r   )r   r   r   r   r   r   r   Úscore   s   zAbsDecoder.scoreÚhypsc                 C   r   )a  One-step forward hypotheses.

        Args:
            hyps: Hypotheses.

        Returns:
            dec_out: Decoder output sequences. (B, D_dec) or (B, D_emb)
            states: Decoder hidden states.
                      ((N, B, D_dec), (N, B, D_dec) or None) or None

        r   )r   r   r   r   r   Úbatch_score0   s   zAbsDecoder.batch_scoreÚdeviceNc                 C   r   )zNSet GPU device to use.

        Args:
            device: Device ID.

        r   )r   r   r   r   r   Ú
set_deviceB   s   zAbsDecoder.set_deviceÚ
batch_sizec                 C   r   )zÕInitialize decoder states.

        Args:
            batch_size: Batch size.

        Returns:
            : Initial decoder hidden states.
                ((N, B, D_dec), (N, B, D_dec) or None) or None

        r   )r   r   r   r   r   Ú
init_stateL   s   zAbsDecoder.init_stater   ÚstatesÚidxc                 C   r   )aj  Get specified ID state from batch of states, if provided.

        Args:
            states: Decoder hidden states.
                      ((N, B, D_dec), (N, B, D_dec) or None) or None
            idx: State ID to extract.

        Returns:
            : Decoder hidden state for given ID.
                ((N, 1, D_dec), (N, 1, D_dec) or None) or None

        r   )r   r   r   r   r   r   Úselect_state\   s   zAbsDecoder.select_state)Nr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚTensorr   r   Úintr   r   r   r   r   r   Útensorr   r   r   r   r   r   r   	   sL    þýü ûþ ý	ÿþýþýür   )r"   Úabcr   r   Útypingr   r   r   r   r#   ÚnnÚModuler   r   r   r   r   Ú<module>   s
    