
    Iuih                        d dl Zd dlmZmZmZ  G d dej                        Z G d dej                        Z	 G d dej                        Z G d	 d
ej                        Z G d dej                        Z G d dej                        Zy)    N)attention_speccommon_spec
model_specc                       e Zd ZdZd Zy)Wav2Vec2BertConfigz)Configuration for the Wav2Vec2Bert model.c                      y N selfs    U/opt/pipecat/venv/lib/python3.12/site-packages/ctranslate2/specs/wav2vec2bert_spec.py__init__zWav2Vec2BertConfig.__init__	   s        N)__name__
__module____qualname____doc__r   r
   r   r   r   r      s
    3r   r   c                   J     e Zd Z fdZed        Zed        Zd Zd Z xZ	S )Wav2Vec2BertSpecc                     t         |           t        j                  d      j	                  |      | _        t        |||      | _        y )Nint16)superr   npdtypetype
vocab_sizeWav2Vec2BertEncoderSpecencoder)r   num_hidden_layersnum_adapter_layersr   return_hidden	__class__s        r   r   zWav2Vec2BertSpec.__init__   s@     	((7+00<.
r   c                      y)Nr   r
   r   s    r   namezWav2Vec2BertSpec.name   s    !r   c                      y)N   r
   r   s    r   revisionzWav2Vec2BertSpec.revision!   s    r   c                     t               S r	   )r   r   s    r   get_default_configz#Wav2Vec2BertSpec.get_default_config%   s    !##r   c                 H    t        | j                  j                               S r	   )intr   numpyr   s    r   get_vocabulary_sizez$Wav2Vec2BertSpec.get_vocabulary_size(   s    4??((*++r   )
r   r   r   r   propertyr$   r'   r)   r-   __classcell__)r"   s   @r   r   r      s:    
 " "  $,r   r   c                       e Zd ZddZy)Wav2Vec2BertFeedForwardSpecc                     t        j                         | _        t        j                         | _        |rt        j                         | _        y y r	   )r   
LinearSpeclinear_0linear_1linear_0_noact)r   glurms_norms      r   r   z$Wav2Vec2BertFeedForwardSpec.__init__-   s;    #..0#..0"-"8"8":D r   N)FFr   r   r   r   r
   r   r   r1   r1   ,   s    ;r   r1   c                       e Zd Zd Zy)EncoderSpecc                    t        j                         | _        t               | _        t        j                         | _        t        j                  dd      | _        | j                  `	t        j                         | _
        t        j                         | _        | j                  `t        j                         | _        | j                  `t        j                         | _        t        j                         | _        | j                   `t        j                         | _        t               | _        t        j                         | _        y )NTself_attentionrelative_asymmetric_position)r   LayerNormSpecenc_ffn1_layer_normr1   enc_ffn1enc_attn_layer_normr   MultiHeadAttentionSpecenc_attn
layer_normenc_conv_layer_norm
Conv1DSpecenc_conv_pointwise_conv1biasenc_conv_depthwise_convenc_conv_depthwise_layer_normenc_conv_pointwise_conv2enc_ffn2_layer_normenc_ffn2enc_final_layer_normr   s    r   r   zEncoderSpec.__init__5   s    #.#<#<#> 35#.#<#<#> &==)-
 MM$#.#<#<#> (3(>(>(@%)).'2'='='?$((--8-F-F-H*(3(>(>(@%)).#.#<#<#> 35$/$=$=$?!r   Nr9   r
   r   r   r;   r;   4   s    @r   r;   c                       e Zd Zd Zy)AdapterSpecc                 l   t        j                         | _        t        j                         | _        t        j                         | _        t        j                         | _        t        j                  dd      | _	        | j                  `
t        j                         | _        t               | _        y )NTFr=   )r   r@   adpt_residual_layer_normrH   adpt_residual_convadpt_attn_layer_normadpt_attn_convr   rD   adpt_attn_layerrF   adpt_ffn_layer_normr1   adpt_ffnr   s    r   r   zAdapterSpec.__init__L   s    (3(A(A(C%"-"8"8":$/$=$=$?!)446-DD). 
   +#.#<#<#> 35r   Nr9   r
   r   r   rR   rR   K   s    6r   rR   c                       e Zd Zd Zy)r   c                 L   t        j                         | _        t        j                         | _        t        |      D cg c]  }t                c}| _        t        |      D cg c]  }t                c}| _	        |st        j                         | _
        y y c c}w c c}w r	   )r   r@   fp_layer_normr3   fp_projectionranger;   encoder_layersrR   adapter_layerslm_head)r   r   r    r!   _s        r   r   z Wav2Vec2BertEncoderSpec.__init__[   s{    (668(3356;<M6NO{}O6;<N6OP{}P&113DL  PPs    B&B!Nr9   r
   r   r   r   r   Z   s    4r   r   )r,   r   ctranslate2.specsr   r   r   ModelConfigr   LanguageModelSpecr   	LayerSpecr1   r;   rR   r   r
   r   r   <module>rh      s|     E E// ,z33 ,>;*"6"6 ;@*&& @.6*&& 64j22 4r   