o
    #i;                     @   s   d dl mZmZmZ d dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZ dd ZG dd	 d	ejZdddZdd Zd ddZdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )!    )ListOptionalTupleN)nnTensor)load_state_dict_from_url)wav2vec2_modelWav2Vec2Modelwavlm_modelc                 C   sD   t td}| |vrtdt|  d|  ||  }|di |S )N)Wav2Vec2WavLMzSupported model types are z	. Found:  )r   r
   
ValueErrortuplekeys)type_params	factoriesfactoryr   r   a/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/torchaudio/pipelines/_wav2vec2/utils.py
_get_model
   s   r   c                       s   e Zd ZdZdedededef fddZdd	ed
ee de	eee f fddZ
ejj		dd	ed
ee dee de	ee ee f fddZ  ZS )_Wav2Vec2Modelz{Wrapper class for :py:class:`~torchaudio.models.Wav2Vec2Model`.

    This is used for layer normalization at the input
    modelnormalize_waveformapply_log_softmaxappend_starc                    s&   t    || _|| _|| _|| _d S N)super__init__r   r   r   r   )selfr   r   r   r   	__class__r   r   r      s
   

z_Wav2Vec2Model.__init__N	waveformslengthsreturnc                 C   s~   | j rtj||j}| ||\}}| jrtjjj|dd}| j	r;tj
d|ddf|j|jd}tj||fdd}||fS )N)dim   )dtypedevice)r   r   
functional
layer_normshaper   r   torchlog_softmaxr   zerossizer(   r)   cat)r   r"   r#   outputoutput_lengthsstar_dimr   r   r   forward"   s    z_Wav2Vec2Model.forward
num_layersc                 C   s&   | j rtj||j}| j|||S r   )r   r   r*   r+   r,   r   extract_features)r   r"   r#   r6   r   r   r   r7   -   s   z_Wav2Vec2Model.extract_featuresr   )NN)__name__
__module____qualname____doc__r	   boolr   r   r   r   r5   r-   jitexportintr   r7   __classcell__r   r   r    r   r      s     (r   Fc                 C   s   t | |||S )z&Add extra transformations to the model)r   )moduler   r   r   r   r   r   _extend_model9   s   rB   c                    s>   dD ]}| | t  fddtdD | |< qd S )N)z
aux.weightzaux.biasc                    s   g | ]
}| vr| qS r   r   ).0iaxesmatr   r   
<listcomp>L   s    z$_remove_aux_axes.<locals>.<listcomp>r   )r-   stackranger0   )
state_dictrF   keyr   rE   r   _remove_aux_axes>   s   *rM   c                 C   sF   |  ds
d|  } |d u ri n|}t| fi |}|r!t|| |S )Nhttpsz/https://download.pytorch.org/torchaudio/models/)
startswithr   rM   )url	dl_kwargsremove_axesrK   r   r   r   _get_state_dictO   s   


rS   c                   C      dS )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   r   _get_en_labelsY      rq   c                   C   rT   )N)rU   enrD   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   r   _get_de_labelsz   rr   r   c                   C   rT   )N)rU   rs   rw   r   rD   rx   rt   rv   ru   rz   r|   ry   r~   r{   r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _get_vp_en_labels   rr   r   c                   C   rT   )N)"rU   rs   rx   r   rv   rt   ru   rD   r|   ry   r~   rw   r{   r   r   r   r   r   r}   r   rz      ór      í   ár   r      ñ   ér      úr   r   r   r   r   r   r   r   _get_es_labels   rr   r   c                   C   rT   )N)*rU   rs   rv   rt   rD   rw   ru   rx   r   r{   r|   ry   r~   r   r   r   r   r   r   r}   r   rz   r      àr      èr      êr      ôr      çu   œ   û   ù   î   âr      ï   ër      ær   r   r   r   r   _get_fr_labels   rr   r   c                   C   rT   )N)$rU   rs   rD   rx   r   rt   rw   ru   r|   rv   r~   ry   r{   r   r   r}   r   rz   r   r   r   r   r   r   r   r      ò   ìr   r   r   r   r   r   r   r   r   r   r   r   r   _get_it_labels  rr   r   c                   C   rT   )N)rx   rD   rs   rt   r   r{   rw   rv   ru   r   r   r|   ry   r}   rz   r   r   r   r   r~   r   r   r   r   rl   r   r   r   r   r   r   r   _get_mms_labels=  rr   r   )FFr   )typingr   r   r   r-   r   r   torchaudio._internalr   torchaudio.modelsr   r	   r
   r   Moduler   rB   rM   rS   rq   r   r   r   r   r   r   r   r   r   r   <module>   s"    
$

!$ '/)