
    ~Vji;                         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 Z G d dej                  Zdd
Zd ZddZd Zd Zd Zd Zd Zd Zd ZdS )    )ListOptionalTupleN)nnTensor)load_state_dict_from_url)wav2vec2_modelWav2Vec2Modelwavlm_modelc                     t           t          d}| |vr4t          dt          |                                           d|            ||          } |di |S )N)Wav2Vec2WavLMzSupported model types are z	. Found:  )r	   r   
ValueErrortuplekeys)type_params	factoriesfactorys       ^/root/voice-cloning/.venv/lib/python3.11/site-packages/torchaudio/pipelines/_wav2vec2/utils.py
_get_modelr   
   ss    " I I_eINN<L<L6M6M__X]__```G7V    c                        e Zd ZdZdedededef fdZdded	ee         d
e	eee         f         fdZ
ej        j        	 	 dded	ee         dee         d
e	ee         ee         f         fd            Z x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                     t                                                       || _        || _        || _        || _        d S N)super__init__r   r   r   r   )selfr   r   r   r   	__class__s        r   r#   z_Wav2Vec2Model.__init__   s>    
"4!2&r   N	waveformslengthsreturnc                    | j         r%t          j                            ||j                  }|                     ||          \  }}| j        r&t          j        j                            |d          }| j	        rOt          j
        d|                    d          df|j        |j                  }t          j        ||f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_dims         r   forwardz_Wav2Vec2Model.forward"   s    " 	M00IOLLI!%Iw!?!?! 	EX(44V4DDF 	;{Av{{1~~q#9V\VcdddHY1r:::F~%%r   
num_layersc                     | j         r%t          j                            ||j                  }| j                            |||          S r!   )r   r   r/   r0   r1   r   extract_features)r$   r&   r'   r;   s       r   r=   z_Wav2Vec2Model.extract_features-   sC     " 	M00IOLLIz**9gzJJJr   r!   )NN)__name__
__module____qualname____doc__r
   boolr#   r   r   r   r:   r2   jitexportintr   r=   __classcell__)r%   s   @r   r   r      s,        
'm ' 'Z^ 'mq ' ' ' ' ' '	& 	& 	&(62B 	&eTZ\dek\lTlNm 	& 	& 	& 	& Y %)$(	K KK &!K SM	K
 
tF|Xf--	.K K K K K K K Kr   r   Fc                 &    t          | |||          S )z&Add extra transformations to the model)r   )moduler   r   r   s       r   _extend_modelrI   9   s    &"46GUUUr   c           	          dD ]N}| |         t          j        fdt                              d                    D                       | |<   Od S )N)z
aux.weightzaux.biasc                 (    g | ]}|v|         S r   r   ).0iaxesmats     r   
<listcomp>z$_remove_aux_axes.<locals>.<listcomp>L   s#    &[&[&[!QVZ]]s1v]]]r   r   )r2   stackranger5   )
state_dictrN   keyrO   s    ` @r   _remove_aux_axesrU   >   sk     * ] ]o+&[&[&[&[&[uSXXa[[7I7I&[&[&[\\
3] ]r   c                     |                      d          sd|  } |i n|}t          | fi |}|rt          ||           |S )Nhttpsz/https://download.pytorch.org/torchaudio/models/)
startswithr   rU   )url	dl_kwargsremove_axesrS   s       r   _get_state_dictr\   O   se    >>'"" FEEE'YI)#;;;;J 2[111r   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   _get_en_labelsrz   Y   s     r   c                      dS )N)r^   enrM   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                      dS )N)r^   r|   r   r   rM   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                      dS )N)"r^   r|   r   r   r   r}   r~   rM   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                      dS )N)*r^   r|   r   r}   rM   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                      dS )N)$r^   r|   rM   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                      dS )N)r   rM   r|   r}   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru   r   r   r   r   r   r   _get_mms_labelsr   =  r   r   )FFr!   )typingr   r   r   r2   r   r   torchaudio._internalr   torchaudio.modelsr	   r
   r   r   Moduler   rI   rU   r\   rz   r   r   r   r   r   r   r   r   r   <module>r      so   ( ( ( ( ( ( ( ( ( (          9 9 9 9 9 9 H H H H H H H H H H  !K !K !K !K !KRY !K !K !KHV V V V
] ] ]"     B! ! !H  @$ $ $N, , ,^& & &R    r   