o
    ¶Öið  ã                   @   sŽ   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„ dej
ƒZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ dejƒZG dd„ dejƒZdS )é    )ÚListÚOptionalÚTupleN)Úcommon_specÚ
model_specÚtransformer_specc                   @   s   e Zd ZdZdd„ ZdS )ÚWav2Vec2Configz%Configuration for the Wav2Vec2 model.c                 C   s   d S ©N© ©Úselfr
   r
   ú\/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/ctranslate2/specs/wav2vec2_spec.pyÚ__init__   s   zWav2Vec2Config.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r
   r
   r
   r   r      s    r   c                       sD   e Zd Z‡ fdd„Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ Z‡  Z	S )ÚWav2Vec2Specc                    s   t ƒ  ¡  t|||ƒ| _d S r	   )Úsuperr   ÚWav2Vec2EncoderSpecÚencoder©r   Úfeat_layersÚ
num_layersÚ	num_heads©Ú	__class__r
   r   r      s   
zWav2Vec2Spec.__init__c                 C   ó   dS )Nr   r
   r   r
   r
   r   Úname   ó   zWav2Vec2Spec.namec                 C   r   )Né   r
   r   r
   r
   r   Úrevision   r   zWav2Vec2Spec.revisionc                 C   s   t ƒ S r	   )r   r   r
   r
   r   Úget_default_config   s   zWav2Vec2Spec.get_default_configc                 C   s   | j jjjd S )Nr   )r   Úlm_headÚweightÚshaper   r
   r
   r   Úget_vocabulary_size   s   z Wav2Vec2Spec.get_vocabulary_size)
r   r   r   r   Úpropertyr   r!   r"   r&   Ú__classcell__r
   r
   r   r   r      s    

r   c                   @   ó   e Zd Zdd„ ZdS )ÚWav2Vec2LayerNormConvLayerc                 C   s   t  ¡ | _t  ¡ | _d S r	   )r   Ú
Conv1DSpecÚconvÚLayerNormSpecÚ
layer_normr   r
   r
   r   r   $   s   
z#Wav2Vec2LayerNormConvLayer.__init__N©r   r   r   r   r
   r
   r
   r   r*   #   ó    r*   c                   @   r)   )ÚWav2Vec2PosEmbedConvLayerc                 C   s   t  ¡ | _d S r	   )r   r+   r,   r   r
   r
   r   r   *   s   z"Wav2Vec2PosEmbedConvLayer.__init__Nr/   r
   r
   r
   r   r1   )   r0   r1   c                   @   r)   )r   c                 C   sz   t  d¡ |¡| _tƒ | _dd„ t|d ƒD ƒ| _t 	¡ | _
t ¡ | _tƒ | _t 	¡ | _dd„ t|ƒD ƒ| _t ¡ | _d S )NÚint16c                 S   s   g | ]}t ƒ ‘qS r
   )r*   )Ú.0Úir
   r
   r   Ú
<listcomp>2   s    z0Wav2Vec2EncoderSpec.__init__.<locals>.<listcomp>é   c                 S   s   g | ]}t  ¡ ‘qS r
   )r   ÚTransformerEncoderLayerSpec)r3   Ú_r
   r
   r   r5   7   s    ÿ)ÚnpÚdtypeÚtyper   r*   Úfeat_layer0ÚrangeÚ
feat_layerr   r-   Úfp_layer_normÚ
LinearSpecÚfp_projectionr1   Úpos_conv_embedr.   Úlayerr#   r   r
   r
   r   r   /   s   


ÿzWav2Vec2EncoderSpec.__init__Nr/   r
   r
   r
   r   r   .   r0   r   )Útypingr   r   r   Únumpyr9   Úctranslate2.specsr   r   r   ÚModelConfigr   ÚLanguageModelSpecr   Ú	LayerSpecr*   r1   r   r
   r
   r
   r   Ú<module>   s    