
    Iui                        d dl mZmZmZ 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y)    )ListOptionalTupleN)common_spec
model_spectransformer_specc                       e Zd ZdZd Zy)Wav2Vec2Configz%Configuration for the Wav2Vec2 model.c                      y N selfs    Q/opt/pipecat/venv/lib/python3.12/site-packages/ctranslate2/specs/wav2vec2_spec.py__init__zWav2Vec2Config.__init__   s        N)__name__
__module____qualname____doc__r   r   r   r   r
   r
      s
    /r   r
   c                   J     e Zd Z fdZed        Zed        Zd Zd Z xZ	S )Wav2Vec2Specc                     t         |           t        j                  d      j	                  |      | _        t        ||||      | _        y )Nint16)superr   npdtypetype
vocab_sizeWav2Vec2EncoderSpecencoder)r   feat_layers
num_layers	num_headsr   return_hidden	__class__s         r   r   zWav2Vec2Spec.__init__   sC     	((7+00<*	
r   c                      y)Nr   r   r   s    r   namezWav2Vec2Spec.name!   s    r   c                      y)N   r   r   s    r   revisionzWav2Vec2Spec.revision%   s    r   c                     t               S r   )r
   r   s    r   get_default_configzWav2Vec2Spec.get_default_config)   s    r   c                 H    t        | j                  j                               S r   )intr   numpyr   s    r   get_vocabulary_sizez Wav2Vec2Spec.get_vocabulary_size,   s    4??((*++r   )
r   r   r   r   propertyr(   r+   r-   r1   __classcell__)r&   s   @r   r   r      s:    
"     ,r   r   c                       e Zd Zd Zy)Wav2Vec2LayerNormConvLayerc                 h    t        j                         | _        t        j                         | _        y r   )r   
Conv1DSpecconvLayerNormSpec
layer_normr   s    r   r   z#Wav2Vec2LayerNormConvLayer.__init__1   s"    **,	%335r   Nr   r   r   r   r   r   r   r5   r5   0   s    6r   r5   c                       e Zd Zd Zy)Wav2Vec2PosEmbedConvLayerc                 6    t        j                         | _        y r   )r   r7   r8   r   s    r   r   z"Wav2Vec2PosEmbedConvLayer.__init__7   s    **,	r   Nr;   r   r   r   r=   r=   6   s    -r   r=   c                       e Zd Zd Zy)r    c                 &   t        j                  d      j                  |      | _        t	               | _        t        |dz
        D cg c]  }t	                c}| _        t        j                         | _
        t        j                         | _        t               | _        t        j                         | _        t        |      D cg c]  }t!        j"                          c}| _        |st        j                         | _        y y c c}w c c}w )Nr      )r   r   r   r$   r5   feat_layer0range
feat_layerr   r9   fp_layer_norm
LinearSpecfp_projectionr=   pos_conv_embedr:   r   TransformerEncoderLayerSpeclayerlm_head)r   r"   r#   r$   r%   i_s          r   r   zWav2Vec2EncoderSpec.__init__<   s    '*//	:57AF{UVAWXA57X(668(33579%335DI*DU
?@88:

 &113DL  Y

s   	D		DNr;   r   r   r   r    r    ;   s    4r   r    )typingr   r   r   r0   r   ctranslate2.specsr   r   r   ModelConfigr
   LanguageModelSpecr   	LayerSpecr5   r=   r    r   r   r   <module>rS      so    ( (  G GZ++ ,:// ,B6!5!5 6-
 4 4 -
4*.. 4r   