o
    }oik                     @   sV   d dl mZ d dlmZmZ d dlmZmZmZm	Z	m
Z
mZ dgZG dd deZdS )    )CTCLoss)Loss	typecheck)
LabelsTypeLengthsTypeLossType
NeuralTypeSpectrogramTypeVoidTypeCTCLossForSSLc                       sR   e Zd Zedd Zedd Zedd Zd fd	d
	Ze dddZ	  Z
S )r   c              	   C   sH   t dt t dt t dt t tdt ddt tdt dddS )z1Input types definitions for Contrastive.
        )BDT)r   r   r   )r   r   r   T)optional)
spec_masksdecoder_outputstargetsdecoder_lengthstarget_lengths)r   r	   r
   r   tupler   self r   ^/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/asr/losses/ssl_losses/ctc.pyinput_types   s   


zCTCLossForSSL.input_typesc                 C   s   dt t diS )z]Output types definitions for Contrastive.
        loss:
            NeuralType(None)
        loss)elements_type)r   r   r   r   r   r   output_types#   s   zCTCLossForSSL.output_typesc                 C   s   dS )NTr   r   r   r   r   needs_labels+   s   zCTCLossForSSL.needs_labelsT
mean_batchc                    s   t    t|||d| _d S )N)num_classes	reductionzero_infinity)super__init__r   r   )r   r    r"   r!   	__class__r   r   r$   /   s   
zCTCLossForSSL.__init__Nc                 C   s   | j ||||d}|S )N)	log_probsr   input_lengthsr   )r   )r   r   r   r   r   r   r   r   r   r   forward3   s   zCTCLossForSSL.forward)Tr   )NN)__name__
__module____qualname__propertyr   r   r   r$   r   r)   __classcell__r   r   r%   r   r      s    


N)nemo.collections.asr.lossesr   	nemo.corer   r   nemo.core.neural_typesr   r   r   r   r	   r
   __all__r   r   r   r   r   <module>   s
    