o
    i                     @   s,   d dl mZmZ dgZG dd dejZdS )    )nnTensor
Wav2Letterc                	       sF   e Zd ZdZddedededd	f fd
dZdedefddZ  Z	S )r   au  Wav2Letter model architecture from *Wav2Letter: an End-to-End ConvNet-based Speech
    Recognition System* :cite:`collobert2016wav2letter`.

    See Also:
        * `Training example <https://github.com/pytorch/audio/tree/release/0.12/examples/pipeline_wav2letter>`__

    Args:
        num_classes (int, optional): Number of classes to be classified. (Default: ``40``)
        input_type (str, optional): Wav2Letter can use as input: ``waveform``, ``power_spectrum``
         or ``mfcc`` (Default: ``waveform``).
        num_features (int, optional): Number of input features that the network will receive (Default: ``1``).
    (   waveform   num_classes
input_typenum_featuresreturnNc                    s  t    |dkrdn|}ttj|dddddtjddtjddd	d
ddtjddtjddd	d
ddtjddtjddd	d
ddtjddtjddd	d
ddtjddtjddd	d
ddtjddtjddd	d
ddtjddtjddd	d
ddtjddtjdddd
ddtjddtjddd
d
ddtjddtjd|d
d
ddtjdd}|dkrttj|dddddtjdd}t||| _|dv r|| _d S d S )Nr      0         )in_channelsout_channelskernel_sizestridepaddingT)inplace   r      i         r      -   )power_spectrummfcc)super__init__r   
SequentialConv1dReLUacoustic_model)selfr   r	   r
   acoustic_num_featuresr#   waveform_model	__class__ Z/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/torchaudio/models/wav2letter.pyr      sF   













zWav2Letter.__init__xc                 C   s   |  |}tjj|dd}|S )z
        Args:
            x (torch.Tensor): Tensor of dimension (batch_size, num_features, input_length).

        Returns:
            Tensor: Predictor tensor of dimension (batch_size, number_of_classes, input_length).
        r   )dim)r#   r   
functionallog_softmax)r$   r+   r)   r)   r*   forward=   s   
	zWav2Letter.forward)r   r   r   )
__name__
__module____qualname____doc__intstrr   r   r/   __classcell__r)   r)   r'   r*   r      s     'N)torchr   r   __all__Moduler   r)   r)   r)   r*   <module>   s    