
    ~Vji
                     t    d dl Z dgZ G d de j        j                  Z G d de j        j                  ZdS )    N
DeepSpeechc                   ^     e Zd ZdZddededededdf
 fd	Zd
ej        dej        fdZ	 xZ
S )FullyConnectedzh
    Args:
        n_feature: Number of input features
        n_hidden: Internal hidden unit size.
       	n_featuren_hiddendropoutrelu_max_clipreturnNc                     t          t          |                                            t          j                            ||d          | _        || _        || _        d S )NT)bias)	superr   __init__torchnnLinearfcr
   r	   )selfr   r   r	   r
   	__class__s        V/root/voice-cloning/.venv/lib/python3.11/site-packages/torchaudio/models/deepspeech.pyr   zFullyConnected.__init__   sM    nd##,,...(//)XD/AA*    xc                 <   |                      |          }t          j        j                            |          }t          j        j                            |d| j                  }| j        r0t          j        j                            || j        | j                  }|S )Nr   )	r   r   r   
functionalreluhardtanhr
   r	   training)r   r   s     r   forwardzFullyConnected.forward   sx    GGAJJH$$Q''H((At/ABB< 	L#++At|T]KKAr   )r   __name__
__module____qualname____doc__intfloatr   r   Tensorr   __classcell__r   s   @r   r   r      s          #  u UX bf       %,        r   r   c                   d     e Zd ZdZ	 	 	 ddedededed	d
f
 fdZdej        d	ej        fdZ	 xZ
S )r   a  DeepSpeech architecture introduced in
    *Deep Speech: Scaling up end-to-end speech recognition* :cite:`hannun2014deep`.

    Args:
        n_feature: Number of input features
        n_hidden: Internal hidden unit size.
        n_class: Number of output classes
       (           r   r   n_classr	   r   Nc                    t          t          |                                            || _        t	          |||          | _        t	          |||          | _        t	          |||          | _        t          j	        
                    ||ddd          | _        t	          |||          | _        t          j	                            ||          | _        d S )N   r   T)
num_layersnonlinearitybidirectional)r   r   r   r   r   fc1fc2fc3r   r   RNNbi_rnnfc4r   out)r   r   r   r-   r	   r   s        r   r   zDeepSpeech.__init__&   s     	j$((*** !)Xw??!(Hg>>!(Hg>>hll8X!RXhllmm!(Hg>>8??8W55r   r   c                 2   |                      |          }|                     |          }|                     |          }|                    d          }|                    dd          }|                     |          \  }}|ddddd| j        f         |dddd| j        df         z   }|                     |          }|                     |          }|	                    ddd          }t          j        j                            |d          }|S )z
        Args:
            x (torch.Tensor): Tensor of dimension (batch, channel, time, feature).
        Returns:
            Tensor: Predictor tensor of dimension (batch, time, class).
        r/   r   N   )dim)r3   r4   r5   squeeze	transposer7   r   r8   r9   permuter   r   r   log_softmax)r   r   _s      r   r   zDeepSpeech.forward6   s     HHQKKHHQKKHHQKKIIaLLKK1{{1~~1aaaOdmO#$qAAAt})>'??HHQKKHHQKKIIaAH++A1+55r   )r*   r+   r,   r   r(   s   @r   r   r      s          6 66 6 	6
 6 
6 6 6 6 6 6  %,        r   )r   __all__r   Moduler   r    r   r   <module>rE      s{    .    UX_   ,8 8 8 8 8 8 8 8 8 8r   