
    h;                         S SK JrJrJr  S SKrS SKJrJr  S SKJr  S SK	J
r
JrJr  S r " S S\R                  5      rSS	 jrS
 rSS jrS rS rS rS rS rS rS rg)    )ListOptionalTupleN)nnTensor)load_state_dict_from_url)wav2vec2_modelWav2Vec2Modelwavlm_modelc                     [         [        S.nX;  a(  [        S[        UR	                  5       5       SU  35      eX    nU" S0 UD6$ )N)Wav2Vec2WavLMzSupported model types are z	. Found:  )r	   r   
ValueErrortuplekeys)type_params	factoriesfactorys       \/var/www/auris/envauris/lib/python3.13/site-packages/torchaudio/pipelines/_wav2vec2/utils.py
_get_modelr   
   sU    "I 5eINN<L6M5NiX]W^_``GV    c                      ^  \ rS rSrSrS\S\S\S\4U 4S jjrSS\S	\	\   S
\
\\	\   4   4S jjr\R                  R                    SS\S	\	\   S\	\   S
\
\\   \	\   4   4S jj5       rSrU =r$ )_Wav2Vec2Model   zsWrapper class for :py:class:`~torchaudio.models.Wav2Vec2Model`.

This is used for layer normalization at the input
modelnormalize_waveformapply_log_softmaxappend_starc                 R   > [         TU ]  5         Xl        X l        X0l        X@l        g N)super__init__r   r   r   r    )selfr   r   r   r    	__class__s        r   r$   _Wav2Vec2Model.__init__   s%    
"4!2&r   	waveformslengthsreturnc                    U R                   (       a)  [        R                  R                  XR                  5      nU R                  X5      u  p4U R                  (       a(  [        R                  R                  R                  USS9nU R                  (       aR  [        R                  " SUR                  S5      S4UR                  UR                  S9n[        R                  " X54SS9nX44$ )N)dim   )dtypedevice)r   r   
functional
layer_normshaper   r   torchlog_softmaxr    zerossizer/   r0   cat)r%   r(   r)   outputoutput_lengthsstar_dims         r   forward_Wav2Vec2Model.forward"   s    ""00OOLI!%I!?!!XX((44V4DF{{Av{{1~q#9V\VcVcdHYY1r:F%%r   
num_layersc                     U R                   (       a)  [        R                  R                  XR                  5      nU R
                  R                  XU5      $ r"   )r   r   r1   r2   r3   r   extract_features)r%   r(   r)   r>   s       r   r@   _Wav2Vec2Model.extract_features-   s<     ""00OOLIzz**9zJJr   )r    r   r   r   r"   )NN)__name__
__module____qualname____firstlineno____doc__r
   boolr$   r   r   r   r<   r4   jitexportintr   r@   __static_attributes____classcell__)r&   s   @r   r   r      s    
'm ' 'Z^ 'mq '	& 	&(62B 	&eTZ\dek\lTlNm 	& YY %)$(	KK &!K SM	K
 
tF|Xf--	.K Kr   r   c                     [        XX#5      $ )z&Add extra transformations to the model)r   )moduler   r   r    s       r   _extend_modelrO   9   s    &6GUUr   c                     S HQ  nX   n[         R                  " [        UR                  S5      5       Vs/ s H  oDU;  d  M
  X4   PM     sn5      X'   MS     g s  snf )N)z
aux.weightzaux.biasr   )r4   stackranger7   )
state_dictaxeskeymatis        r   _remove_aux_axesrX   >   sO     *o++uSXXa[7I&[7I!VZ]vsv7I&[\
 *&[s   	A
A
c                     U R                  S5      (       d  SU  3n Uc  0 OUn[        U 40 UD6nU(       a  [        X25        U$ )Nhttpsz/https://download.pytorch.org/torchaudio/models/)
startswithr   rX   )url	dl_kwargsremove_axesrS   s       r   _get_state_dictr_   O   sI    >>'""?uE'YI)#;;J1r   c                      g)N)|ETAONIHSRDLUMWCFGYPBVK'XJQZr   r   r   r   _get_en_labelsr}   Y   s    r   c                      g)N)ra   enrW   rstadhulgcmobwfkzpv   ü   ä   öj   ßyxqr   r   r   r   _get_de_labelsr   z   s     r   c                      g)N)ra   r   r   r   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _get_vp_en_labelsr          r   c                      g)N)"ra   r   r   r   r   r   r   rW   r   r   r   r   r   r   r   r   r   r   r   r   r      ór      í   ár   r      ñ   ér      úr   r   r   r   r   r   r   _get_es_labelsr      s    #r   c                      g)N)*ra   r   r   r   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      àr      èr      êr      ôr      çu   œ   û   ù   î   âr      ï   ër      ær   r   r   r   _get_fr_labelsr      s    +r   c                      g)N)$ra   r   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      ò   ìr   r   r   r   r   r   r   r   r   r   r   r   _get_it_labelsr     s    %r   c                      g)N)r   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   r   _get_mms_labelsr   =  r   r   )FFr"   )typingr   r   r   r4   r   r   torchaudio._internalr   torchaudio.modelsr	   r
   r   r   Moduler   rO   rX   r_   r}   r   r   r   r   r   r   r   r   r   <module>r      sl    ( (   9 H H!KRYY !KHV
]"B!H@$N,^&Rr   