
    C1iB	                         S SK JrJrJr  S SKrS SKJrJrJ	r	   " S S\R                  5      r " S S\R                  5      r " S S	\R                  5      rg)
    )ListOptionalTupleN)common_spec
model_spectransformer_specc                      ^  \ rS rSrSr    S	S\\\      S\\\      S\\\      S\\\\\4         4U 4S jjjr	Sr
U =r$ )
WhisperConfig   z$Configuration for the Whisper model.suppress_idssuppress_ids_beginlang_idsalignment_headsc                 &   > [         TU ]  UUUUS9  g )N)r   r   r   r   )super__init__)selfr   r   r   r   	__class__s        X/home/james-whalen/.local/lib/python3.13/site-packages/ctranslate2/specs/whisper_spec.pyr   WhisperConfig.__init__   s#     	%1+	 	 	
     )NNNN)__name__
__module____qualname____firstlineno____doc__r   r   intr   r   __static_attributes____classcell__r   s   @r   r
   r
      sq    . -126(,;?
tCy)
 %T#Y/
 49%	

 "$uS#X"78
 
r   r
   c                   X   ^  \ rS rSrSrU 4S jr\S 5       r\S 5       rS r	S r
SrU =r$ )	WhisperSpec   zDescribes a Whisper model.c                    > [         TU ]  5         [        X5      U l        [        R
                  " UU[        R                  R                  S9U l	        SU R                  l
        g)a  Initializes the model specification.

Args:
  num_encoder_layers: The number of encoder layers.
  num_encoder_heads: The number of encoder attention heads.
  num_decoder_layers: The number of decoder layers.
  num_decoder_heads: The number of decoder attention heads.
)
activationFN)r   r   WhisperEncoderSpecencoderr   TransformerDecoderSpecr   
ActivationGELUdecoderscale_embeddings)r   num_encoder_layersnum_encoder_headsnum_decoder_layersnum_decoder_headsr   s        r   r   WhisperSpec.__init__   sR     	)*<P'>>"--22

 ).%r   c                     g)Nr#   r   r   s    r   nameWhisperSpec.name5   s    r   c                     g)N   r   r4   s    r   revisionWhisperSpec.revision9   s    r   c                     [        5       $ )N)r
   r4   s    r   get_default_configWhisperSpec.get_default_config=   s
    r   c                 \    U R                   R                  R                  R                  S   $ )Nr   )r,   
embeddingsweightshaper4   s    r   get_vocabulary_sizeWhisperSpec.get_vocabulary_size@   s#    ||&&--33A66r   )r,   r(   )r   r   r   r   r   r   propertyr5   r9   r<   rB   r   r    r!   s   @r   r#   r#      sB    $.0    7 7r   r#   c                       \ rS rSrS rSrg)r'   D   c                    [         R                  " S5      R                  U5      U l        [        R
                  " 5       U l        [        R
                  " 5       U l        [        R                  " 5       U l
        [        R                  " 5       U l        [        U5       Vs/ s H  n[        R                  " 5       PM     snU l        g s  snf )Nint16)npdtypetype	num_headsr   
Conv1DSpecconv1conv2r   PositionEncoderSpecposition_encodingsLayerNormSpec
layer_normrangeTransformerEncoderLayerSpeclayer)r   
num_layersrL   _s       r   r   WhisperEncoderSpec.__init__E   s    '*//	: ++-
 ++-
"2"F"F"H%335DI*DU
DUq88:DU

 
s    C)rN   rO   rV   rS   rL   rQ   N)r   r   r   r   r   r   r   r   r   r'   r'   D   s    
r   r'   )typingr   r   r   numpyrI   ctranslate2.specsr   r   r   ModelConfigr
   LanguageModelSpecr#   	LayerSpecr'   r   r   r   <module>r`      sK    ( (  G G
J** 
$'7*.. '7T	
-- 	
r   