Ë
    óÿæiº
  ã                   óŽ   — d dl Z dgZ G d„ de j                  j                  «      Z G d„ de j                  j                  «      Zy)é    NÚ
DeepSpeechc                   ór   ‡ — 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                  j                  ||d¬«      | _        || _        || _        y )NT)Úbias)	Úsuperr   Ú__init__ÚtorchÚnnÚLinearÚfcr	   r   )Úselfr   r   r   r	   Ú	__class__s        €úq/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torchaudio/models/deepspeech.pyr   zFullyConnected.__init__   s9   ø€ ÜŒn˜dÑ,Ô.Ü—(‘(—/‘/ )¨X¸D�/ÓAˆŒØ*ˆÔØˆ�ó    Úxc                 óz  — | j                  |«      }t        j                  j                  j	                  |«      }t        j                  j                  j                  |d| j                  «      }| j                  r?t        j                  j                  j                  || j                  | j                  «      }|S )Nr   )	r   r   r   Ú
functionalÚreluÚhardtanhr	   r   Útraining)r   r   s     r   ÚforwardzFullyConnected.forward   s   € Ø�G‰G�A‹JˆÜ�H‰H×Ñ×$Ñ$ QÓ'ˆÜ�H‰H×Ñ×(Ñ(¨¨A¨t×/AÑ/AÓBˆØ�<Š<Ü—‘×#Ñ#×+Ñ+¨A¨t¯|©|¸T¿]¹]ÓKˆAØˆr   )é   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚfloatr   r   ÚTensorr   Ú__classcell__©r   s   @r   r   r      sM   ø„ ññ #ð °ð ¸uð ÐUXð Ðbfõ ð˜Ÿ™ð ¨%¯,©,÷ r   r   c                   óx   ‡ — 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                 ód  •— t         t        | �  «        || _        t	        |||«      | _        t	        |||«      | _        t	        |||«      | _        t        j                  j                  ||ddd¬«      | _        t	        |||«      | _        t        j                  j                  ||«      | _        y )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˜$Ñ(Ô*Ø ˆŒÜ! )¨X°wÓ?ˆŒÜ! (¨H°gÓ>ˆŒÜ! (¨H°gÓ>ˆŒÜ—h‘h—l‘l 8¨XÀ!ÐRXÐhl�lÓmˆŒÜ! (¨H°gÓ>ˆŒÜ—8‘8—?‘? 8¨WÓ5ˆ�r   r   c                 óü  — | j                  |«      }| j                  |«      }| j                  |«      }|j                  d«      }|j	                  dd«      }| j                  |«      \  }}|dd…dd…d| j                  …f   |dd…dd…| j                  d…f   z   }| j                  |«      }| j                  |«      }|j                  ddd«      }t        j                  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)r0   r1   r2   ÚsqueezeÚ	transposer4   r   r5   r6   Úpermuter   r   r   Úlog_softmax)r   r   Ú_s      r   r   zDeepSpeech.forward6   sÙ   € ð �H‰H�Q‹Kˆà�H‰H�Q‹Kˆà�H‰H�Q‹Kˆà�I‰I�a‹Lˆà�K‰K˜˜1Óˆà�{‰{˜1‹~‰ˆˆ1àŠa’�O�d—m‘m�OÐ#Ñ$ qªªA¨t¯}©}©Ð)>Ñ'?Ñ?ˆà�H‰H�Q‹Kˆà�H‰H�Q‹Kˆà�I‰I�a˜˜AÓˆä�H‰H×Ñ×+Ñ+¨A°1Ð+Ó5ˆàˆr   )i   é(   g        r   r(   s   @r   r   r      sc   ø„ ñð ØØñ6àð6ð ð6ð ð	6ð
 ð6ð 
õ6ð ˜Ÿ™ð ¨%¯,©,÷ r   )r   Ú__all__r   ÚModuler   r   © r   r   Ú<module>rC      s7   ðÛ àˆ.€ô�U—X‘X—_‘_ô ô,8�—‘—‘õ 8r   